You can use forceModificationMode=REPLACE to normalize all requests to REPLACE requests only. This is valuable for connectors and endpoints that can accept only REPLACE requests, including the SAP connector. For more information about this setting, see Updating an Object.
CA IdentityMinder splits DELTA requests mentioning multiple objects into multiple separate requests, to allow for different workflows for each change. However, this splitting can cause race conditions in which DELTA requests can end up overwriting each other.
To avoid this problem, when CA IAM CS receives multiple requests targeting the same object, it locks those requests to permit only one request being processed at a time. Each lock is keyed to the connector-speak Distinguished Name of the target object. CA IAM CS maintains these locks in a cache.
However, this locking works only for connectors within a single CA IAM CS instance. If you have multiple CA IAM CS instances running, and connectors from each instance are targeting the same endpoint, you might see problems due to race conditions, unless the instances of CA IAM CS are set up to be peers in a high-availability deployment.
Note: CA IdentityMinder uses DELTA and splits, for communications between its internal components. The forceModificationMode setting affects requests only when they are sent from the connector to the endpoint.
Example: Add roles to an SAP account
The SAP connector can accept REPLACE requests only, so this connector uses forceModificationMode=REPLACE.
This ensures that each request is fully processed before the next is sent. If these fifteen requests were sent at the same time without locking, some would probably overwrite others, leading to some roles not being added to the account.
If you are writing or modifying your own connectors and you need to avoid race conditions, you can use the same cache of locks.
To use it, call the MetaConnector.getModifyMonitorCache() method. The key is the connector-speak DN of the target object. You can then use normal Java synchronize calls on the object returned from the cache to lock.
Copyright © 2013 CA.
All rights reserved.
|
|