Reset InstallXLogFileSegmentActive after walreceiver self-initiated exit.
authorNoah Misch <noah@leadboat.com>
Thu, 15 Sep 2022 13:45:23 +0000 (06:45 -0700)
committerNoah Misch <noah@leadboat.com>
Thu, 15 Sep 2022 13:45:23 +0000 (06:45 -0700)
After commit cc2c7d65fc27e877c9f407587b0b92d46cd6dd16 added this flag,
failure to reset it caused assertion failures.  In non-assert builds, it
made the system fail to achieve the objectives listed in that commit;
chiefly, we might emit a spurious log message.  Back-patch to v15, where
that commit first appeared.

Bharath Rupireddy and Kyotaro Horiguchi.  Reviewed by Dilip Kumar,
Nathan Bossart and Michael Paquier.  Reported by Dilip Kumar.

Discussion: https://postgr.es/m/CAFiTN-sE3ry=ycMPVtC+Djw4Fd7gbUGVv_qqw6qfzp=JLvqT3g@mail.gmail.com

src/backend/access/transam/xlogrecovery.c

index 30661bdad63ab1080f1e0b08d30373ee1bd6f922..b41e68266438e4de2ce3046e764d1c131f47f13c 100644 (file)
@@ -3535,8 +3535,7 @@ WaitForWALToBecomeAvailable(XLogRecPtr RecPtr, bool randAccess,
                                         * walreceiver is not active, so that it won't overwrite
                                         * WAL that we restore from archive.
                                         */
-                                       if (WalRcvStreaming())
-                                               XLogShutdownWalRcv();
+                                       XLogShutdownWalRcv();
 
                                        /*
                                         * Before we sleep, re-scan for possible new timelines if