Fix instability in subscription regression test.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 20 Sep 2017 15:28:34 +0000 (11:28 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 20 Sep 2017 15:28:34 +0000 (11:28 -0400)
005_encoding.pl neglected to wait for the subscriber's initial
synchronization to happen.  While we have not seen this fail in
the buildfarm, it's pretty easy to demonstrate there's an issue
by hacking logicalrep_worker_launch() to fail most of the time.

Michael Paquier

Discussion: https://postgr.es/m/27032.1505749806@sss.pgh.pa.us

src/test/subscription/t/005_encoding.pl

index 26a40c0b7f133361271795d7a559e4e52a21911d..2b0c47c07d3e7ce4448842e53774ae9e337b07d8 100644 (file)
@@ -41,6 +41,12 @@ $node_subscriber->safe_psql('postgres',
 
 wait_for_caught_up($node_publisher, $appname);
 
+# Wait for initial sync to finish as well
+my $synced_query =
+   "SELECT count(1) = 0 FROM pg_subscription_rel WHERE srsubstate NOT IN ('s', 'r');";
+$node_subscriber->poll_query_until('postgres', $synced_query)
+  or die "Timed out while waiting for subscriber to synchronize data";
+
 $node_publisher->safe_psql('postgres',
    q{INSERT INTO test1 VALUES (1, E'Mot\xc3\xb6rhead')}); # hand-rolled UTF-8