diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 7399fd45c81..a36354feb9b 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -5457,13 +5457,17 @@ StartupXLOG(void) /* * Initialize shared variables for tracking progress of WAL replay, - * as if we had just replayed the record before the REDO location. + * as if we had just replayed the record before the REDO location + * (or the checkpoint record itself, if it's a shutdown checkpoint). */ SpinLockAcquire(&xlogctl->info_lck); - xlogctl->replayEndRecPtr = checkPoint.redo; + if (checkPoint.redo < RecPtr) + xlogctl->replayEndRecPtr = checkPoint.redo; + else + xlogctl->replayEndRecPtr = EndRecPtr; xlogctl->replayEndTLI = ThisTimeLineID; - xlogctl->lastReplayedEndRecPtr = checkPoint.redo; - xlogctl->lastReplayedTLI = ThisTimeLineID; + xlogctl->lastReplayedEndRecPtr = xlogctl->replayEndRecPtr; + xlogctl->lastReplayedTLI = xlogctl->replayEndTLI; xlogctl->recoveryLastXTime = 0; xlogctl->currentChunkStartTime = 0; xlogctl->recoveryPause = false;