Commitment, Concurrency and Recovery - CCR

This is the part of the ISO Common Applications Service Elements which provides some of the functionality outlined above. [Ref ISO 8649 and ISO 8650 part 3]. In the ISO standardization work on Job Transfer and Manipulation protocols, a requirement for application support for synchronization, consistency and commitment was realized. Since the OSI model (see chapter 6) is designed to avoid duplicate functionality, and the Standards bodies decided that these features should be available to other applications too, they form a separate standard. CCR is now available for the ISO File Transfer, Access and Management (FTAM) protocol as well. CCR is designed to handle end system crashes during critical operations, and loss of network connectivity between one update and another. CCR allows the applications programmer to build a tree of processes/activities. The top of the tree is some master, and lower down are sub-ordinates. This is called the ;SPM_quot;Atomic Action Tree;SPM_quot;. Just as we have described above, the protocol CCR defines follows the normal rules:
  1. A superior issues a C-Begin to start an Atomic action.
  2. Actual data starts to be exchanged, and (locally specific) concurrency control mechanisms are used.
  3. The superior issues a C-Prepare primitive indicating that it has finished
  4. the set of operations that make up this Action.
  5. The sub-ordinate issues a C-Ready indicating that it can now ensure either commitment to this action, or rollback. The superior issues a C-Commit or a C-Rollback
  6. The sub-ordinate acknowledges the C-Commit or C-Rollback having released all concurrency controls.
Note that one a superior has issued a C-Begin, it must eventually complete or rollback. This ensures that the sub-ordinate always (eventually) frees the concurrency controls (and therefore allows other clients/superiors to access the resource). CCR contains the amusing concept of ;SPM_quot;Heuristic Commitment and Rollback;SPM_quot;. This facility allows sub-ordinates to decide to commit or rollback after losing contact with a superior (say after sending it a C-Ready), based on <#686#> guesswork<#686#>! CCR contains part of the ideas of timing out atomic actions (and locks/deadlock arising from them) by defining a ;SPM_quot;period of use;SPM_quot; for any data item. CCR also includes the notion of nested atomic actions. One action can be ;SPM_quot;wrapped;SPM_quot; around others (just as a single simple action is made out of some number of non-atomic operations).