On Tue, Nov 15, 2022 at 5:49 PM Nathan Bossart <nathandboss...@gmail.com> wrote:
> Another option might be to just force initial reply/feedback messages when
> streaming starts.  The attached patch improves src/test/recovery test
> runtime just like the previous one I posted.

Yeah, looks good in my tests.  I think we just need to make it
conditional so we don't force it if someone has
wal_receiver_status_interval disabled.
From 25f5bd221a683ea93f4c19fdfc03924a9492984a Mon Sep 17 00:00:00 2001
From: Thomas Munro <tmu...@postgresql.org>
Date: Wed, 16 Nov 2022 16:00:07 +1300
Subject: [PATCH] Fix slowdown in TAP tests due to recent walreceiver change.

Commit 05a7be93 changed the timing of the first reply sent by a
walreceiver, which caused some TAP tests to wait in wait_for_catchup for
~10 seconds (wal_receiver_status_interval).  Fix by sending an initial
reply message immediately, and do the same for HS for consistency.

Author: Nathan Bossart <nathandboss...@gmail.com>
Discussion: https://postgr.es/m/742545.1668377284%40sss.pgh.pa.us
---
 src/backend/replication/walreceiver.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/backend/replication/walreceiver.c b/src/backend/replication/walreceiver.c
index 8bd2ba37dd..87ee6b948c 100644
--- a/src/backend/replication/walreceiver.c
+++ b/src/backend/replication/walreceiver.c
@@ -433,6 +433,11 @@ WalReceiverMain(void)
 			for (int i = 0; i < NUM_WALRCV_WAKEUPS; ++i)
 				WalRcvComputeNextWakeup(i, now);
 
+			/* Send initial reply/feedback messages. */
+			if (wal_receiver_status_interval > 0)
+				XLogWalRcvSendReply(true, false);
+			XLogWalRcvSendHSFeedback(true);
+
 			/* Loop until end-of-streaming or error */
 			for (;;)
 			{
-- 
2.35.1

Reply via email to