From 0292d14a62b72b38197d434d85ee2c6a7f2cec00 Mon Sep 17 00:00:00 2001 From: Bertrand Drouvot Date: Tue, 9 May 2023 06:43:59 +0000 Subject: [PATCH v2] fix retaining WAL test --- .../t/035_standby_logical_decoding.pl | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) 100.0% src/test/recovery/t/ diff --git a/src/test/recovery/t/035_standby_logical_decoding.pl b/src/test/recovery/t/035_standby_logical_decoding.pl index ad1def2474..2b4a688330 100644 --- a/src/test/recovery/t/035_standby_logical_decoding.pl +++ b/src/test/recovery/t/035_standby_logical_decoding.pl @@ -276,20 +276,6 @@ $node_standby->append_conf('postgresql.conf', max_replication_slots = 5]); $node_standby->start; $node_primary->wait_for_replay_catchup($node_standby); -$node_standby->safe_psql('testdb', qq[SELECT * FROM pg_create_physical_replication_slot('$standby_physical_slotname');]); - -####################### -# Initialize cascading standby node -####################### -$node_standby->backup($backup_name); -$node_cascading_standby->init_from_backup( - $node_standby, $backup_name, - has_streaming => 1, - has_restoring => 1); -$node_cascading_standby->append_conf('postgresql.conf', - qq[primary_slot_name = '$standby_physical_slotname']); -$node_cascading_standby->start; -$node_standby->wait_for_replay_catchup($node_cascading_standby, $node_primary); ####################### # Initialize subscriber node @@ -503,9 +489,6 @@ check_slots_conflicting_status(1); # Verify that invalidated logical slots do not lead to retaining WAL. ################################################## -# Wait for the cascading standby to catchup before removing the WAL file(s) -$node_standby->wait_for_replay_catchup($node_cascading_standby, $node_primary); - # Get the restart_lsn from an invalidated slot my $restart_lsn = $node_standby->safe_psql('postgres', "SELECT restart_lsn from pg_replication_slots WHERE slot_name = 'vacuum_full_activeslot' and conflicting is true;" @@ -777,9 +760,26 @@ $node_standby->reload; $node_primary->psql('postgres', q[CREATE DATABASE testdb]); $node_primary->safe_psql('testdb', qq[CREATE TABLE decoding_test(x integer, y text);]); -# Wait for the standby to catchup before creating the slots +# Wait for the standby to catchup before initializing the cascading standby $node_primary->wait_for_replay_catchup($node_standby); +# Create a physical replication slot on the standby. +# Keep this step after the "Verify that invalidated logical slots do not lead +# to retaining WAL" test (as the physical slot on the standby could prevent the +# WAL file removal). +$node_standby->safe_psql('testdb', qq[SELECT * FROM pg_create_physical_replication_slot('$standby_physical_slotname');]); + +# Initialize cascading standby node +$node_standby->backup($backup_name); +$node_cascading_standby->init_from_backup( + $node_standby, $backup_name, + has_streaming => 1, + has_restoring => 1); +$node_cascading_standby->append_conf('postgresql.conf', + qq[primary_slot_name = '$standby_physical_slotname' + hot_standby_feedback = on]); +$node_cascading_standby->start; + # create the logical slots create_logical_slots($node_standby, 'promotion_'); -- 2.34.1