Hi, 2018-08-29 1:24 GMT+02:00 Michael Paquier <mich...@paquier.xyz>:
> I have been studying your patch, but it seems to me that this is not > complete as other processes could have been started before switching > from PM_STARTUP to PM_RECOVERY. I am talking here about the bgwriter > and the checkpointer as well. Shouldn't we switch pmState to > PM_WAIT_BACKENDS? Your patch is missing that. Yeah, good catch, it starts checkpointer, bgwriter and in some cases even archiver processes (when archive_mode=always) while pmState is still equaled PM_START. Please find attached the new version of the fix. Regards, -- Alexander Kukushkin
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index a4b53b33cd..2215ebbb5a 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -2685,7 +2685,7 @@ pmdie(SIGNAL_ARGS) signal_child(BgWriterPID, SIGTERM); if (WalReceiverPID != 0) signal_child(WalReceiverPID, SIGTERM); - if (pmState == PM_RECOVERY) + if (pmState == PM_STARTUP || pmState == PM_RECOVERY) { SignalSomeChildren(SIGTERM, BACKEND_TYPE_BGWORKER);