| Bug ID Number |
BUG-000148951 |
| Submitted | May 3, 2022 |
| Last Modified | June 17, 2025 |
| Applies to | ArcGIS GIS Server |
| Version found | 10.9 |
| Operating System | Windows OS |
| Operating System Version | 10.0 64 Bit |
| Version Fixed | 3.1 |
| Status | Fixed
The bug has been fixed. See the Version Fixed and Additional Information, if applicable, for more information.
|
Additional Information
The way the attribute rule is authored is the main cause of the performance.
The attribute rule loops through the entire `Property` layer looking for a property matching the edited feature name. What exacerbates the problem is the fact that the attribute rule is permitted to be executed in the client (Exclude from App Evaluation is unchecked).
ArcGIS Pro first executes the rule locally before sending the applyEdits function, which means ArcGIS Pro needs to fetch all properties from the service, causing paging query requests defined by the maximum record size. The time to pull the class to the client is what takes most of the execution. Later, the applyEdits function is sent to the server to only repeat the same process to execute the attribute rule on the server side. The queries are faster due to querying the database directly. This can be avoided by rewriting the rule to push the where clause to the database, which should push the time to a sub-second.
This attribute rule did, however, expose an optimization in Arcade when some of the fields are asked to be retrieved. The optimization fix was pushed to 11.1/3.1 but cannot be patched to older releases.
Workaround
Rewrite the attribute rule as follows: if ($originalfeature.Name != $feature.Name) { var newName = $feature.Name; var oid = $feature.OBJECTID; var Properties = FeatureSetByName($datastore, 'Branch.GIS.Property', ['OBJECTID'], false); var duplicates = Filter(Properties, 'RetiredByRecord IS NULL AND Name=@newName AND OBJECTID < > @oid') return false; } return true;
Steps to Reproduce