Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I've created a small python synchronous geoprocessing script (ctagc) that runs on AGS. The script accepts a table (GPRecordSet) as an input parameter. The script then calls arcpy.GeocodeAddresses_geocoding() to submit the table to a specified geocoding service running on the same server. The script then generates an output feature class "in_memory" to send back to the caller.

When my silverlight client submits multiple http requests (4 threads of 100 records) of JSON batches of data through the generated REST interface on the server, the script INconsistently fails on the same data being submitted. On different runs of the test data, different batches fail each time (and a different number fail). This happens with different geocoding services on the server.

I think that there may be problems with the geocoding service accessing the single locator file. I've tried changing pooling and isolation parameters. Still crashes. Does anyone know have suggestions for handling multiple requests hitting a geocoding service? I thought ArcGIS server could handle thousands of requests, blah, blah per hour?

System Info: Running AGS 10.03 and have installed geocoding patch Gis10sp3-SGIS-GGM-Patch.msp from 1/3/2012 on virtual Win 2008 R2. Pooling services, low isolation.

Error message returned to client:

example 1

Error Executing Task. Error executing tool.: \u003cclass 'arcgisscripting.ExecuteError'\u003e: ERROR 000464: Cannot get exclusive schema lock.  Either being edited or in use by another application.\nFailed to execute (GeocodeAddresses).\n\nFailed to execute (ctagc).

example error 2

Error Executing Task. Error executing tool.: \u003cclass 'arcgisscripting.ExecuteError'\u003e: ERROR 000010: Geocode addresses failed.\nFailed to execute (GeocodeAddresses).\n\nFailed to execute (ctagc).


Server Log File Messages:
<Msg time='2012-02-09T12:12:44' type='INFO3' code='20022' target='cta/ctagc.GPServerSync' methodName='GPServerSync.Execute.ctagc' machine='VAGS10B' process='20336' thread='3152' elapsed='3.02319'>Execute job j769cfe004d6c4152a5357f7a9c318f7b</Msg>
<Msg time='2012-02-09T12:12:44' type='ERROR' code='20010' target='cta/ctagc.GPServerSync' methodName='GPServerSync.CheckMessages' machine='VAGS10B' process='20336' thread='3152'>Executing (ctagc): ctagc &quot;Record Set&quot; 0 0 2 12 Start Time: Thu Feb 09 12:12:41 2012 Running script ctagc... \\VAGS10B\ArcGIS\cta\ctagc_ags_connection\cta\comp_parcels_streets.GeocodeServer &lt;class &apos;arcgisscripting.ExecuteError&apos;&gt;: ERROR 000010: Geocode addresses failed. Failed to execute (GeocodeAddresses).  Failed to execute (ctagc). Failed at Thu Feb 09 12:12:44 2012 (Elapsed Time: 3.00 seconds)</Msg>
<Msg time='2012-02-09T12:12:44' type='ERROR' code='20010' target='cta/ctagc.GPServerSync' methodName='GPServerSync.CheckMessages' machine='VAGS10B' process='20336' thread='3152'>Error executing tool.: &lt;class &apos;arcgisscripting.ExecuteError&apos;&gt;: ERROR 000010: Geocode addresses failed. Failed to execute (GeocodeAddresses).  Failed to execute (ctagc).</Msg>
<Msg time='2012-02-09T12:12:44' type='INFO3' code='20024' target='cta/ctagc.GPServerSync' methodName='GPServerSync.Save.ctagc' machine='VAGS10B' process='20336' thread='3152' elapsed='0.00056'>Save job j769cfe004d6c4152a5357f7a9c318f7b message type SOAP message size 534</Msg>
share|improve this question
1  
What does your performance signature look like on the server? e.g . have you redlined it? Can you CONsistently avoid failure with 2 threadsworth of requests? one solution could be to make a copy of the locator and publish another service. –  valveLondon Feb 16 '12 at 5:15
    
It is taxing the virtual server that I'm using, but it even fails (again inconsistently) when I serialize requests. –  awesomo Feb 28 '12 at 17:17
add comment

1 Answer

up vote 1 down vote accepted

After talking with Esri support, I think the problem is in calling the AGS geocoding services from an AGS geoprocess. I cannot confirm the following, but I believe that the calling the geocoding service is stepping on itself. It's not able to share resources --- or cleanly close resources to be ready for another request. My solution that now works fine is to simply call the locators directly from the geoprocess with the same method arcpy.GeocodeAddresses_geocoding(). No errors at all now -- thanks for your comment valveLondon

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.