1
# This is a straightforward deadlock scenario. Since it involves more than
2
# two processes, the main lock detector will find the problem and rollback
3
# the session that first discovers it. Set deadlock_timeout in each session
4
# so that it's predictable which session fails.
20
DROP TABLE a1, a2, a3, a4, a5, a6, a7, a8;
24
setup { BEGIN; SET deadlock_timeout = '100s'; }
25
step "s1a1" { LOCK TABLE a1; }
26
step "s1a2" { LOCK TABLE a2; }
27
step "s1c" { COMMIT; }
30
setup { BEGIN; SET deadlock_timeout = '100s'; }
31
step "s2a2" { LOCK TABLE a2; }
32
step "s2a3" { LOCK TABLE a3; }
33
step "s2c" { COMMIT; }
36
setup { BEGIN; SET deadlock_timeout = '100s'; }
37
step "s3a3" { LOCK TABLE a3; }
38
step "s3a4" { LOCK TABLE a4; }
39
step "s3c" { COMMIT; }
42
setup { BEGIN; SET deadlock_timeout = '100s'; }
43
step "s4a4" { LOCK TABLE a4; }
44
step "s4a5" { LOCK TABLE a5; }
45
step "s4c" { COMMIT; }
48
setup { BEGIN; SET deadlock_timeout = '100s'; }
49
step "s5a5" { LOCK TABLE a5; }
50
step "s5a6" { LOCK TABLE a6; }
51
step "s5c" { COMMIT; }
54
setup { BEGIN; SET deadlock_timeout = '100s'; }
55
step "s6a6" { LOCK TABLE a6; }
56
step "s6a7" { LOCK TABLE a7; }
57
step "s6c" { COMMIT; }
60
setup { BEGIN; SET deadlock_timeout = '100s'; }
61
step "s7a7" { LOCK TABLE a7; }
62
step "s7a8" { LOCK TABLE a8; }
63
step "s7c" { COMMIT; }
66
setup { BEGIN; SET deadlock_timeout = '10s'; }
67
step "s8a8" { LOCK TABLE a8; }
68
step "s8a1" { LOCK TABLE a1; }
69
step "s8c" { COMMIT; }
71
permutation "s1a1" "s2a2" "s3a3" "s4a4" "s5a5" "s6a6" "s7a7" "s8a8" "s1a2" "s2a3" "s3a4" "s4a5" "s5a6" "s6a7" "s7a8" "s8a1" "s8c" "s7c" "s6c" "s5c" "s4c" "s3c" "s2c" "s1c"