Re: kevent latch paths don't handle postmaster death well

Thomas Munro <thomas.munro@gmail.com>

From: Thomas Munro <thomas.munro@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Heikki Linnakangas <hlinnaka@iki.fi>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2020-10-14T22:50:18Z
Lists: pgsql-hackers
On Thu, Oct 15, 2020 at 11:18 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Thomas Munro <thomas.munro@gmail.com> writes:
> > On Thu, Oct 15, 2020 at 8:40 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
> >> Seems like having that be per-WaitEventSet state is also not a great
> >> idea --- if we detect PM death while waiting on one WES, and then
> >> wait on another one, it won't work.  A plain process-wide static
> >> variable would be a better way I bet.
>
> > I don't think that's a problem -- the kernel will report the event to
> > each interested kqueue object.  The attached fixes the problem for me.
>
> Oh, OK.  I confirm this makes the kqueue path work like the EPOLL and POLL
> paths.  (I can't test the WIN32 path.)

Thanks.  Pushed.

(Hmm, I wonder about that Windows process exit event.)



Commits

  1. Handle EACCES errors from kevent() better.

  2. Make WL_POSTMASTER_DEATH level-triggered on kqueue builds.