notes
[IRC.git] / Robust / src / Runtime / DSTM / docs / commitnotes
1 Per object possibilities:
2
3 1) Lock acquired, version id matches
4
5 2) No lock, but version id matches
6
7 3) Version id doesn't match
8
9 4) Not here
10
11 Response to machine running transaction
12
13 A) DISAGREE (if we ever see at least 1 #3)
14
15 B) AGREE (all #1)
16
17 C) AGREE BUT MISSING OBJECTS (mixture of #1 and #4 - no #2 or #3) -
18 return list of oid's for missing objects (need to build list)
19
20 D) SOFT ABORT (need #2, could have #1, #4, can't have #3) - make sure
21 there are no #3's
22
23 Machine running transaction
24
25 I) ABORT (Any A's) (rerun computation, clear out transaction records, etc...)
26
27 II) COMMIT (All B's)
28
29 III) ABORT BUT RETRY COMMIT (don't rerun computation) (Need D, can
30 have B's, can have C', no A's)
31
32 IV) ABORT BUT RETRY COMMIT WITH RELOCATING (don't rerun computation,
33 but relookup all missing objects) (Need C, can have B's, no A's, no
34 D's)
35
36
37 Other machine involved in transaction
38
39 I) COMMIT - commit object into store
40
41 II) ABORT - unlock objects, free transaction resources
42
43 III) Transaction machine unreachable...
44
45         If any machine in transaction has seen COMMIT, all COMMIT
46 (Need to communicate this information in advanced of deciding
47 COMMIT/ABORT)
48
49         If no one has seen COMMIT, all ABORT