|
| 1 | +# This is a straightforward deadlock scenario. Since it involves more than |
| 2 | +# two processes, the mainlock detector will find the problem and rollback the |
| 3 | +# backend which discovers it. |
| 4 | + |
| 5 | +setup |
| 6 | +{ |
| 7 | + CREATE TABLE a1 (); |
| 8 | + CREATE TABLE a2 (); |
| 9 | + CREATE TABLE a3 (); |
| 10 | + CREATE TABLE a4 (); |
| 11 | + CREATE TABLE a5 (); |
| 12 | + CREATE TABLE a6 (); |
| 13 | + CREATE TABLE a7 (); |
| 14 | + CREATE TABLE a8 (); |
| 15 | +} |
| 16 | + |
| 17 | +teardown |
| 18 | +{ |
| 19 | + DROP TABLE a1, a2, a3, a4, a5, a6, a7, a8; |
| 20 | +} |
| 21 | + |
| 22 | +session "s1" |
| 23 | +setup { BEGIN; SET deadlock_timeout = '10s'; } |
| 24 | +step "s1a1" { LOCK TABLE a1; } |
| 25 | +step "s1a2" { LOCK TABLE a2; } |
| 26 | +step "s1c" { COMMIT; } |
| 27 | + |
| 28 | +session "s2" |
| 29 | +setup { BEGIN; SET deadlock_timeout = '10s'; } |
| 30 | +step "s2a2" { LOCK TABLE a2; } |
| 31 | +step "s2a3" { LOCK TABLE a3; } |
| 32 | +step "s2c" { COMMIT; } |
| 33 | + |
| 34 | +session "s3" |
| 35 | +setup { BEGIN; SET deadlock_timeout = '10s'; } |
| 36 | +step "s3a3" { LOCK TABLE a3; } |
| 37 | +step "s3a4" { LOCK TABLE a4; } |
| 38 | +step "s3c" { COMMIT; } |
| 39 | + |
| 40 | +session "s4" |
| 41 | +setup { BEGIN; SET deadlock_timeout = '10s'; } |
| 42 | +step "s4a4" { LOCK TABLE a4; } |
| 43 | +step "s4a5" { LOCK TABLE a5; } |
| 44 | +step "s4c" { COMMIT; } |
| 45 | + |
| 46 | +session "s5" |
| 47 | +setup { BEGIN; SET deadlock_timeout = '10s'; } |
| 48 | +step "s5a5" { LOCK TABLE a5; } |
| 49 | +step "s5a6" { LOCK TABLE a6; } |
| 50 | +step "s5c" { COMMIT; } |
| 51 | + |
| 52 | +session "s6" |
| 53 | +setup { BEGIN; SET deadlock_timeout = '10s'; } |
| 54 | +step "s6a6" { LOCK TABLE a6; } |
| 55 | +step "s6a7" { LOCK TABLE a7; } |
| 56 | +step "s6c" { COMMIT; } |
| 57 | + |
| 58 | +session "s7" |
| 59 | +setup { BEGIN; SET deadlock_timeout = '10s'; } |
| 60 | +step "s7a7" { LOCK TABLE a7; } |
| 61 | +step "s7a8" { LOCK TABLE a8; } |
| 62 | +step "s7c" { COMMIT; } |
| 63 | + |
| 64 | +session "s8" |
| 65 | +setup { BEGIN; SET deadlock_timeout = '10ms'; } |
| 66 | +step "s8a8" { LOCK TABLE a8; } |
| 67 | +step "s8a1" { LOCK TABLE a1; } |
| 68 | +step "s8c" { COMMIT; } |
| 69 | + |
| 70 | +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" |
0 commit comments