]> granicus.if.org Git - postgresql/commitdiff
Further tweaking of deadlock isolation tests.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 12 Feb 2016 04:21:33 +0000 (23:21 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 12 Feb 2016 04:21:33 +0000 (23:21 -0500)
The new deadlock-soft-2 test has a timing dependency too: it supposes
that isolationtester will detect step s1b as waiting before the deadlock
detector runs and grants it the lock.  Adjust deadlock_timeout to ensure
that that's true even in CLOBBER_CACHE_ALWAYS builds, where the wait
detection query is quite slow.  Per buildfarm member jaguarundi.

src/test/isolation/specs/deadlock-soft-2.spec

index 044921c05d0a00337ddc73bb2ad2b7cee78e14df..46b73bc0823f95f7ad5bcaa00689aaff51047118 100644 (file)
@@ -2,6 +2,12 @@
 # jump over both s3 and s4 and acquire the lock on a2 immediately,
 # since s3 and s4 are hard-blocked on a1.
 
+# The expected output for this test assumes that isolationtester will
+# detect step s1b as waiting before the deadlock detector runs and
+# releases s1 from its blocked state.  To leave enough time for that
+# to happen even in very slow (CLOBBER_CACHE_ALWAYS) cases, we must
+# increase deadlock_timeout.
+
 setup
 {
   CREATE TABLE a1 ();
@@ -14,24 +20,24 @@ teardown
 }
 
 session "s1"
-setup          { BEGIN; }
+setup          { BEGIN; SET deadlock_timeout = '5s'; }
 step "s1a"     { LOCK TABLE a1 IN SHARE UPDATE EXCLUSIVE MODE; }
 step "s1b"     { LOCK TABLE a2 IN SHARE UPDATE EXCLUSIVE MODE; }
 step "s1c"     { COMMIT; }
 
 session "s2"
-setup          { BEGIN; }
+setup          { BEGIN; SET deadlock_timeout = '100s'; }
 step "s2a"     { LOCK TABLE a2 IN ACCESS SHARE MODE; }
 step "s2b"     { LOCK TABLE a1 IN SHARE UPDATE EXCLUSIVE MODE; }
 step "s2c"     { COMMIT; }
 
 session "s3"
-setup          { BEGIN; }
+setup          { BEGIN; SET deadlock_timeout = '100s'; }
 step "s3a"     { LOCK TABLE a2 IN ACCESS EXCLUSIVE MODE; }
 step "s3c"     { COMMIT; }
 
 session "s4"
-setup          { BEGIN; }
+setup          { BEGIN; SET deadlock_timeout = '100s'; }
 step "s4a"     { LOCK TABLE a2 IN ACCESS EXCLUSIVE MODE; }
 step "s4c"     { COMMIT; }