Lecture 12: Distributed transactions Haibin Zhu, PhD. Assistant Professor Department of Computer Science Nipissing University © 2002.

Slides:



Advertisements
Similar presentations
Distributed Systems Course Distributed transactions
Advertisements

CS542: Topics in Distributed Systems Distributed Transactions and Two Phase Commit Protocol.
Slides for Chapter 13: Distributed transactions
(c) Oded Shmueli Distributed Recovery, Lecture 7 (BHG, Chap.7)
COS 461 Fall 1997 Transaction Processing u normal systems lose their state when they crash u many applications need better behavior u today’s topic: how.
Exercises for Chapter 17: Distributed Transactions
CIS 720 Concurrency Control. Timestamp-based concurrency control Assign a timestamp ts(T) to each transaction T. Each data item x has two timestamps:
1 TRANSACTION & CONCURRENCY CONTROL Huỳnh Văn Quốc Phương Thái Thị Thu Thủy
Copyright © George Coulouris, Jean Dollimore, Tim Kindberg This material is made available for private study and for direct.
Slides for Chapter 10: Distributed transactions
ICS 421 Spring 2010 Distributed Transactions Asst. Prof. Lipyeow Lim Information & Computer Science Department University of Hawaii at Manoa 3/16/20101Lipyeow.
© City University London, Dept. of Computing Distributed Systems / Distributed Systems Session 9: Transactions Christos Kloukinas Dept. of Computing.
OCT Distributed Transaction1 Lecture 13: Distributed Transactions Notes adapted from Tanenbaum’s “Distributed Systems Principles and Paradigms”
Persistent State Service 1 Distributed Object Transactions  Transaction principles  Concurrency control  The two-phase commit protocol  Services for.
© Chinese University, CSE Dept. Distributed Systems / Distributed Systems Topic 11: Transactions Dr. Michael R. Lyu Computer Science & Engineering.
CMPT Dr. Alexandra Fedorova Lecture XI: Distributed Transactions.
Distributed Systems Fall 2009 Distributed transactions.
CMPT Dr. Alexandra Fedorova Lecture XI: Distributed Transactions.
Transactions and concurrency control
Distributed Deadlocks and Transaction Recovery.
Distributed Commit Dr. Yingwu Zhu. Failures in a distributed system Consistency requires agreement among multiple servers – Is transaction X committed?
CS162 Section Lecture 10 Slides based from Lecture and
Exercises for Chapter 16: Transactions and Concurrency Control
Distributed Transactions March 15, Transactions What is a Distributed Transaction?  A transaction that involves more than one server  Network.
DISTRIBUTED SYSTEMS II AGREEMENT (2-3 PHASE COM.) Prof Philippas Tsigas Distributed Computing and Systems Research Group.
Distributed Transactions: Distributed deadlocks Recovery techniques.
Chapter 19 Recovery and Fault Tolerance Copyright © 2008.
Transaction Communications Yi Sun. Outline Transaction ACID Property Distributed transaction Two phase commit protocol Nested transaction.
Distributed Transactions Chapter 13
Distributed Transactions
CSE 486/586 CSE 486/586 Distributed Systems Concurrency Control Steve Ko Computer Sciences and Engineering University at Buffalo.
CSE 486/586, Spring 2013 CSE 486/586 Distributed Systems Concurrency Control Steve Ko Computer Sciences and Engineering University at Buffalo.
Distributed Transactions CS425 /CSE424/ECE428 – Distributed Systems – Fall 2011 Nikita Borisov - UIUC Material derived from slides by I. Gupta, M. Harandi,
Operating Systems Distributed Coordination. Topics –Event Ordering –Mutual Exclusion –Atomicity –Concurrency Control Topics –Event Ordering –Mutual Exclusion.
Distributed Transaction Management, Fall 2002Lecture Distributed Commit Protocols Jyrki Nummenmaa
DISTRIBUTED SYSTEMS II FAULT-TOLERANT AGREEMENT II Prof Philippas Tsigas Distributed Computing and Systems Research Group.
University of Tampere, CS Department Distributed Commit.
 Distributed file systems having transaction facility need to support distributed transaction service.  A distributed transaction service is an extension.
