I'm running a python script as a GP service, this script works great when run in the IDE or when run from a toolbox in ArcMap, but I cannot run the tool once it's published in a geoprocessing service. The error I receive is when it hits a line that uses the dissolve tool. It says "Error 000308: Invalid field type". All the fields being used to dissolve are integers, strings, float, and GUID data types. It runs successfully when it's not a geoprocessing service, so I know the fields are of a valid data type. I think it has something to do with my use of in_memory workspaces, but from what I have read, using in_memory workspace is the best practice when creating a lot of intermediate data in a GP service. I don't think the program is running out of memory when dissolving either because it's only dissolving a max of 200 features (and more often than not, it's really dissolving 50 or less).
In the non-GP service code:
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="comment token">#Intersect buffer with selected patches to evaluate appropriate access to protective cover</SPAN>
intersect_result <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Intersect_analysis<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">[</SPAN>aa2PCPolys<SPAN class="punctuation token">,</SPAN> <SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN>pc_buffer<SPAN class="punctuation token">,</SPAN> <SPAN class="number token">2</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'in_memory/pc_intersect'</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">except</SPAN><SPAN class="punctuation token">:</SPAN>
intsctError <SPAN class="operator token">=</SPAN> traceback<SPAN class="punctuation token">.</SPAN>format_exc<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddError<SPAN class="punctuation token">(</SPAN>intsctError<SPAN class="punctuation token">)</SPAN>
sys<SPAN class="punctuation token">.</SPAN>exit<SPAN class="punctuation token">(</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Define fields by which to aggregate features in the intersect_result FC</SPAN>
dissolveFields <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">'StateID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'Point'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'PatchNum'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'IsDeveloped'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'CropTypeID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'CropResidue'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'CnpyOver12'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'CnpyDecid'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'CnpyConif'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ShrubCover'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ShbHiStemsDens'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'GrassCover'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ForbCover'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'FrbAsProtect'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ForbSpecies'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'BareGround'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'HerbHeight'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'IsQuailHab'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ObsvDate'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'FirstName'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'LastName'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'Overstory'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'Understory'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'OfficialQH'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'StatePoint'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'MonitoringPointID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'Orig_OID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'Imputation'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'WhereImpute'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'QHonImputedVals'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'ObsvType'</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="comment token">#Aggregate features (ERRORS OUT ON THIS LINE)</SPAN>
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
dislvIntersect <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Dissolve_management<SPAN class="punctuation token">(</SPAN>intersect_result<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'in_memory/pc_dislvIntersect'</SPAN><SPAN class="punctuation token">,</SPAN> dissolveFields<SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
Once it has been published as GP service it replaces the in_memory stuff with ESRI variables:
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="comment token">#Intersect buffer with selected patches to evaluate appropriate access to protective cover</SPAN>
intersect_result <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Intersect_analysis<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">[</SPAN>aa2PCPolys<SPAN class="punctuation token">,</SPAN> <SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN>pc_buffer<SPAN class="punctuation token">,</SPAN> <SPAN class="number token">2</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> g_ESRI_variable_28<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">except</SPAN><SPAN class="punctuation token">:</SPAN>
intsctError <SPAN class="operator token">=</SPAN> traceback<SPAN class="punctuation token">.</SPAN>format_exc<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddError<SPAN class="punctuation token">(</SPAN>intsctError<SPAN class="punctuation token">)</SPAN>
sys<SPAN class="punctuation token">.</SPAN>exit<SPAN class="punctuation token">(</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Define fields by which to aggregate features in the intersect_result FC</SPAN>
dissolveFields <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">'StateID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'Point'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'PatchNum'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'IsDeveloped'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'CropTypeID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'CropResidue'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'CnpyOver12'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'CnpyDecid'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'CnpyConif'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ShrubCover'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ShbHiStemsDens'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'GrassCover'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ForbCover'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'FrbAsProtect'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ForbSpecies'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'BareGround'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'HerbHeight'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'IsQuailHab'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ObsvDate'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'FirstName'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'LastName'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'Overstory'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'Understory'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'OfficialQH'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'StatePoint'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'MonitoringPointID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'Orig_OID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'Imputation'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'WhereImpute'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'QHonImputedVals'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'ObsvType'</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="comment token">#Aggregate features (ERRORS OUT ON THIS LINE)</SPAN>
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
dislvIntersect <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Dissolve_management<SPAN class="punctuation token">(</SPAN>intersect_result<SPAN class="punctuation token">,</SPAN> g_ESRI_variable_29<SPAN class="punctuation token">,</SPAN> dissolveFields<SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
This part of the python script is recursive, in that it will do this process many times on different selected features. I noticed from the error messages it went through it one full time, and then errored out on the second pass (see the first two messages in the picture, that message prints every time it starts a new pass). Does it have to do with overwriting issues maybe? I have arcpy.env.overwriteOutput = True set, but I don't know how that effects in_memory datasets.
