1 Per object possibilities:
3 1) Lock acquired, version id matches
5 2) No lock, but version id matches
7 3) Version id doesn't match
11 Response to machine running transaction
13 A) DISAGREE (if we ever see at least 1 #3)
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)
20 D) SOFT ABORT (need #2, could have #1, #4, can't have #3) - make sure
23 Machine running transaction
25 I) ABORT (Any A's) (rerun computation, clear out transaction records, etc...)
29 III) ABORT BUT RETRY COMMIT (don't rerun computation) (Need D, can
30 have B's, can have C', no A's)
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
37 Other machine involved in transaction
39 I) COMMIT - commit object into store
41 II) ABORT - unlock objects, free transaction resources
43 III) Transaction machine unreachable...
45 If any machine in transaction has seen COMMIT, all COMMIT
46 (Need to communicate this information in advanced of deciding
49 If no one has seen COMMIT, all ABORT