mirror of
https://github.com/postgres/postgres.git
synced 2025-08-24 09:27:52 +03:00
Disable STARTUP_PROGRESS_TIMEOUT in standby mode.
In standby mode, we don't actually report progress of recovery, but up until now, startup_progress_timeout_handler() nevertheless got called every log_startup_progress_interval seconds. That's an unnecessary expense, so avoid it. Report by Thomas Munro. Patch by Bharath Rupireddy, reviewed by Simon Riggs, Thomas Munro, and me. Back-patch to v15, where the problem was introduced. Discussion: https://www.postgresql.org/message-id/CA%2BhUKGKCHSffAj8zZJKJvNX7ygnQFxVD6wm1d-2j3fVw%2BMafPQ%40mail.gmail.com
This commit is contained in:
@@ -385,6 +385,7 @@ static bool recoveryStopAfter;
|
||||
/* prototypes for local functions */
|
||||
static void ApplyWalRecord(XLogReaderState *xlogreader, XLogRecord *record, TimeLineID *replayTLI);
|
||||
|
||||
static void EnableStandbyMode(void);
|
||||
static void readRecoverySignalFile(void);
|
||||
static void validateRecoveryParameters(void);
|
||||
static bool read_backup_label(XLogRecPtr *checkPointLoc,
|
||||
@@ -469,6 +470,24 @@ XLogRecoveryShmemInit(void)
|
||||
ConditionVariableInit(&XLogRecoveryCtl->recoveryNotPausedCV);
|
||||
}
|
||||
|
||||
/*
|
||||
* A thin wrapper to enable StandbyMode and do other preparatory work as
|
||||
* needed.
|
||||
*/
|
||||
static void
|
||||
EnableStandbyMode(void)
|
||||
{
|
||||
StandbyMode = true;
|
||||
|
||||
/*
|
||||
* To avoid server log bloat, we don't report recovery progress in a
|
||||
* standby as it will always be in recovery unless promoted. We disable
|
||||
* startup progress timeout in standby mode to avoid calling
|
||||
* startup_progress_timeout_handler() unnecessarily.
|
||||
*/
|
||||
disable_startup_progress_timeout();
|
||||
}
|
||||
|
||||
/*
|
||||
* Prepare the system for WAL recovery, if needed.
|
||||
*
|
||||
@@ -602,7 +621,7 @@ InitWalRecovery(ControlFileData *ControlFile, bool *wasShutdown_ptr,
|
||||
*/
|
||||
InArchiveRecovery = true;
|
||||
if (StandbyModeRequested)
|
||||
StandbyMode = true;
|
||||
EnableStandbyMode();
|
||||
|
||||
/*
|
||||
* When a backup_label file is present, we want to roll forward from
|
||||
@@ -739,7 +758,7 @@ InitWalRecovery(ControlFileData *ControlFile, bool *wasShutdown_ptr,
|
||||
{
|
||||
InArchiveRecovery = true;
|
||||
if (StandbyModeRequested)
|
||||
StandbyMode = true;
|
||||
EnableStandbyMode();
|
||||
}
|
||||
|
||||
/* Get the last valid checkpoint record. */
|
||||
@@ -3117,7 +3136,7 @@ ReadRecord(XLogPrefetcher *xlogprefetcher, int emode,
|
||||
(errmsg_internal("reached end of WAL in pg_wal, entering archive recovery")));
|
||||
InArchiveRecovery = true;
|
||||
if (StandbyModeRequested)
|
||||
StandbyMode = true;
|
||||
EnableStandbyMode();
|
||||
|
||||
SwitchIntoArchiveRecovery(xlogreader->EndRecPtr, replayTLI);
|
||||
minRecoveryPoint = xlogreader->EndRecPtr;
|
||||
|
Reference in New Issue
Block a user