DISTRIBUTED SYSTEMS II AGREEMENT - COMMIT (2-3 PHASE COMMIT) Prof Philippas Tsigas Distributed Computing and Systems Research Group.
CSE 486/586, Spring 2012 CSE 486/586 Distributed Systems Replication Steve Ko Computer Sciences and Engineering University at Buffalo.
Distributed Transactions Chapter – Vidya Satyanarayanan.
Transactions and Concurrency Control. Concurrent Accesses to an Object Multiple threads Atomic operations Thread communication Fairness.
Two-Phase Commit Brad Karp UCL Computer Science CS GZ03 / M th October, 2008.
From Coulouris, Dollimore, Kindberg and Blair Distributed Systems: Concepts and Design Edition 5, © Addison-Wesley 2012 Slides for Chapter 17: Distributed.
 2002 M. T. Harandi and J. Hou (modified: I. Gupta) Distributed Transactions.
IM NTU Distributed Information Systems 2004 Distributed Transactions -- 1 Distributed Transactions Yih-Kuen Tsay Dept. of Information Management National.
A client transaction becomes distributed if it invokes operations in several different Servers There are two different ways that distributed transactions.
CSE 486/586, Spring 2012 CSE 486/586 Distributed Systems Replication Steve Ko Computer Sciences and Engineering University at Buffalo.
TRANSACTION & CONCURRENCY CONTROL 1. CONTENT 2  Transactions & Nested transactions  Methods for concurrency control  Locks  Optimistic concurrency.
CSE 486/586, Spring 2014 CSE 486/586 Distributed Systems Transactions on Replicated Data Steve Ko Computer Sciences and Engineering University at Buffalo.
Distributed Transactions What is a transaction? (A sequence of server operations that must be carried out atomically ) ACID properties - what are these.
10-Jun-16COMP28112 Lecture 131 Distributed Transactions.
Topics in Distributed Databases Database System Implementation CSE 507 Some slides adapted from Navathe et. Al and Silberchatz et. Al.
Distributed Databases – Advanced Concepts Chapter 25 in Textbook.
Outline Announcements Fault Tolerance.
Distributed Systems Topic 7: Transactions and Distributed Transactions
CSE 486/586 Distributed Systems Concurrency Control --- 3
Slides for Chapter 14: Distributed transactions
Distributed Transactions
Distributed Transactions
Exercises for Chapter 14: Distributed Transactions
Distributed Databases Recovery
Distributed Transactions
UNIVERSITAS GUNADARMA
Distributed Transactions
Distributed Systems Course Distributed transactions
Distributed Transactions
TRANSACTION & CONCURRENCY CONTROL
CIS 720 Concurrency Control.
CSE 486/586 Distributed Systems Concurrency Control --- 3
Presentation transcript:

Lecture 12: Distributed transactions Haibin Zhu, PhD. Assistant Professor Department of Computer Science Nipissing University © 2002

2 Contents  Introduction  Flat and nested distributed transactions  Atomic commit protocols  Concurrency control in distributed transactions

3 Nested transactions13.3 (Page 528)  transactions may be composed of other transactions –several transactions may be started from within a transaction –we have a top-level transaction and subtransactions which may have their own subtransactions T : top-level transaction T 1 = openSubTransaction T 2 openSubTransaction T 1 :T 2 : T 11 :T 12 : T 211 : T 21 : prov.commit abort prov. commit commit Figure 13.13

4 Nested transactions  To a parent, a subtransaction is atomic with respect to failures and concurrent access  transactions at the same level (e.g. T1 and T2) can run concurrently but access to common objects is serialised  a subtransaction can fail independently of its parent and other subtransactions –when it aborts, its parent decides what to do, e.g. start another subtransaction or give up  The CORBA transaction service supports both flat and nested transactions

5 Advantages of nested transactions (over flat ones)  Subtransactions may run concurrently with other subtransactions at the same level. –this allows additional concurrency in a transaction. – when subtransactions run in different servers, they can work in parallel.  e.g. consider the branchTotal operation  it can be implemented by invoking getBalance at every account in the branch. these can be done in parallel when the branches have different servers  Subtransactions can commit or abort independently. –this is potentially more robust –a parent can decide on different actions according to whether a subtransaction has aborted or not

6 Commitment of nested transactions  A transaction may commit or abort only after its child transactions have completed.  A subtransaction decides independently to commit provisionally or to abort. Its decision to abort is final.  When a parent aborts, all of its subtransactions are aborted.  When a subtransaction aborts, the parent can decide whether to abort or not.  If the top-level transaction commits, then all of the subtransactions that have provisionally committed can commit too, provided that none of their ancestors has aborted.

