I did this by adding another locking process, which makes the other two
wait. This way the output should be stable enough.
Per buildfarm and Andres Freund
Discussion: https://postgr.es/m/
20180103034445.t3utrtrnrevfsghm@alap3.anarazel.de
-Parsed test spec with 2 sessions
+Parsed test spec with 3 sessions
-starting permutation: s2l s1i s2i
+starting permutation: s2l s1i s2i s3u
+pg_advisory_lock
+
+
step s2l: SELECT pg_advisory_lock(281457);
pg_advisory_lock
<waiting ...>
step s2i:
CREATE INDEX CONCURRENTLY mcic_two_pkey ON mcic_two (id)
- WHERE unlck();
+ WHERE unlck() AND lck_shr(572814);
+ <waiting ...>
+step s3u: SELECT unlck();
+unlck
+t
step s1i: <... completed>
-s1
-
-
+step s2i: <... completed>
step "s1i" {
CREATE INDEX CONCURRENTLY mcic_one_pkey ON mcic_one (id)
WHERE lck_shr(281457);
- }
-teardown { SELECT pg_advisory_unlock_all() AS "s1"; }
+}
+step "s1u" { SELECT unlck(); }
session "s2"
step "s2l" { SELECT pg_advisory_lock(281457); }
step "s2i" {
CREATE INDEX CONCURRENTLY mcic_two_pkey ON mcic_two (id)
- WHERE unlck();
+ WHERE unlck() AND lck_shr(572814);
}
-permutation "s2l" "s1i" "s2i"
+session "s3"
+setup { SELECT pg_advisory_lock(572814); }
+step "s3u" { SELECT unlck(); }
+
+permutation "s2l" "s1i" "s2i" "s3u"