'Shutdown <= SmartShutdown' check while launching processes in postmaster.

Started by shveta malikalmost 2 years ago4 messages
#1shveta malik
shveta.malik@gmail.com

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

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: shveta malik (#1)
Re: 'Shutdown <= SmartShutdown' check while launching processes in postmaster.

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

#3shveta malik
shveta.malik@gmail.com
In reply to: Tom Lane (#2)
Re: 'Shutdown <= SmartShutdown' check while launching processes in postmaster.

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

#4Bharath Rupireddy
bharath.rupireddyforpostgres@gmail.com
In reply to: shveta malik (#3)
Re: 'Shutdown <= SmartShutdown' check while launching processes in postmaster.

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