7 Distributed transactions A flat client transaction completes each of its requests before going on to the next one. Therefore, each transaction accesses servers’ objects sequentially In a nested transaction, the top- level transaction can open subtransactions, and each subtransaction can open further subtransactions down to any depth of nesting In the nested case, subtransactions at the same level can run concurrently, so T1 and T2 are concurrent, and as they invoke objects in different servers, they can run in parallel.

8 Nested banking transaction  client transfers $10 from A to C and then transfers $20 from B to D a.withdraw(10) c. deposit(10) b.withdraw(20) d.deposit(20) Client A B C T 1 T 2 T 3 T 4 T D X Y Z T =openTransaction openSubTransaction a.withdraw(10); closeTransaction openSubTransaction b.withdraw(20); openSubTransaction c.deposit(10); openSubTransaction d.deposit(20); Figure 13.2 requests can be run in parallel - with several servers, the nested transaction is more efficient

9 The coordinator of a flat distributed transaction  Servers execute requests in a distributed transaction –when it commits they must communicate with one another to coordinate their actions –a client starts a transaction by sending an openTransaction request to a coordinator in any server (next slide)  it returns a TID unique in the distributed system(e.g. server ID + local transaction number)  at the end, it will be responsible for committing or aborting it –each server managing an object accessed by the transaction is a participant - it joins the transaction (next slide)  a participant keeps track of objects involved in the transaction  at the end it cooperates with the coordinator in carrying out the commit protocol –note that a participant can call abortTransaction in coordinator Why might a participant abort a transaction?

10 A flat distributed banking transaction  Note that the TID (T) is passed with each request e.g. withdraw(T,3).. BranchZ BranchX participant C D Client BranchY B A participant join T a.withdraw(4); c.deposit(4); b.withdraw(3); d.deposit(3); openTransaction b.withdraw(T, 3); closeTransaction T =openTransaction a.withdraw(4); c.deposit(4); b.withdraw(3); d.deposit(3); closeTransaction Note: the coordinator is in one of the servers, e.g. BranchX Figure 13.3 a client’s (flat) banking transaction involves accounts A, B, C and D at servers BranchX, BranchY and BranchZ openTransaction goes to the coordinator Each server is shown with a participant, which joins the transaction by invoking the join method in the coordinator

11 The join operation  The interface for Coordinator is shown in Figure 12.3 –it has openTransaction, closeTransaction and abortTransaction –openTransaction returns a TID which is passed with each operation so that servers know which transaction is accessing its objects  The Coordinator interface provides an additional method, join, which is used whenever a new participant joins the transaction: –join(Trans, reference to participant) –informs a coordinator that a new participant has joined the transaction Trans. –the coordinator records the new participant in its participant list. –the fact that the coordinator knows all the participants and each participant knows the coordinator will enable them to collect the information that will be needed at commit time.

12 Atomic commit protocols  transaction atomicity requires that at the end, –either all of its operations are carried out or none of them.  in a distributed transaction, the client has requested the operations at more than one server  one-phase atomic commit protocol –the coordinator tells the participants whether to commit or abort –what is the problem with that? –this does not allow one of the servers to decide to abort – it may have discovered a deadlock or it may have crashed and been restarted  two-phase atomic commit protocol –is designed to allow any participant to choose to abort a transaction –phase 1 - each participant votes. If it votes to commit, it is prepared. It cannot change its mind. In case it crashes, it must save updates in permanent store –phase 2 - the participants carry out the joint decision The decision could be commit or abort - participants record it in permanent store

13 Failure model for the commit protocols  Recall the failure model for transactions in Chapter 12 –this applies to the two-phase commit protocol  Commit protocols are designed to work in –asynchronous system (e.g. messages may take a very long time) –servers may crash –messages may be lost. –assume corrupt and duplicated messages are removed. –no byzantine faults – servers either crash or they obey their requests  2PC is an example of a protocol for reaching a consensus. –Chapter 11 says consensus cannot be reached in an asynchronous system if processes sometimes fail. –however, 2PC does reach consensus under those conditions. –because crash failures of processes are masked by replacing a crashed process with a new process whose state is set from information saved in permanent storage and information held by other processes.

