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
This commit is contained in:
Simon Riggs 2013-02-07 16:33:05 +00:00
parent e1c1e21732
commit 072521b8c8

View File

@ -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;