aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/transam/xlog.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/access/transam/xlog.c')
-rw-r--r--src/backend/access/transam/xlog.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index 5a585f60d0b..418054066d1 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -5691,6 +5691,10 @@ recoveryStopsHere(XLogRecord *record, bool *includeThis)
static void
recoveryPausesHere(void)
{
+ ereport(LOG,
+ (errmsg("recovery has paused"),
+ errhint("Execute pg_xlog_replay_resume() to continue.")));
+
while (RecoveryIsPaused())
{
pg_usleep(1000000L); /* 1000 ms */
@@ -6357,13 +6361,6 @@ StartupXLOG(void)
StandbyRecoverPreparedTransactions(false);
}
}
- else
- {
- /*
- * Must not pause unless we are going to enter Hot Standby.
- */
- recoveryPauseAtTarget = false;
- }
/* Initialize resource managers */
for (rmid = 0; rmid <= RM_MAX_ID; rmid++)
@@ -6485,11 +6482,11 @@ StartupXLOG(void)
*/
if (recoveryStopsHere(record, &recoveryApply))
{
- if (recoveryPauseAtTarget)
+ /*
+ * Pause only if users can connect to send a resume message
+ */
+ if (recoveryPauseAtTarget && standbyState == STANDBY_SNAPSHOT_READY)
{
- ereport(LOG,
- (errmsg("recovery has paused"),
- errhint("Execute pg_xlog_replay_resume() to continue.")));
SetRecoveryPause(true);
recoveryPausesHere();
}
@@ -6522,7 +6519,10 @@ StartupXLOG(void)
recoveryPause = xlogctl->recoveryPause;
SpinLockRelease(&xlogctl->info_lck);
- if (recoveryPause)
+ /*
+ * Pause only if users can connect to send a resume message
+ */
+ if (recoveryPause && standbyState == STANDBY_SNAPSHOT_READY)
recoveryPausesHere();
/*