|
|
There are two types of synchronization: ``atomic'', where each operation must succeed or an error is returned, and ``non-atomic'', where the individual object instances in a BMIP request are processed one at a time without regard to the success or failure the other object instances in the request. The default is non-atomic.
If the OSA class wishes to perform a BMIP request atomically, the request processor needs to break the request down into individual objects and then perform the specified operation on each object specified by the request. If all of the objects are processed without an error, then the OSA class sends off BMIP responses associated with each object. If an error occurs with any object, then the OSA class undertakes steps to undo the work on objects already processed, and then send one response back indicating the error which occurred.
If the OSA class wishes to use non-atomic synchronization, then each object specified by the BMIP request should have a BMIP response returned to the Server API, regardless of that object's operation's error status. This synchronization is far easier to perform as the request processor need not keep an array of BMIP responses around waiting for the success of all the operations, nor does it need to undo all completed operations upon encountering any failure.