mirror of
https://github.com/postgres/postgres.git
synced 2025-11-07 19:06:32 +03:00
Run checkpointer and bgwriter in crash recovery.
Start up the checkpointer and bgwriter during crash recovery (except in
--single mode), as we do for replication. This wasn't done back in
commit cdd46c76 out of caution. Now it seems like a better idea to make
the environment as similar as possible in both cases. There may also be
some performance advantages.
Reviewed-by: Robert Haas <robertmhaas@gmail.com>
Reviewed-by: Aleksander Alekseev <aleksander@timescale.com>
Tested-by: Jakub Wartak <Jakub.Wartak@tomtom.com>
Discussion: https://postgr.es/m/CA%2BhUKGJ8NRsqgkZEnsnRc2MFROBV-jCnacbYvtpptK2A9YYp9Q%40mail.gmail.com
This commit is contained in:
@@ -1403,6 +1403,12 @@ PostmasterMain(int argc, char *argv[])
|
||||
*/
|
||||
AddToDataDirLockFile(LOCK_FILE_LINE_PM_STATUS, PM_STATUS_STARTING);
|
||||
|
||||
/* Start bgwriter and checkpointer so they can help with recovery */
|
||||
if (CheckpointerPID == 0)
|
||||
CheckpointerPID = StartCheckpointer();
|
||||
if (BgWriterPID == 0)
|
||||
BgWriterPID = StartBackgroundWriter();
|
||||
|
||||
/*
|
||||
* We're ready to rock and roll...
|
||||
*/
|
||||
@@ -1765,7 +1771,7 @@ ServerLoop(void)
|
||||
* fails, we'll just try again later. Likewise for the checkpointer.
|
||||
*/
|
||||
if (pmState == PM_RUN || pmState == PM_RECOVERY ||
|
||||
pmState == PM_HOT_STANDBY)
|
||||
pmState == PM_HOT_STANDBY || pmState == PM_STARTUP)
|
||||
{
|
||||
if (CheckpointerPID == 0)
|
||||
CheckpointerPID = StartCheckpointer();
|
||||
@@ -5161,15 +5167,6 @@ sigusr1_handler(SIGNAL_ARGS)
|
||||
FatalError = false;
|
||||
AbortStartTime = 0;
|
||||
|
||||
/*
|
||||
* Crank up the background tasks. It doesn't matter if this fails,
|
||||
* we'll just try again later.
|
||||
*/
|
||||
Assert(CheckpointerPID == 0);
|
||||
CheckpointerPID = StartCheckpointer();
|
||||
Assert(BgWriterPID == 0);
|
||||
BgWriterPID = StartBackgroundWriter();
|
||||
|
||||
/*
|
||||
* Start the archiver if we're responsible for (re-)archiving received
|
||||
* files.
|
||||
|
||||
Reference in New Issue
Block a user