diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 53a20b1e60..e3d5e106b9 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -6846,13 +6846,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;