[GIS] How to identify and gracefully kill hung Gp service processes

arcgis-servergeoprocessing

I've published a gp tool as an asynchronous non-pooled gp service.

When the gp tool hangs I would like to allow the user to kill it, without impacting other services. If I put a webservice on the SOM that kills a process based on an ID, will it harm other services?

Related questions:

Is there a way for a webservice running on the SOM machine to kill a process on a (different) SOC machine?

The first thing the gp tool does is write out the hostID and processID to a log file, but I'd like a system to work for any gp service, not just ones that log this info.

Is there a request I can make to the gp server that returns a hostID & processID for an arbitrary jobID?

Update: I've decided to first implement a method to Cancel GP jobs, and then only pursue the process killing strategy if canceling proves ineffective. Since the REST API doesn't currently have a Cancel method, I will be doing this via SOAP. I've also been shown how to log the process IDs, so that way I won't need to rely on my own logging.

Best Answer

I thought I would give this a try and what I found is that you may need to build something

http://help.arcgis.com/en/sdk/10.0/serveradf_net/conceptualhelp/index.html#/GeoprocessingResourceManager_control/000200000005000000/

If you use the Geoprocessing Resource Manager, in conjuction with some custom code to handle each incident of a particular Geoprocessing Service than you should be able to arrange an administrative tool to drop the hung GP Services individually based on the users. This is not easy and I have not got much further than research at this point.

Please if anyone has done this or has another answer get back to Kirk as it seems like something worthwhile and stopping and starting the service is not always available.

Have Fun, CDB

Related Question