From cef956ee3bed4af0eb37269aadcc458b9ee45d8a Mon Sep 17 00:00:00 2001 From: shipixian Date: Mon, 19 Aug 2024 12:08:08 +0800 Subject: [PATCH] Fix walreceiver set incorrect flushedUpto when switching primary Signed-off-by: shipixian --- src/backend/replication/walreceiverfuncs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend/replication/walreceiverfuncs.c b/src/backend/replication/walreceiverfuncs.c index 6a693d854c49..07ff4b6968d2 100644 --- a/src/backend/replication/walreceiverfuncs.c +++ b/src/backend/replication/walreceiverfuncs.c @@ -312,10 +312,10 @@ RequestXLogStreaming(TimeLineID tli, XLogRecPtr recptr, const char *conninfo, walrcv->startTime = now; /* - * If this is the first startup of walreceiver (on this timeline), + * If this is the first startup of walreceiver (on this timeline) or recptr lt last flushedLsn, * initialize flushedUpto and latestChunkStart to the starting point. */ - if (walrcv->receiveStart == 0 || walrcv->receivedTLI != tli) + if (walrcv->receiveStart == 0 || walrcv->receivedTLI != tli || recptr < walrcv->receiveStart) { walrcv->flushedUpto = recptr; walrcv->receivedTLI = tli;