We are using IS 4.6 some times our flows goes into infinite loops, if you go to the service usage it shows the service is running. I wanted to kill this process without restarting my server. I wonder anybody has developed any service or some kind of admin function to kill the running flow service. We are really tired of restarting the server every time this happens.
There’s no ‘safe’ way to kill a thread in Java; you’re not guaranteed that all monitors are released properly. If your application is sharing some resource that has synchronized access, you can introduce deadlocks such that no further access is allowed (requiring a reboot of the server).
What exactly is your flow doing?
Your best bet is to take a look at your flow and figure out why it is going into an infinite loop. Alternatively you could add in additional processing logic that either checks some state or implements some type of maximum retry logic and aborts when the specific condition is met.
The only best way I could suggest without restarting the server is: Kill the Developer session which is going into infinite loops in the Admin Page.
I do that many times, if accidentally I run into infinite loops.
reloading the package sometimes helps… I’ve found killing the session doesn’t always work. (and even reloading the package sometimes doesn’t work).
I’m with Eduardo on the danger of any attempt to kill a java service. You lose all assurance of anything, and there really is no safe way to kill a thread.
Best way would be to put a call inside your loop to check a value in another service which you could simply flip to a “false” which could then exit the flow after doing whatever cleanup is necessary. This fits with the recommended way to do this in java:
while (stillContinue)
{
//do the stuff
}
so if stillContinue is set to false it will not loop anymore.