]> granicus.if.org Git - postgresql/commitdiff
Fix two-phase commit test for recovery mode
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Fri, 1 Sep 2017 14:51:55 +0000 (16:51 +0200)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Fri, 1 Sep 2017 14:51:55 +0000 (16:51 +0200)
The original code had a race condition because it never ensured the
standby was caught up before proceeding; add a wait similar to every
other place that does this.

Author: MichaĆ«l Paquier
Discussion: https://postgr.es/m/CAB7nPqTm9p+LCm1mVJYvgpwagRK+uibT-pKq0O2-paOWxT62jw@mail.gmail.com

src/test/recovery/t/009_twophase.pl

index 6c501395722af8ef7de2bdcf339b977b90fd8cd4..95f22bc4210b04ee1adfdee955836a173b382a69 100644 (file)
@@ -331,6 +331,14 @@ $cur_master->psql(
        CHECKPOINT;
        COMMIT PREPARED 'xact_009_13';");
 
+# Ensure that last transaction is replayed on standby.
+my $cur_master_lsn =
+       $cur_master->safe_psql('postgres', "SELECT pg_current_wal_lsn()");
+my $caughtup_query =
+       "SELECT '$cur_master_lsn'::pg_lsn <= pg_last_wal_replay_lsn()";
+$cur_standby->poll_query_until('postgres', $caughtup_query)
+  or die "Timed out while waiting for standby to catch up";
+
 $cur_standby->psql(
        'postgres',
        "SELECT count(*) FROM t_009_tbl2",