14 The two-phase commit protocol  During the progress of a transaction, the only communication between coordinator and participant is the join request –The client request to commit or abort goes to the coordinator  if client or participant request abort, the coordinator informs the participants immediately  if the client asks to commit, the 2PC comes into use  2PC –voting phase: coordinator asks all participants if they can commit  if yes, participant records updates in permanent storage –completion phase: coordinator tells all participants to commit or abort –the next slide shows the operations used in carrying out the protocol How many messages are sent between the coordinator and each participant? Why does participant record updates in permanent storage at this stage?

15 Operations for two-phase commit protocol  participant interface - canCommit?, doCommit, doAbort coordinator interface - haveCommitted, getDecision 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. Figure 13.4 This is a request with a reply These are asynchronous requests to avoid delays Asynchronous request

16 The two-phase commit protocol Figure 13.5 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.

17 Communication in two-phase commit protocol  Time-out actions in the 2PC  to avoid blocking forever when a process crashes or a message is lost –uncertain participant (step 2) has voted yes. it can’t decide on its own  it uses getDecision method to ask coordinator about outcome –participant has carried out client requests, but has not had a canCommit?from the coordinator. It can abort unilaterally –coordinator delayed in waiting for votes (step 1). It can abort and send doAbort to participants. canCommit? Yes doCommit haveCommitted Coordinator 1 3 (waiting for votes) committed done prepared to commit step Participant 2 4 (uncertain) prepared to commit committed statusstepstatus Figure 13.6

18 Performance of the two-phase commit protocol  if there are no failures, the 2PC involving N participants requires – N canCommit? messages and replies, followed by N doCommit messages.  the cost in messages is proportional to 3N, and the cost in time is three rounds of messages.  The haveCommitted messages are not counted –there may be arbitrarily many server and communication failures –2PC is guaranteed to complete eventually, but it is not possible to specify a time limit within which it will be completed  delays to participants in uncertain state  some 3PCs designed to alleviate such delays they require more messages and more rounds for the normal case

Two-phase commit protocol for nested transactions  Recall Fig 13.1b, top-level transaction T and subtransactions T 1, T 2, T 11, T 12, T 21, T 22  A subtransaction starts after its parent and finishes before it  When a subtransaction completes, it makes an independent decision either to commit provisionally or to abort. –A provisional commit is not the same as being prepared: it is a local decision and is not backed up on permanent storage. –If the server crashes subsequently, its replacement will not be able to carry out a provisional commit.  A two-phase commit protocol is needed for nested transactions –it allows servers of provisionally committed transactions that have crashed to abort them when they recover.

20 Figure 13.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, provisional.  This is the interface of the coordinator of a subtransaction. –It allows it to open further subtransactions –It allows its subtransactions to enquire about its status  Client starts by using OpenTransaction to open a top-level transaction. –This returns a TID for the top-level transaction –The TID can be used to open a subtransaction  The subtransaction automatically joins the parent and a TID is returned. The TID of a subtransaction is an extension of its parent's TID, so that a subtransaction can work out the TID of the top-level transaction. The client finishes a set of nested transactions by calling closeTransaction or abortTransacation in the top-level transaction.

21 Transaction T decides whether to commit 1 2 T 11 T 12 T 22 T 21 abort (at M) provisional commit (at N) provisional commit (at X) aborted (at Y) provisional commit (at N) provisional commit (at P) T T T  Recall that 1.A parent can commit even if a subtransaction aborts 2.If a parent aborts, then its subtransactions must abort – In the figure, each subtransaction has either provisionally committed or aborted Figure 13.8 T 12 has provisionally committed and T 11 has aborted, but the fate of T 12 depends on its parent T 1 and eventually on the top-level transaction, T. Although T 21 and T 22 have both provisionally committed, T 2 has aborted and this means that T 21 and T 22 must also abort. Suppose that T decides to commit although T 2 has aborted, also that T 1 decides to commit although T11 has aborted

