Hi, On 2024-08-12 12:55:00 +0300, Heikki Linnakangas wrote: > @@ -2864,6 +2777,8 @@ PostmasterStateMachine(void) > */ > if (pmState == PM_STOP_BACKENDS) > { > + uint32 targetMask; > + > /* > * Forget any pending requests for background workers, since > we're no > * longer willing to launch any new workers. (If additional > requests > @@ -2871,29 +2786,27 @@ PostmasterStateMachine(void) > */ > ForgetUnstartedBackgroundWorkers(); > > - /* Signal all backend children except walsenders and dead-end > backends */ > - SignalSomeChildren(SIGTERM, > - BACKEND_TYPE_ALL & ~(1 << > B_WAL_SENDER | 1 << B_DEAD_END_BACKEND)); > + /* Signal all backend children except walsenders */ > + /* dead-end children are not signalled yet */ > + targetMask = (1 << B_BACKEND); > + targetMask |= (1 << B_BG_WORKER); > + > /* and the autovac launcher too */ > - if (AutoVacPID != 0) > - signal_child(AutoVacPID, SIGTERM); > + targetMask |= (1 << B_AUTOVAC_LAUNCHER); > /* and the bgwriter too */ > - if (BgWriterPID != 0) > - signal_child(BgWriterPID, SIGTERM); > + targetMask |= (1 << B_BG_WRITER); > /* and the walwriter too */ > - if (WalWriterPID != 0) > - signal_child(WalWriterPID, SIGTERM); > + targetMask |= (1 << B_WAL_WRITER); > /* If we're in recovery, also stop startup and walreceiver > procs */ > - if (StartupPID != 0) > - signal_child(StartupPID, SIGTERM); > - if (WalReceiverPID != 0) > - signal_child(WalReceiverPID, SIGTERM); > - if (WalSummarizerPID != 0) > - signal_child(WalSummarizerPID, SIGTERM); > - if (SlotSyncWorkerPID != 0) > - signal_child(SlotSyncWorkerPID, SIGTERM); > + targetMask |= (1 << B_STARTUP); > + targetMask |= (1 << B_WAL_RECEIVER); > + > + targetMask |= (1 << B_WAL_SUMMARIZER); > + targetMask |= (1 << B_SLOTSYNC_WORKER); > /* checkpointer, archiver, stats, and syslogger may continue > for now */ > > + SignalSomeChildren(SIGTERM, targetMask); > + > /* Now transition to PM_WAIT_BACKENDS state to wait for them to > die */ > pmState = PM_WAIT_BACKENDS; > }
I think this might now omit shutting down at least autovac workers, which afaict previously were included. Greetings, Andres Freund