Fix race condition in recently-added TAP test for recovery consistency
authorMichael Paquier <michael@paquier.xyz>
Thu, 14 Mar 2019 03:41:45 +0000 (12:41 +0900)
committerMichael Paquier <michael@paquier.xyz>
Thu, 14 Mar 2019 03:41:45 +0000 (12:41 +0900)
A couple of queries are run on the primary to create and fill in a test
table, which gets checked on the standby afterwards.  However the test
was not waiting for the confirmation that the necessary records have
been replayed on the standby, leading to spurious failures.

Per buildfarm member loach.  Thanks to Thomas Munro for the report and
Tom Lane for the failure analysis.

Discussion: https://postgr.es/m/CA+hUKGLUpqG52xtriUz5RpmeKPoEfNxNc-CginG+Cx+X2-Ycew@mail.gmail.com

src/test/recovery/t/016_min_consistency.pl

index 8f1a89c2d3e4a0c78da8976ea4eb9b4e01892e23..454f77f619bce2e0a50b5ecb6fd6337ff90a8033 100644 (file)
@@ -97,6 +97,10 @@ INSERT INTO test1 SELECT generate_series(1, 10000);");
 $primary->safe_psql('postgres', 'CHECKPOINT;');
 $primary->safe_psql('postgres', 'UPDATE test1 SET a = a + 1;');
 
+# Wait for last record to have been replayed on the standby.
+$primary->wait_for_catchup($standby, 'replay',
+              $primary->lsn('insert'));
+
 # Fill in the standby's shared buffers with the data filled in
 # previously.
 $standby->safe_psql('postgres', 'SELECT count(*) FROM test1;');