unlink(tmppath);
}
- XLogFileName(tmppath, ThisTimeLineID, log, seg);
- elog(DEBUG2, "done creating and filling new WAL file %s", tmppath);
+ elog(DEBUG2, "done creating and filling new WAL file");
/* Set flag to tell caller there was no existent file */
*use_existent = false;
case BgWriterProcess:
/* don't set signals, bgwriter has its own agenda */
- InitXLOGAccess();
+ /* don't call InitXLOGAccess(), bgwriter does it itself */
BackgroundWriterMain();
proc_exit(1); /* should never return */
* whether to perform a checkpoint or not, to be sure that we
* perform a real checkpoint and not a restartpoint, if someone
* (like the startup process!) requested a checkpoint immediately
- * after exiting recovery.
+ * after exiting recovery. And we must have the right TimeLineID
+ * when we perform a checkpoint.
*/
if (BgWriterRecoveryMode && !IsRecoveryProcessingMode())
{
elog(DEBUG1, "bgwriter changing from recovery to normal mode");
-
+
InitXLOGAccess();
BgWriterRecoveryMode = false;
}
pg_time_t now;
pg_time_t last_time;
- if (XLogArchiveTimeout <= 0 || !IsRecoveryProcessingMode())
+ if (XLogArchiveTimeout <= 0 || IsRecoveryProcessingMode())
return;
now = (pg_time_t) time(NULL);