22 Information held by coordinators of nested transactions Coordinator of transaction Child transactions ParticipantProvisional commit list Abort list T T 1, T 2 yes T 1, T 12 T 11, T 2 T 1 T 11, T 12 yes T 1, T 12 T 11 T 2 T 21, T 22 no (aborted) T 2 T 11 no (aborted) T 11 T 12, T 21 T 12 but not T 21 T, T 12 T 22 no (parent aborted) T 22  When a top-level transcation commits it carries out a 2PC  Each coordinator has a list of its subtransactions  At provisional commit, a subtransaction reports its status and the status of its descendents to its parent  If a subtransaction aborts, it tells its parent Figure 13.9 T 12 and T 21 share a coordinator as they both run at server N When T2 is aborted it tells T (no information about descendents) A subtransaction (e.g. T 21 and T 22 ) is called an orphan if one of its ancestors aborts An orphan uses getStatus to ask its parent about the outcome. It should abort if its parent has aborted.

23 canCommit? for hierarchic two-phase commit protocol canCommit?(trans, subTrans) -> Yes / No Call by a coordinator to ask a coordinator of a 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.  Top-level transaction is coordinator of 2PC.  participant list: –the coordinators of all the subtransactions that have provisionally committed –but do not have an aborted ancestor –E.g. T, T1 and T12 in Figure 13.8 –if they vote yes, they prepare to commit by saving state in permanent store  The state is marked as belonging to the top-level transaction  The 2PC may be performed in a hierarchic or a flat manner Figure Hierarchic 2PC - T asks canCommit? to T 1 and T 1 asks canCommit? to T 12 The subTrans argument is use to find the subtransaction to vote on. If absent, vote no. The trans argument is used when saving the objects in permanent storage

24 canCommit? for flat two-phase commit protocol 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.  Flat 2PC –the coordinator of the top-level transaction sends canCommit? messages to the coordinators of all of the subtransactions in the provisional commit list. –in our example, T sends to the coordinators of T 1 and T 12. –the trans argument is the TID of the top-level transaction –the abortList argument gives all aborted subtransactions  e.g. server N has T 12 prov committed and T 21 aborted –On receiving canCommit, participant  looks in list of transactions for any that match trans (e.g. T 12 and T 21 at N)  it prepares any that have provisionally committed and are not in abortList and votes yes  if it can't find any it votes no Figure 13.11

25 Time-out actions in nested 2PC  With nested transactions delays can occur in the same three places as before –when a participant is prepared to commit –when a participant has finished but has not yet received canCommit? –when a coordinator is waiting for votes  Fourth place: –provisionally committed subtransactions of aborted subtransactions e.g. T22 whose parent T2 has aborted –use getStatus on parent, whose coordinator should remain active for a while –If parent does not reply, then abort

Concurrency control in distributed transactions  Each server manages a set of objects and is responsible for ensuring that they remain consistent when accessed by concurrent transactions –therefore, each server is responsible for applying concurrency control to its own objects. –the members of a collection of servers of distributed transactions are jointly responsible for ensuring that they are performed in a serially equivalent manner –therefore if transaction T is before transaction U in their conflicting access to objects at one of the servers then they must be in that order at all of the servers whose objects are accessed in a conflicting manner by both T and U

Locking  In a distributed transaction, the locks on an object are held by the server that manages it. –The local lock manager decides whether to grant a lock or make the requesting transaction wait. –it cannot release any locks until it knows that the transaction has been committed or aborted at all the servers involved in the transaction. –the objects remain locked and are unavailable for other transactions during the atomic commit protocol  an aborted transaction releases its locks after phase 1 of the protocol.

28 TU Write(A)at Xlocks A Write(B)at Ylocks B Read(B)at Ywaits for U Read(A)at Xwaits for T Interleaving of transactions T and U at servers X and Y  in the example on page 579, we have –T before U at server X and U before T at server Y  different orderings lead to cyclic dependencies and distributed deadlock –detection and resolution of distributed deadlock in next section

29 Summary  2PC protocol –a distributed transaction involves several different servers.  A nested transaction structure allows additional concurrency and independent committing by the servers in a distributed transaction. –atomicity requires that the servers participating in a distributed transaction either all commit it or all abort it. –atomic commit protocols are designed to achieve this effect, even if servers crash during their execution. –the 2PC protocol allows a server to abort unilaterally.  it includes timeout actions to deal with delays due to servers crashing.  2PC protocol can take an unbounded amount of time to complete but is guaranteed to complete eventually.  concurrency control for distributed transactions –each server is responsible for the serializability of transactions that access its own objects. –additional protocols are required to ensure that transactions are serializable globally.