From 89c59b742a7f89eb598a25b70aaa3ab97381f67d Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Fri, 1 Sep 2017 16:51:55 +0200 Subject: [PATCH] Fix two-phase commit test for recovery mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/test/recovery/t/009_twophase.pl b/src/test/recovery/t/009_twophase.pl index 6c50139572..95f22bc421 100644 --- a/src/test/recovery/t/009_twophase.pl +++ b/src/test/recovery/t/009_twophase.pl @@ -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",