implementing global atomicity

24
1 Implementing Global Atomicity

Upload: guthrie-hynes

Post on 04-Jan-2016

29 views

Category:

Documents


0 download

DESCRIPTION

Implementing Global Atomicity. Distributed Transaction. A distributed transaction accesses resource managers distributed across a network When resource managers are DBMSs we refer to the system as a distributed database system. DBMS at Site 1. Application Program. DBMS at Site 2. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Implementing Global Atomicity

1

Implementing Global Atomicity

Page 2: Implementing Global Atomicity

2

Distributed Transaction

• A distributed transaction accesses resource managers distributed across a network

• When resource managers are DBMSs we refer to the system as a distributed database system

Application Program

DBMS at Site 1

DBMS at Site 2

Page 3: Implementing Global Atomicity

3

Distributed Database Systems

• Each local DBMS might export – stored procedures, or – an SQL interface.

• In either case, operations at each site are grouped together as a subtransaction and the site is referred to as a cohort of the distributed transaction– Each subtransaction is treated as a transaction at its site

• Coordinator module (part of TP monitor) supports ACID properties of distributed transaction– Transaction manager acts as coordinator

Page 4: Implementing Global Atomicity

4

ACID Properties

• Each local DBMS – supports ACID properties locally for each subtransaction

• Just like any other transaction that executes there

– eliminates local deadlocks

• The additional issues are:– Global atomicity: all cohorts must abort or all commit– Global deadlocks: there must be no deadlocks involving

multiple sites– Global serialization: distributed transaction must be globally

serializable

Page 5: Implementing Global Atomicity

5

Global Atomicity• All subtransactions of a distributed transaction

must commit or all must abort• An atomic commit protocol, initiated by a

coordinator (e.g., the transaction manager), ensures this. – Coordinator polls cohorts to determine if they are all

willing to commit

• Protocol is supported in the xa interface between a transaction manager and a resource manager

Page 6: Implementing Global Atomicity

6

Atomic Commit Protocol

Applicationprogram

TransactionManager

(coordinator)ResourceManager

(cohort)

ResourceManager

(cohort)

ResourceManager

(cohort)

(3) xa_reg

(3) xa_reg

(3) xa_reg

(5) atomiccommitprotocol

(1) tx_begin(4) tx_commit

(2) accessresources

Page 7: Implementing Global Atomicity

7

Cohort Abort

• Why might a cohort abort?– Deferred evaluation of integrity constraints– Validation failure (optimistic control)– Deadlock– Crash of cohort site– Failure prevents communication with cohort

site

Page 8: Implementing Global Atomicity

8

Atomic Commit Protocol

• Most commonly used atomic commit protocol is the two-phase commit protocol

• Implemented as an exchange of messages between the coordinator and the cohorts

• Guarantees global atomicity of the transaction even if failures should occur while the protocol is executing

Page 9: Implementing Global Atomicity

9

Two-Phase Commit – The Transaction Record

• During the execution of the transaction, before the two-phase commit protocol begins: – When the application calls tx_begin to start the

transaction, the coordinator creates a transaction record for the transaction in volatile memory

– Each time a resource manager calls xa_reg to join the transaction as a cohort, the coordinator appends the cohort’s identity to the transaction record

Page 10: Implementing Global Atomicity

10

Two-Phase Commit -- Phase 1• When application invokes tx_commit, coordinator

sends prepare message to all cohorts• prepare message (coordinator to cohort) :

– If cohort wants to abort at any time prior to or on receipt of the message, it aborts and releases locks

– If cohort wants to commit, it moves all update records to mass store by forcing a prepare record to its log

• Guarantees that cohort will be able to commit (despite crashes) if coordinator decides commit (since update records are durable)

• Cohort enters prepared state

– Cohort sends a vote message (“ready” or “aborting”). It• cannot change its mind• retains all locks if vote is “ready”• enters uncertain period (it cannot foretell final outcome)

Page 11: Implementing Global Atomicity

11

Two-Phase Commit -- Phase 1

• vote message (cohort to coordinator): Cohort indicates it is “ready” to commit or is “aborting”– Coordinator records vote in transaction record– If any votes are “aborting”, coordinator decides abort and

deletes transaction record– If all are “ready”, coordinator decides commit, forces commit

record (containing transaction record) to its log (end of phase 1)

• Transaction committed when commit record is durable• Since all cohorts are in prepared state, transaction can be

committed despite any failures– Coordinator sends commit or abort message to all cohorts

Page 12: Implementing Global Atomicity

12

Two-Phase Commit -- Phase 2

• Commit or abort message (coordinator to cohort):– If commit message

• cohort commits locally by forcing a commit record to its log

• cohort sends done message to coordinator

– If abort message, it aborts

– In either case, locks are released and uncertain period ends

• done message (cohort to coordinator):– When coordinator receives a done message from each

