Fix isolation test to be less timing-dependent

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
This commit is contained in:
Alvaro Herrera 2018-01-03 11:16:42 -03:00
parent 9d4649ca49
commit 2268e6afd5
2 changed files with 19 additions and 10 deletions

View File

@ -1,6 +1,9 @@
Parsed test spec with 2 sessions Parsed test spec with 3 sessions
starting permutation: s2l s1i s2i s3u
pg_advisory_lock
starting permutation: s2l s1i s2i
step s2l: SELECT pg_advisory_lock(281457); step s2l: SELECT pg_advisory_lock(281457);
pg_advisory_lock pg_advisory_lock
@ -11,9 +14,11 @@ step s1i:
<waiting ...> <waiting ...>
step s2i: step s2i:
CREATE INDEX CONCURRENTLY mcic_two_pkey ON mcic_two (id) 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> step s1i: <... completed>
s1 step s2i: <... completed>

View File

@ -26,15 +26,19 @@ session "s1"
step "s1i" { step "s1i" {
CREATE INDEX CONCURRENTLY mcic_one_pkey ON mcic_one (id) CREATE INDEX CONCURRENTLY mcic_one_pkey ON mcic_one (id)
WHERE lck_shr(281457); WHERE lck_shr(281457);
} }
teardown { SELECT pg_advisory_unlock_all() AS "s1"; } step "s1u" { SELECT unlck(); }
session "s2" session "s2"
step "s2l" { SELECT pg_advisory_lock(281457); } step "s2l" { SELECT pg_advisory_lock(281457); }
step "s2i" { step "s2i" {
CREATE INDEX CONCURRENTLY mcic_two_pkey ON mcic_two (id) 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"