From e5a9bcb529c474a07d1aa077665c5fade4c83cfc Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Wed, 19 Oct 2016 12:00:00 -0400 Subject: [PATCH] Use pg_ctl promote -w in TAP tests Switch TAP tests to use the new wait mode of pg_ctl promote. This allows avoiding extra logic with poll_query_until() to be sure that a promoted standby is ready for read-write queries. From: Michael Paquier --- src/bin/pg_rewind/RewindTest.pm | 6 +----- src/test/perl/PostgresNode.pm | 5 +++-- src/test/recovery/t/004_timeline_switch.pl | 5 +---- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/bin/pg_rewind/RewindTest.pm b/src/bin/pg_rewind/RewindTest.pm index c7c3a8f45c..1c482617ad 100644 --- a/src/bin/pg_rewind/RewindTest.pm +++ b/src/bin/pg_rewind/RewindTest.pm @@ -161,12 +161,8 @@ sub promote_standby or die "Timed out while waiting for standby to receive and write WAL"; # Now promote slave and insert some new data on master, this will put - # the master out-of-sync with the standby. Wait until the standby is - # out of recovery mode, and is ready to accept read-write connections. + # the master out-of-sync with the standby. $node_standby->promote; - $node_standby->poll_query_until('postgres', - "SELECT NOT pg_is_in_recovery()") - or die "Timed out while waiting for promotion of standby"; # Force a checkpoint after the promotion. pg_rewind looks at the control # file to determine what timeline the server is on, and that isn't updated diff --git a/src/test/perl/PostgresNode.pm b/src/test/perl/PostgresNode.pm index 6e5a75a050..c1b16ca9e9 100644 --- a/src/test/perl/PostgresNode.pm +++ b/src/test/perl/PostgresNode.pm @@ -723,7 +723,7 @@ sub restart =item $node->promote() -Wrapper for pg_ctl promote +Wrapper for pg_ctl promote -w =cut @@ -735,7 +735,8 @@ sub promote my $logfile = $self->logfile; my $name = $self->name; print "### Promoting node \"$name\"\n"; - TestLib::system_log('pg_ctl', '-D', $pgdata, '-l', $logfile, 'promote'); + TestLib::system_log('pg_ctl', '-D', $pgdata, '-w', '-l', $logfile, + 'promote'); } # Internal routine to enable streaming replication on a standby node. diff --git a/src/test/recovery/t/004_timeline_switch.pl b/src/test/recovery/t/004_timeline_switch.pl index 3ee8df2cdc..5f3b2fe1dd 100644 --- a/src/test/recovery/t/004_timeline_switch.pl +++ b/src/test/recovery/t/004_timeline_switch.pl @@ -57,10 +57,7 @@ recovery_target_timeline='latest' $node_standby_2->restart; # Insert some data in standby 1 and check its presence in standby 2 -# to ensure that the timeline switch has been done. Standby 1 needs -# to exit recovery first before moving on with the test. -$node_standby_1->poll_query_until('postgres', - "SELECT pg_is_in_recovery() <> true"); +# to ensure that the timeline switch has been done. $node_standby_1->safe_psql('postgres', "INSERT INTO tab_int VALUES (generate_series(1001,2000))"); $until_lsn = $node_standby_1->safe_psql('postgres', -- 2.40.0