Thread: 'Shutdown <= SmartShutdown' check while launching processes in postmaster.
Hi hackers, I would like to know that why we have 'Shutdown <= SmartShutdown' check before launching few processes (WalReceiver, WalSummarizer, AutoVacuum worker) while rest of the processes (BGWriter, WalWriter, Checkpointer, Archiver etc) do not have any such check. If I have to launch a new process, what shall be the criteria to decide if I need this check? Looking forward to your expert advice. thanks Shveta
shveta malik <shveta.malik@gmail.com> writes: > I would like to know that why we have 'Shutdown <= SmartShutdown' > check before launching few processes (WalReceiver, WalSummarizer, > AutoVacuum worker) while rest of the processes (BGWriter, WalWriter, > Checkpointer, Archiver etc) do not have any such check. If I have to > launch a new process, what shall be the criteria to decide if I need > this check? Children that are stopped by the "if (pmState == PM_STOP_BACKENDS)" stanza in PostmasterStateMachine should not be allowed to start again later if we are trying to shut down. (But "smart" shutdown doesn't enforce that, since it's a very weak state that only prohibits new client sessions.) The processes that are allowed to continue beyond that point are ones that are needed to perform the shutdown checkpoint, or useful to make it finish faster. regards, tom lane
Re: 'Shutdown <= SmartShutdown' check while launching processes in postmaster.
From
shveta malik
Date:
On Wed, Feb 21, 2024 at 10:01 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > > shveta malik <shveta.malik@gmail.com> writes: > > I would like to know that why we have 'Shutdown <= SmartShutdown' > > check before launching few processes (WalReceiver, WalSummarizer, > > AutoVacuum worker) while rest of the processes (BGWriter, WalWriter, > > Checkpointer, Archiver etc) do not have any such check. If I have to > > launch a new process, what shall be the criteria to decide if I need > > this check? > > Children that are stopped by the "if (pmState == PM_STOP_BACKENDS)" > stanza in PostmasterStateMachine should not be allowed to start > again later if we are trying to shut down. (But "smart" shutdown > doesn't enforce that, since it's a very weak state that only > prohibits new client sessions.) The processes that are allowed > to continue beyond that point are ones that are needed to perform > the shutdown checkpoint, or useful to make it finish faster. Thank you for providing the details. It clarifies the situation. Do you think it would be beneficial to include this as a code comment in postmaster.c to simplify understanding for future readers? thanks Shveta
Re: 'Shutdown <= SmartShutdown' check while launching processes in postmaster.
From
Bharath Rupireddy
Date:
On Wed, Feb 21, 2024 at 3:38 PM shveta malik <shveta.malik@gmail.com> wrote: > > > Children that are stopped by the "if (pmState == PM_STOP_BACKENDS)" > > stanza in PostmasterStateMachine should not be allowed to start > > again later if we are trying to shut down. (But "smart" shutdown > > doesn't enforce that, since it's a very weak state that only > > prohibits new client sessions.) The processes that are allowed > > to continue beyond that point are ones that are needed to perform > > the shutdown checkpoint, or useful to make it finish faster. > > Thank you for providing the details. It clarifies the situation. Do > you think it would be beneficial to include this as a code comment in > postmaster.c to simplify understanding for future readers? +1 for a note either before the StartChildProcess() or before the PMState enum definition. -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com