0001-Add-assertions-checking-after-startup-process.patch
text/x-diff
Filename: 0001-Add-assertions-checking-after-startup-process.patch
Type: text/x-diff
Part: 0
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch 0001
Subject: Add assertions checking after startup process
| File | + | − |
|---|---|---|
| src/backend/access/transam/xlog.c | 2 | 0 |
| src/backend/access/transam/xlogrecovery.c | 4 | 0 |
From 0a6b5d1eba56ba4614f2654155aea4f6a640dcbc Mon Sep 17 00:00:00 2001
From: Michael Paquier <michael@paquier.xyz>
Date: Tue, 4 Nov 2025 13:33:01 +0900
Subject: [PATCH] Add assertions checking after startup process
These are useful to make sure that no process other than the startup
process calls the following routines, as we expect that these do not
interfere with a WAL receiver switched to a "stopping" state by a
startup process.
---
src/backend/access/transam/xlog.c | 2 ++
src/backend/access/transam/xlogrecovery.c | 4 ++++
2 files changed, 6 insertions(+)
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index 8c0d9dbfa8b6..9900e3e0179f 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -9518,6 +9518,8 @@ GetOldestRestartPoint(XLogRecPtr *oldrecptr, TimeLineID *oldtli)
void
XLogShutdownWalRcv(void)
{
+ Assert(AmStartupProcess() || !IsUnderPostmaster);
+
ShutdownWalRcv();
ResetInstallXLogFileSegmentActive();
}
diff --git a/src/backend/access/transam/xlogrecovery.c b/src/backend/access/transam/xlogrecovery.c
index 0a5ae5050c46..93c50831b260 100644
--- a/src/backend/access/transam/xlogrecovery.c
+++ b/src/backend/access/transam/xlogrecovery.c
@@ -3148,6 +3148,8 @@ ReadRecord(XLogPrefetcher *xlogprefetcher, int emode,
XLogReaderState *xlogreader = XLogPrefetcherGetReader(xlogprefetcher);
XLogPageReadPrivate *private = (XLogPageReadPrivate *) xlogreader->private_data;
+ Assert(AmStartupProcess() || !IsUnderPostmaster);
+
/* Pass through parameters to XLogPageRead */
private->fetching_ckpt = fetching_ckpt;
private->emode = emode;
@@ -3319,6 +3321,8 @@ XLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr, int reqLen,
int r;
instr_time io_start;
+ Assert(AmStartupProcess() || !IsUnderPostmaster);
+
XLByteToSeg(targetPagePtr, targetSegNo, wal_segment_size);
targetPageOff = XLogSegmentOffset(targetPagePtr, wal_segment_size);
--
2.51.0