Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Stabilize subscription stats test.
authorMasahiko Sawada <msawada@postgresql.org>
Fri, 8 Sep 2023 13:50:56 +0000 (22:50 +0900)
committerMasahiko Sawada <msawada@postgresql.org>
Fri, 8 Sep 2023 13:50:56 +0000 (22:50 +0900)
The new test added by commit 68a59f9e9 disables the subscription and
manually drops the associated replication slot. However, since
disabling the subsubscription doesn't wait for a walsender to release
the replication slot and exit, pg_drop_replication_slot() could
fail. Avoid failure by adding a wait for the replication slot to
become inactive.

Reported-by: Hou Zhijie, as per buildfarm
Reviewed-by: Hou Zhijie
Discussion: https://postgr.es/m/OS0PR01MB571682316378379AA34854F694E9A%40OS0PR01MB5716.jpnprd01.prod.outlook.com
Backpatch-through: 15

src/test/subscription/t/026_stats.pl

index 0bcda006cd7ed44384751d7f04dee6590937f7c3..a033588008fcae2363dbe90f0bab8f45b9e87d9a 100644 (file)
@@ -285,6 +285,14 @@ is( $node_subscriber->safe_psql(
        $db, qq(SELECT pg_stat_have_stats('subscription', 0, $sub2_oid))),
    qq(f),
    qq(Subscription stats for subscription '$sub2_name' should be removed.));
+
+# Since disabling subscription doesn't wait for walsender to release the replication
+# slot and exit, wait for the slot to become inactive.
+$node_publisher->poll_query_until(
+   $db,
+   qq(SELECT EXISTS (SELECT 1 FROM pg_replication_slots WHERE slot_name = '$sub2_name' AND active_pid IS NULL))
+) or die "slot never became inactive";
+
 $node_publisher->safe_psql($db,
    qq(SELECT pg_drop_replication_slot('$sub2_name')));