mirror of
https://github.com/postgres/postgres.git
synced 2026-04-21 22:28:15 -04:00
Add assertions checking for the startup process in WAL replay routines
These assertions may prove to become useful to make sure that no process other than the startup process calls the routines where these checks are added, as we expect that these do not interfere with a WAL receiver switched to a "stopping" state by a startup process. The assumption that only the startup process can use this code has existed for many years, without a check enforcing it. Reviewed-by: Xuneng Zhou <xunengzhou@gmail.com> Discussion: https://postgr.es/m/aQmGeVLYl51y1m_0@paquier.xyz
This commit is contained in:
parent
dae00f333b
commit
2fc3107962
2 changed files with 6 additions and 0 deletions
|
|
@ -9518,6 +9518,8 @@ GetOldestRestartPoint(XLogRecPtr *oldrecptr, TimeLineID *oldtli)
|
|||
void
|
||||
XLogShutdownWalRcv(void)
|
||||
{
|
||||
Assert(AmStartupProcess() || !IsUnderPostmaster);
|
||||
|
||||
ShutdownWalRcv();
|
||||
ResetInstallXLogFileSegmentActive();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue