Time | User Action | Transaction Logic | File System Changes |
12 | transaction begin | transaction id ← 1239; start_time ← 12 | create clone-1239 |
13 | touch a | commit_time[a] ← 13 (auto-commit) | |
14 | touch clone-1239/b | commit_time[b] ← 0 (pending commit) | |
15 | transaction begin | transaction id ← 1240; start_time ← 15 | create clone-1240 |
16 | transaction commit 1239 | OK (commit_time[b] < start_time) | copy clone-1239/b b |
| | commit_time[b] ← 16 | destroy clone-1239 |
17 | touch clone-1240/b | commit_time[b] = 16 (unchanged, pending commit) |
18 | touch c | commit_time[c] ← 18 (auto-commit) | |
19 | transaction begin | transaction id ← 1241; start_time ← 19 | create clone-1241 |
20 | transaction commit 1240 | Conflict (commit_time[b] > start_time) | destroy clone-1240 |
21 | touch clone-1241/c | commit_time[c] = 18 (unchanged, pending commit) |
22 | transaction commit 1241 | OK (commit_time[c] < start_time) | copy clone-1241/c c |
| | commit_time[c] ← 22 | destroy clone-1241 |
23 | transaction begin | transaction id ← 1242; start_time ← 23 | create clone-1242 |
24 | touch clone-1242/c | commit_time[c] = 22 (unchanged, pending commit) |
25 | touch c | commit_time[c] ← 25 (auto-commit) | |
26 | transaction commit 1242 | Conflict (commit_time[c] > start_time) | destroy clone-1242 |
|