CCR: The Service



next up previous
Next: Delineating the transaction Up: CommitmentConcurrency, and Previous: CCR: Concepts and

CCR: The Service

CCR provides services

Figure gif shows normal use of the services provided by CCR, labeled with client or server to indicate which side of the communication connection uses that service. The point of the tree-shaped sequence of actions is to show that from the time C-BEGIN is issued until the interaction ends, only a limited number of results are possible. In particular, either the atomic action is carried out or no effect of the action occurs. The loop back to sending C-COMMIT is needed to account for the possibility of a failure at the server after it issues C-READY. Keep in mind that more than one server might be involved in the transaction. If the client requires that all the servers participate in the transaction, then receiving one C-REFUSE will cause the server to issue C-ROLLBACK to all the servers that sent C-READY. The server that sent C-REFUSE does not need C-ROLLBACK, since it has already declined to participate. C-REFUSE is needed to tell other servers to cancel the transaction.

  

CCR: The Service



next up previous
Next: Delineating the transaction Up: CommitmentConcurrency, and Previous: CCR: Concepts and

CCR: The Service

CCR provides services

Figure gif shows normal use of the services provided by CCR, labeled with client or server to indicate which side of the communication connection uses that service. The point of the tree-shaped sequence of actions is to show that from the time C-BEGIN is issued until the interaction ends, only a limited number of results are possible. In particular, either the atomic action is carried out or no effect of the action occurs. The loop back to sending C-COMMIT is needed to account for the possibility of a failure at the server after it issues C-READY. Keep in mind that more than one server might be involved in the transaction. If the client requires that all the servers participate in the transaction, then receiving one C-REFUSE will cause the server to issue C-ROLLBACK to all the servers that sent C-READY. The server that sent C-REFUSE does not need C-ROLLBACK, since it has already declined to participate. C-REFUSE is needed to tell other servers to cancel the transaction.

  

                                                            Used by

                      C-READY                               Client
                         |
                         |
                         |
                         V
                    C-PREPARE                               Client
                        /\
                      /    \
                    /        \
                  /            \
           C-READY              C-REFUSE                   Server
           (from all)          (from at least one)
              |                     |   \
              |   _                 |     \
              |  | \                |       \
              V  V  \               V         \
           C-COMMIT   \         C-ROLLBACK      \           Client
              /\        \     (to servers that    \
            /    \        \    sent C-READY)       |
          /        \        \       |              |
        /            \        \     |              |
 C-COMMIT.conf     no          ^    |              |
  arrives        C-COMMIT.conf |    v              v
     |             arrives     |    transaction not performed
     |               |         |
     |               |------->>|
     V
 transaction complete


Figure: Sequence of CCR service invocations in an atomic action

An example of a transaction involving more than one server process appears in Figure gif. Bank C, the client, initiates a transfer from an account in Bank A to Bank B. Clearly, either both banks A and B must complete their portions of the transaction, or neither must do its part if the accounts are to remain in a consistent and correct state. The figure shows a successful transfer of funds. Figure gif shows a failure to complete the transaction, but a final correct balance (excluding the desired transfer) remaining in both accounts. Since Bank A has no direct knowledge of Bank B's involvement in the transaction, Bank C must issue C-ROLLBACK to tell Band A to cancel the transaction.

  
Figure: Multiple servers participate in a transaction

  
Figure: Cancelling a failed transaction





next up previous
Next: Delineating the transaction Up: CommitmentConcurrency, and Previous: CCR: Concepts and



boots cassel
Wed Feb 7 10:22:57 EST 1996

Figure: Sequence of CCR service invocations in an atomic action

An example of a transaction involving more than one server process appears in Figure gif. Bank C, the client, initiates a transfer from an account in Bank A to Bank B. Clearly, either both banks A and B must complete their portions of the transaction, or neither must do its part if the accounts are to remain in a consistent and correct state. The figure shows a successful transfer of funds. Figure gif shows a failure to complete the transaction, but a final correct balance (excluding the desired transfer) remaining in both accounts. Since Bank A has no direct knowledge of Bank B's involvement in the transaction, Bank C must issue C-ROLLBACK to tell Band A to cancel the transaction.

  
Figure: Multiple servers participate in a transaction

  
Figure: Cancelling a failed transaction





next up previous
Next: Delineating the transaction Up: CommitmentConcurrency, and Previous: CCR: Concepts and



boots cassel
Wed Feb 7 10:22:57 EST 1996