From d3fbef3aee30b437bb092215d5a930bf03fcb64b Mon Sep 17 00:00:00 2001
From: Hayato Kuroda <kuroda.hayato@fujitsu.com>
Date: Fri, 31 Jul 2026 18:10:14 +0900
Subject: [PATCH] Make 030_pg_recvlogical robust

The test assumed that OS assignes the different PID for walsenders
---
 src/bin/pg_basebackup/t/030_pg_recvlogical.pl | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/bin/pg_basebackup/t/030_pg_recvlogical.pl b/src/bin/pg_basebackup/t/030_pg_recvlogical.pl
index 5e3e36cc4f3..65bbdf76c5c 100644
--- a/src/bin/pg_basebackup/t/030_pg_recvlogical.pl
+++ b/src/bin/pg_basebackup/t/030_pg_recvlogical.pl
@@ -198,16 +198,17 @@ my $recv = IPC::Run::start(
 # Wait for pg_recvlogical to receive and write the first INSERT
 my $first_ins = wait_for_file($outfile, qr/INSERT/);
 
+my $log_offset = -s $node->logfile;
+
 # Terminate the walsender to force pg_recvlogical to reconnect
-my $backend_pid = $node->safe_psql('postgres',
-	"SELECT active_pid FROM pg_replication_slots WHERE slot_name = 'reconnect_test'"
+$node->safe_psql('postgres',
+	"SELECT pg_terminate_backend(active_pid) FROM pg_replication_slots WHERE slot_name = 'reconnect_test'"
 );
-$node->safe_psql('postgres', "SELECT pg_terminate_backend($backend_pid)");
 
 # Wait for pg_recvlogical to reconnect
-$node->poll_query_until('postgres',
-	"SELECT active_pid IS NOT NULL AND active_pid != $backend_pid FROM pg_replication_slots WHERE slot_name = 'reconnect_test'"
-) or die "Timed out while waiting for pg_recvlogical to reconnect";
+$node->wait_for_log(
+	qr/START_REPLICATION SLOT \"reconnect_test\" LOGICAL/,
+	$log_offset);
 
 # Insert the second record for this test
 $node->safe_psql('postgres', 'INSERT INTO test_table VALUES (2)');
-- 
2.52.0

