another-way.patch
application/octet-stream
Filename: another-way.patch
Type: application/octet-stream
Part: 0
Patch
Format: unified
| File | + | − |
|---|---|---|
| src/backend/access/transam/xlogrecovery.c | 8 | 5 |
| src/backend/postmaster/startup.c | 13 | 1 |
diff --git a/src/backend/access/transam/xlogrecovery.c b/src/backend/access/transam/xlogrecovery.c
index cb07694aea..271a07498f 100644
--- a/src/backend/access/transam/xlogrecovery.c
+++ b/src/backend/access/transam/xlogrecovery.c
@@ -1645,17 +1645,20 @@ PerformWalRecovery(void)
LSN_FORMAT_ARGS(xlogreader->ReadRecPtr))));
/* Prepare to report progress of the redo phase. */
- if (!StandbyMode)
- begin_startup_progress_phase();
+ begin_startup_progress_phase();
/*
* main redo apply loop
*/
do
{
- if (!StandbyMode)
- ereport_startup_progress("redo in progress, elapsed time: %ld.%02d s, current LSN: %X/%X",
- LSN_FORMAT_ARGS(xlogreader->ReadRecPtr));
+ /*
+ * If StandbyMode = true, then this will not emit messages. If it
+ * is false now but becomes true later, this will stop emitting
+ * messages when it becomes true.
+ */
+ ereport_startup_progress("redo in progress, elapsed time: %ld.%02d s, current LSN: %X/%X",
+ LSN_FORMAT_ARGS(xlogreader->ReadRecPtr));
#ifdef WAL_DEBUG
if (XLOG_DEBUG ||
diff --git a/src/backend/postmaster/startup.c b/src/backend/postmaster/startup.c
index f99186eab7..7c7be7694d 100644
--- a/src/backend/postmaster/startup.c
+++ b/src/backend/postmaster/startup.c
@@ -350,6 +350,19 @@ has_startup_progress_timeout_expired(long *secs, int *usecs)
/* No timeout has occurred. */
if (!startup_progress_timer_expired)
return false;
+ startup_progress_timer_expired = false;
+
+ /*
+ * If we're in standby mode, we don't regard ourselves as still starting
+ * up, since standby mode is a state that is intendeded to persist
+ * indefinitely. So, in that case, don't log a message, and disable the
+ * timeout to prevent future wakeups.
+ */
+ if (StandbyMode)
+ {
+ disable_timeout(STARTUP_PROGRESS_TIMEOUT, false);
+ return false;
+ }
/* Calculate the elapsed time. */
now = GetCurrentTimestamp();
@@ -357,7 +370,6 @@ has_startup_progress_timeout_expired(long *secs, int *usecs)
*secs = seconds;
*usecs = useconds;
- startup_progress_timer_expired = false;
return true;
}