cohort, it writes a complete record to its log and deletes transaction record from volatile store

Page 13: Implementing Global Atomicity

13

Two-Phase Commit (commit case) Application Coordinator Cohort

tx_commit

resume

- send prepare msg to cohorts in trans. rec.

- record vote in trans. rec.- if all vote ready, force commit rec. to coord. log- send commit msg

- when all done msgs rec’d, write complete rec. to log- delete trans. rec.- return status

- force prepare rec. to cohort log- send vote msg

-force commit rec. to cohort log- release locks- send done msg

phase 1

phase 2

uncertain period

xa interface

Page 14: Implementing Global Atomicity

14

Two-Phase Commit (abort case) Application Coordinator Cohort

tx_commit

resume

- send prepare msg to cohorts in trans. rec.

- record vote in trans.rec.- if any vote abort, delete transaction rec. - send abort msg- return status

- force prepare rec. to cohort log- send vote msg

- local abort- release locks

phase 1

uncertain period

xa interface

Page 15: Implementing Global Atomicity

15

Distributing the Coordinator

• A transaction manager controls resource managers in its domain

• When a cohort in domain A invokes a resource manager, RMB, in domain B, the local transaction manager, TMA, and remote transaction manager, TMB, are notified

– TMB is a cohort of TMA and a coordinator of RMB

• A coordinator/cohort tree results

Page 16: Implementing Global Atomicity

16

Coordinator/Cohort Tree

TMA

Applic.

RM1 RM2

RM3

TMCTMB

RM5RM4

Domain A

Domain B Domain C

invocationsprotocol msgs

Page 17: Implementing Global Atomicity

17

Distributing the Coordinator

• The two-phase commit protocol progresses down and up the tree in each phase– When TMB gets a prepare msg from TMA it

sends a prepare msg to each child and waits

– If each child votes ready, TMB sends a ready msg to TMA

• if not it sends an abort msg

Page 18: Implementing Global Atomicity

18

Failures and Two-Phase Commit

• A participant recognizes two failure situations.– Timeout : No response to a message. Execute a

timeout protocol– Crash : On recovery, execute a restart protocol

• If a cohort cannot complete the protocol until some failure is repaired, it is said to be blocked – Blocking can impact performance at the cohort site

since locks cannot be released

Page 19: Implementing Global Atomicity

19

Timeout Protocol

• Cohort times out waiting for prepare message– Abort the subtransaction

• Since the (distributed) transaction cannot commit unless cohort votes to commit, atomicity is preserved

• Coordinator times out waiting for vote message– Abort the transaction

• Since coordinator controls decision, it can force all cohorts to abort, preserving atomicity

Page 20: Implementing Global Atomicity

20

Timeout Protocol• Cohort (in prepared state) times out waiting for

commit/abort message– Cohort is blocked since it does not know coordinator’s

decision • Coordinator might have decided commit or abort• Cohort cannot unilaterally decide since its decision

might be contrary to coordinator’s decision, violating atomicity

• Locks cannot be released– Cohort requests status from coordinator; remains blocked

• Coordinator times out waiting for done message– Requests done message from delinquent cohort

Page 21: Implementing Global Atomicity

21

Restart Protocol - Cohort

• On restart cohort finds in its log – begin_transaction record, but no prepare record:

• Abort (transaction cannot have committed because cohort has not voted)

– prepare record, but no commit record (cohort crashed in its uncertain period)

• Does not know if transaction committed or aborted• Locks items mentioned in update records before restarting system• Requests status from coordinator and blocks until it receives an

answer

– commit record• Recover transaction to committed state using log

Page 22: Implementing Global Atomicity

22

Restart Protocol - Coordinator

• On restart: – Search log and restore to volatile memory the transaction

record of each transaction for which there is a commit record, but no complete record

• Commit record contains transaction record

• On receiving a request from a cohort for transaction status: – If transaction record exists in volatile memory, reply based

on information in transaction record

– If no transaction record exists in volatile memory, reply abort• Referred to as presumed abort property

Page 23: Implementing Global Atomicity

23

Presumed Abort Property

• If, when a cohort asks for the status of a transaction, there is no transaction record in coordinator’s volatile storage, either– The coordinator had aborted the transaction and deleted

the transaction record– The coordinator had crashed and restarted and did not

find the commit record in its log because • It was in Phase 1 of the protocol and had not yet made a

decision, or• It had previously aborted the transaction

– or …

Page 24: Implementing Global Atomicity

24

Presumed Abort Property

– The coordinator had crashed and restarted and found a complete record for the transaction in its log

– The coordinator had committed the transaction, received done messages from all cohorts and hence deleted the transaction record from volatile memory

• The last two possibilities cannot occur– In both cases, the cohort has sent a done message and

hence would not request status

• Therefore, coordinator can respond abort