On Mon, Nov 7, 2016 at 10:14 AM, Tsunakawa, Takayuki
<tsunakawa.takay@jp.fujitsu.com> wrote:
> From: pgsql-hackers-owner@postgresql.org
>> [mailto:pgsql-hackers-owner@postgresql.org] On Behalf Of Ashutosh Bapat
>> I am not sure if following condition is a good idea in ServerLoop()
>> 1650 if (pmState == PM_WAIT_DEAD_END || ClosedSockets)
>>
>> There are no sockets to listen on, so select in the else condition is going
>> to sleep for timeout determined based on the sequence expected.
>> Just before we close sockets in pmdie() it sets AbortStartTime, which
>> determines the timeout for the sleep here. So, it doesn't make sense to
>> ignore it. Instead may be we should change the default 60s sleep to 100ms
>> sleep in DetermineSleepTime().
>
> That sounds better. I modified cleaned ServerLoop() by pushing the existing 100ms logic into DetermineSleepTime().
I have changed some comments around this block. See attached patch.
Let me know if that looks good.
>
>
>> While the postmaster is terminating children, a new connection request may
>> arrive. We should probably close listening sockets before terminating
>> children in pmdie().
>
> I moved ClosePostmasterSocket() call before terminating children in the immediate shutdown case. I didn't change the
behaviorof smart and fast shutdown modes, because they may take a long time to complete due to checkpointing etc.
Userswill want to know what's happening during shutdown or after pg_ctl stop times out, by getting the message "FATAL:
thedatabase system is shutting down" when they try to connect to the database. The immediate shutdown or crash should
betterbe as fast as possible.
OK.
--
Best Wishes,
Ashutosh Bapat
EnterpriseDB Corporation
The Postgres Database Company