1
play

1 Figure 14.5 The two-phase commit protocol Phase 1 (voting - PDF document

Figure 14.3 A distributed banking transaction coordinator join openTransaction participant closeTransaction A a.withdraw(4); . join BranchX T participant b.withdraw(T, 3); Client B b.withdraw(3); T = openTransaction BranchY join


  1. Figure 14.3 A distributed banking transaction coordinator join openTransaction participant closeTransaction A a.withdraw(4); . join BranchX T participant b.withdraw(T, 3); Client B b.withdraw(3); T = openTransaction BranchY join a.withdraw(4); c.deposit(4); participant b.withdraw(3); c.deposit(4); d.deposit(3); C closeTransaction D d.deposit(3); Note: the coordinator is in one of the servers, e.g. BranchX BranchZ 1 Figure 14.4 Operations for two-phase commit protocol canCommit?(trans)-> Yes / No Call from coordinator to participant to ask whether it can commit a transaction. Participant replies with its vote. doCommit(trans) Call from coordinator to participant to tell participant to commit its part of a transaction. doAbort(trans) Call from coordinator to participant to tell participant to abort its part of a transaction. haveCommitted(trans, participant) Call from participant to coordinator to confirm that it has committed the transaction. getDecision(trans) -> Yes / No Call from participant to coordinator to ask for the decision on a transaction after it has voted Yes but has still had no reply after some delay. Used to recover from server crash or delayed messages. 2 1

  2. Figure 14.5 The two-phase commit protocol Phase 1 (voting phase): 1. The coordinator sends a canCommit ? request to each of the participants in the transaction. 2. When a participant receives a canCommit ? request it replies with its vote ( Yes or No ) to the coordinator. Before voting Yes , it prepares to commit by saving objects in permanent storage. If the vote is No the participant aborts immediately. Phase 2 (completion according to outcome of vote): 3. The coordinator collects the votes (including its own). (a) If there are no failures and all the votes are Yes the coordinator decides to commit the transaction and sends a doCommit request to each of the participants. (b) Otherwise the coordinator decides to abort the transaction and sends doAbort requests to all participants that voted Yes . 4. Participants that voted Yes are waiting for a doCommit or doAbort request from the coordinator. When a participant receives one of these messages it acts accordingly and in the case of commit, makes a haveCommitted call as confirmation to the coordinator. 3 Figure 14.6 Communication in two-phase commit protocol Coordinator Participant step status step status canCommit? prepared to commit 1 Yes (waiting for votes) 2 prepared to commit doCommit (uncertain) 3 committed haveCommitted 4 committed done Figure 14.7 Operations in coordinator for nested transactions openSubTransaction(trans) -> subTrans Opens a new subtransaction whose parent is trans and returns a unique subtransaction identifier. getStatus(trans)-> committed, aborted, provisional Asks the coordinator to report on the status of the transaction trans . Returns values representing one of the following: committed , aborted , 4 provisional . 2

  3. Figure 14.8 Transaction T decides whether to commit T abort (at M) 11 T provisional commit (at X) 1 T T provisional commit (at N) 12 T provisional commit (at N) 21 aborted (at Y) T 2 T provisional commit (at P) 22 Figure 14.9 Information held by coordinators of nested transactions Coordinator of Child Participant Provisional Abort list transaction transactions commit list T 1 , T 2 T 1 , T 12 T 11 , T 2 T yes T 1 T 11 , T 12 yes T 1 , T 12 T 11 T 2 T 21 , T 22 T 2 no (aborted) T 11 no (aborted) T 11 T 21 T 12 , T 21 T 12 but not T 21 , T 12 5 T 22 no (parent aborted) T 22 Figure 14.10 canCommit ? for hierarchic two-phase commit protocol canCommit?(trans, subTrans) -> Yes / No Call a coordinator to ask coordinator of child subtransaction whether it can commit a subtransaction subTrans . The first argument trans is the transaction identifier of top-level transaction. Participant replies with its vote Yes / No . Figure 14.11 canCommit ? for flat two-phase commit protoco canCommit?(trans, abortList) -> Yes / No Call from coordinator to participant to ask whether it can commit a transaction. Participant replies with its vote Yes / No . 6 3

  4. Distributed Deadlock Transaction T Transaction U lock A Write(A) at X at Y lock B Write(B) Read(B) at Y waits for U ’ s lock on B Read(A) at X waits for T ’ s lock on A 7 Figure 14.12 Interleavings of transactions U , V and W U V W lock D d.deposit(10) at Z lock B b.deposit(10) at Y lock A a.deposit(20) at X lock C c.deposit(30) at Z b.withdraw(30) wait at Y c.withdraw(20) wait at Z a.withdraw(20) wait at X 8 4

  5. Figure 14.14 Distributed deadlock (a) (b) W W Waits for Held by D C A X Z V Held Held by by Waits for U V U B Waits for Held by Y 9 Figure 14.15 Probes transmitted to detect deadlock W W → U → V → W Held by Waits for Deadlock C detected A Z X Initiation W → U → V Waits W → U for V U Held by Waits for B Y 10 5

  6. Figure 14.16 Two probes initiated (c) detection initiated at object (a) initial situation (b) detection initiated at object requested by W requested by T T Waits for T Waits for T T → U W → V → T W → V → T → U V U V U V T → U → W → V T → U → W U Waits W → V W for Waits W W for 11 Figure 14.18 Types of entry in a recovery file Type of entry Description of contents of entry Object A value of an object. Transaction status Transaction identifier, transaction status ( prepared , committed aborted ) and other status values used for the two-phase commit protocol. Intentions list Transaction identifier and a sequence of intentions, each of which consists of <identifier of object>, <position in recovery file and value of object>. Figure 14.19 Log for banking service P 0 P 1 P 2 P 3 P 4 P 5 P 6 P 7 Object: C Object: B Trans: U Object: A Object: B Object: C Object: A Object: B Trans: T Trans: T prepared 100 200 300 80 220 preparedcommitted 278 242 < A , P 1 > < C , P 5 > < B , P 2 > < B , P 6 > P 0 P 3 P 4 Checkpoint End of log 12 6

Recommend


More recommend