Fix the tests added by commit ac4645c015.
authorAmit Kapila <akapila@postgresql.org>
Tue, 6 Apr 2021 09:28:52 +0000 (14:58 +0530)
committerAmit Kapila <akapila@postgresql.org>
Tue, 6 Apr 2021 09:28:52 +0000 (14:58 +0530)
In the tests, after disabling the subscription, we were not waiting for
the replication connection to drop from the publisher. So when the test
was trying to use the same slot to fetch the messages via SQL API, it
sometimes gives an error that the replication slot is active for other
PID.

Per buildfarm.

src/test/subscription/t/020_messages.pl

index d9123ed3ef1fb1362946be181e9215ab5e9ed8f6..c8be26be736c384fc6268f35a7b6ed07bfbe8228 100644 (file)
@@ -34,6 +34,10 @@ $node_subscriber->safe_psql('postgres',
 # Ensure a transactional logical decoding message shows up on the slot
 $node_subscriber->safe_psql('postgres', "ALTER SUBSCRIPTION tap_sub DISABLE");
 
+# wait for the replication connection to drop from the publisher
+$node_publisher->poll_query_until('postgres',
+       'SELECT COUNT(*) FROM pg_catalog.pg_stat_replication', 0);
+
 $node_publisher->safe_psql('postgres',
        "SELECT pg_logical_emit_message(true, 'pgoutput', 'a transactional message')"
 );
@@ -85,6 +89,10 @@ $node_publisher->wait_for_catchup('tap_sub');
 # ensure a non-transactional logical decoding message shows up on the slot
 $node_subscriber->safe_psql('postgres', "ALTER SUBSCRIPTION tap_sub DISABLE");
 
+# wait for the replication connection to drop from the publisher
+$node_publisher->poll_query_until('postgres',
+       'SELECT COUNT(*) FROM pg_catalog.pg_stat_replication', 0);
+
 $node_publisher->safe_psql('postgres', "INSERT INTO tab_test VALUES (1)");
 
 my $message_lsn = $node_publisher->safe_psql('postgres',