(unnamed)
text/plain
diff --git a/src/test/recovery/t/019_replslot_limit.pl b/src/test/recovery/t/019_replslot_limit.pl
index 4257bd4d35..059003d63a 100644
--- a/src/test/recovery/t/019_replslot_limit.pl
+++ b/src/test/recovery/t/019_replslot_limit.pl
@@ -35,6 +35,11 @@ my $result = $node_primary->safe_psql('postgres',
);
is($result, "t|t|t", 'check the state of non-reserved slot is "unknown"');
+# re-create reserved replication slot before taking backup
+$node_primary->safe_psql('postgres', q[
+ SELECT pg_drop_replication_slot('rep1');
+ SELECT pg_create_physical_replication_slot('rep1', true);
+]);
# Take backup
my $backup_name = 'my_backup';
@@ -265,7 +270,7 @@ log_checkpoints = yes
));
$node_primary2->start;
$node_primary2->safe_psql('postgres',
- "SELECT pg_create_physical_replication_slot('rep1')");
+ "SELECT pg_create_physical_replication_slot('rep1', true)");
$backup_name = 'my_backup2';
$node_primary2->backup($backup_name);
@@ -319,7 +324,7 @@ $node_primary3->append_conf(
));
$node_primary3->start;
$node_primary3->safe_psql('postgres',
- "SELECT pg_create_physical_replication_slot('rep3')");
+ "SELECT pg_create_physical_replication_slot('rep3', true)");
# Take backup
$backup_name = 'my_backup';
$node_primary3->backup($backup_name);
@@ -327,6 +332,14 @@ $node_primary3->backup($backup_name);
my $node_standby3 = PostgreSQL::Test::Cluster->new('standby_3');
$node_standby3->init_from_backup($node_primary3, $backup_name,
has_streaming => 1);
+
+# We will check for walsender process just after. Make sure no
+# walsenders will stay sitting.
+$node_primary3->poll_query_until('postgres',
+ "SELECT count(*) = 0 FROM pg_stat_activity WHERE backend_type = 'walsender'",
+ "t")
+ or die "timed out waiting for wealsender to get out";
+
$node_standby3->append_conf('postgresql.conf', "primary_slot_name = 'rep3'");
$node_standby3->start;
$node_primary3->wait_for_catchup($node_standby3);