From 072521b8c804cc15800e503244661d17c6202ccc Mon Sep 17 00:00:00 2001 From: Simon Riggs Date: Thu, 7 Feb 2013 16:33:05 +0000 Subject: [PATCH] Rely only on checkpoint 1 at end of recovery. Searching for checkpoint 2 (previous) is not correct in all cases. Bug report from Heikki Linnakangas --- src/backend/access/transam/xlog.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index d644e3982c..f0df2977a1 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -5777,7 +5777,13 @@ StartupXLOG(void) if (fast_promote) { checkPointLoc = ControlFile->prevCheckPoint; - record = ReadCheckpointRecord(xlogreader, checkPointLoc, 2, false); + + /* + * Confirm the last checkpoint is available for us to recover + * from if we fail. Note that we don't check for the secondary + * checkpoint since that isn't available in most base backups. + */ + record = ReadCheckpointRecord(xlogreader, checkPointLoc, 1, false); if (record != NULL) { checkpoint_wait = false;