Re: backend hangs at immediate shutdown (Re: Back-branch update releases coming in a couple weeks)
| От | MauMau |
|---|---|
| Тема | Re: backend hangs at immediate shutdown (Re: Back-branch update releases coming in a couple weeks) |
| Дата | |
| Msg-id | 99F170DE69AA47308D82431AE1B23D29@maumau обсуждение исходный текст |
| Ответ на | Re: backend hangs at immediate shutdown (Re: Back-branch update releases coming in a couple weeks) (Alvaro Herrera <alvherre@2ndquadrant.com>) |
| Ответы |
Re: backend hangs at immediate shutdown (Re: Back-branch
update releases coming in a couple weeks)
|
| Список | pgsql-hackers |
From: "Alvaro Herrera" <alvherre@2ndquadrant.com>
> Actually, I think it would be cleaner to have a new state in pmState,
> namely PM_IMMED_SHUTDOWN which is entered when we send SIGQUIT. When
> we're in this state, postmaster is only waiting for the timeout to
> expire; and when it does, it sends SIGKILL and exits. Pretty much the
> same you have, except that instead of checking AbortStartTime we check
> the pmState variable.
Are you suggesting simplifying the following part in ServerLoop()? I
welcome the idea if this condition becomes simpler. However, I cannot
imagine how.
if (AbortStartTime > 0 && /* SIGKILL only once */ (Shutdown == ImmediateShutdown || (FatalError && !SendStop)) &&
now- AbortStartTime >= 10) { SignalAllChildren(SIGKILL); AbortStartTime = 0; }
I thought of adding some new state of pmState for some reason (that might be
the same as your idea).
But I refrained from doing that, because pmState has already many states. I
was afraid adding a new pmState value for this bug fix would complicate the
state management (e.g. state transition in PostmasterStateMachine()). In
addition, I felt PM_WAIT_BACKENDS was appropriate because postmaster is
actually waiting for backends to terminate after sending SIGQUIT. The state
name is natural.
I don't have strong objection to your idea if it makes the code cleaner and
more understandable. Thank you very much.
Regards
MauMau
В списке pgsql-hackers по дате отправления: