Fix query in new test to check tables are synced
authorAlvaro Herrera <[email protected]>
Thu, 15 Oct 2020 12:48:36 +0000 (09:48 -0300)
committerAlvaro Herrera <[email protected]>
Thu, 15 Oct 2020 12:48:36 +0000 (09:48 -0300)
Rather than looking for tablesync workers, it is more reliable to see
the sync state of the tables.

Per note from Amit Kapila.
Discussion: https://postgr.es/m/CAA4eK1JSSD7FVwq+_rOme86jUZTQFzjsNU06hQ4-LiRt1xFmSg@mail.gmail.com

src/test/subscription/t/100_bugs.pl

index 7dc8983d6aee73a3dd7682a3e7ecee21f53064fd..d1e407aacb322a37aeee7a0d8c90ef07d4dceefe 100644 (file)
@@ -141,13 +141,13 @@ $node_twoways->safe_psql(
 
 # We cannot rely solely on wait_for_catchup() here; it isn't sufficient
 # when tablesync workers might still be running. So in addition to that,
-# we verify that no tablesync workers appear for the subscription.
+# verify that tables are synced.
 # XXX maybe this should be integrated in wait_for_catchup() itself.
 $node_twoways->wait_for_catchup('testsub');
-$node_twoways->poll_query_until(
-   'd2',
-   "SELECT count(*) FROM pg_stat_subscription WHERE subname = 'testsub' AND relid <> 0",
-   "0");
+my $synced_query =
+  "SELECT count(1) = 0 FROM pg_subscription_rel WHERE srsubstate NOT IN ('r', 's');";
+$node_twoways->poll_query_until('d2', $synced_query)
+  or die "Timed out while waiting for subscriber to synchronize data";
 
 is($node_twoways->safe_psql('d2', "SELECT count(f) FROM t"),
    $rows * 2, "2x$rows rows in t");