Download presentation
Presentation is loading. Please wait.
Published byJerome Ramsey Modified over 9 years ago
1
Chap 16. Transactions
2
Transactions Transaction: sequence of operations such that the entire sequence appears as one indivisible operation Indivisibility is maintained even in the case of concurrency and failures Example: Begin transaction withdraw x from account A; deposit x to account B; End transaction
3
Transaction: Implementing the following primitives begin_transaction end_transaction : commit the transaction abort_transaction : all values prior to the transaction are restored read, write : the program can read or write objects
4
ACID properties Atomicity: all or nothing Consistency: should not violate integrity constraints of the system Isolation: transactions are isolated from the effects of concurrent transactions Durability: once a transaction has been committed it remains permanent even if there are failures
5
Concurrency Control T1T2 May lead to violation of isolation if both are executed simultaneously
6
Two-Phase locking Lock data before accessing Unlock data only at the end
7
Dealing with failures Private workspace : Copy the objects that have been updated by the transaction Discard copy if transaction aborts, overwrite original if transaction commits Logging: Maintain a trail of all writes so that they can be undone if necessary
8
Distributed commit Agreement: No two processes decide on different outcomes of the transaction Validity: If any process starts with abort then abort is the only possible final outcome Weak termination: If there are no failures, all processes eventually decide Non-blocking: All processes eventually decide
9
Two phase protocol satisfying first 3 properties Phase 1 The coordinator sends a request message to all participants On receiving a request message, each participant replies with either a ‘yes’ or a ‘no’ message. A ‘yes’ message signifies that the participant can commit all the actions performed at its site.
10
Two Phase Protocol (contd.) Phase 2 The coordinator waits to receive messages from all participants. If all of them are ‘yes’, then the coordinator sends the finalCommit message. Otherwise, it sends a finalAbort message. The participant carries out the action associated with the message received from the coordinator.
11
//Coordinator public class TwoPhaseCoord extends Process { boolean globalCommit = false; boolean donePhase1 = false; boolean noReceived = false; int numParticipants; int numReplies = 0; public TwoPhaseCoord(Linker initComm) { super(initComm); numParticipants = N - 1; } public synchronized void doCoordinator() { // Phase 1 broadcastMsg("request", myId); while (!donePhase1) myWait(); // Phase 2 if (noReceived) broadcastMsg("finalAbort", myId); else { globalCommit = true; broadcastMsg("finalCommit", myId); } public synchronized void handleMsg(Msg m, int src, String tag) { if (tag.equals("yes")) { numReplies++; if (numReplies == numParticipants) { donePhase1 = true; notify(); } } else if (tag.equals("no")) { noReceived = true; donePhase1 = true; notify(); } } }
12
public class TwoPhaseParticipant extends Process { boolean localCommit; boolean globalCommit; boolean done = false; boolean hasProposed = false; public TwoPhaseParticipant(Linker initComm) { super(initComm); } public synchronized void propose(boolean vote) { localCommit = vote; hasProposed = true; notify(); } public synchronized boolean decide() { while (!done) myWait(); return globalCommit; } public synchronized void handleMsg(Msg m, int src, String tag) { while (!hasProposed) myWait(); if (tag.equals("request")) { if (localCommit) sendMsg(src, "yes"); else sendMsg(src, "no"); } else if (tag.equals("finalCommit")) { globalCommit = true; done = true; notify(); } else if (tag.equals("finalAbort")) { globalCommit = false; done = true; notify(); } } }
13
Analysis If coordinator fails in the second phase before informing any participant then all participants have to wait for the coordinator to recover Hence this protocol is blocking
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.