Implementing all-or-nothing atomicity Barbara Liskov MIT CSAIL april 2007Xfer xfer(A, B, amt) A <- A – amt; B <- B + amt;recovery start at the top: while more records if commit add t to committed list if change and t not in committed list, undo start at the bottom: while more records if change and t in committed list, redoScenario <begin 17>Scenario <begin 17> <begin 18>Scenario <begin 17> <begin 18> <change 18 F 4500 5300>Scenario <begin 17> <begin 18> <change 18 F 4500 5300> <outcome 18 abort>Scenario <begin 17> <begin 18> <change 18 F 4500 5300> <outcome 18 abort> <begin 19>Scenario <begin 17> <begin 18> <change 18 F 4500 5300> <outcome 18 abort> <begin 19> <change 19 F 4500 5000>Scenario <begin 17> <begin 18> <change 18 F 4500 5300> <outcome 18 abort> <begin 19> <change 19 F 4500 5000> <outcome 19 commit>Scenario <begin 17> <begin 18> <change 18 F 4500 5300> <outcome 18 abort> <begin 19> <change 19 F 4500 5000> <outcome 19 commit> <change 17 F 5000 4000>Scenario <begin 17> <begin 18> <change 18 F 4500 5300> <outcome 18 abort> <begin 19> <change 19 F 4500 5000> <outcome 19 commit> <change 17 F 5000 4000> <change 17 B 7500 8500>Scenario <begin 17> <begin 18> <change 18 F 4500 5300> <outcome 18 abort> <begin 19> <change 19 F 4500 5000> <outcome 19 commit> <change 17 F 5000 4000> <change 17 B 7500 8500> <outcome 17
View Full Document