mirror of
https://github.com/postgres/postgres.git
synced 2025-11-21 00:42:43 +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:
@@ -314,11 +314,22 @@ startup_progress_timeout_handler(void)
|
||||
startup_progress_timer_expired = true;
|
||||
}
|
||||
|
||||
void
|
||||
disable_startup_progress_timeout(void)
|
||||
{
|
||||
/* Feature is disabled. */
|
||||
if (log_startup_progress_interval == 0)
|
||||
return;
|
||||
|
||||
disable_timeout(STARTUP_PROGRESS_TIMEOUT, false);
|
||||
startup_progress_timer_expired = false;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set the start timestamp of the current operation and enable the timeout.
|
||||
*/
|
||||
void
|
||||
begin_startup_progress_phase(void)
|
||||
enable_startup_progress_timeout(void)
|
||||
{
|
||||
TimestampTz fin_time;
|
||||
|
||||
@@ -326,8 +337,6 @@ begin_startup_progress_phase(void)
|
||||
if (log_startup_progress_interval == 0)
|
||||
return;
|
||||
|
||||
disable_timeout(STARTUP_PROGRESS_TIMEOUT, false);
|
||||
startup_progress_timer_expired = false;
|
||||
startup_progress_phase_start_time = GetCurrentTimestamp();
|
||||
fin_time = TimestampTzPlusMilliseconds(startup_progress_phase_start_time,
|
||||
log_startup_progress_interval);
|
||||
@@ -335,6 +344,21 @@ begin_startup_progress_phase(void)
|
||||
log_startup_progress_interval);
|
||||
}
|
||||
|
||||
/*
|
||||
* A thin wrapper to first disable and then enable the startup progress
|
||||
* timeout.
|
||||
*/
|
||||
void
|
||||
begin_startup_progress_phase(void)
|
||||
{
|
||||
/* Feature is disabled. */
|
||||
if (log_startup_progress_interval == 0)
|
||||
return;
|
||||
|
||||
disable_startup_progress_timeout();
|
||||
enable_startup_progress_timeout();
|
||||
}
|
||||
|
||||
/*
|
||||
* Report whether startup progress timeout has occurred. Reset the timer flag
|
||||
* if it did, set the elapsed time to the out parameters and return true,
|
||||
|
||||
Reference in New Issue
Block a user