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: Andres Freund <andres@anarazel.de>, Heikki Linnakangas <hlinnaka@iki.fi>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2020-10-14T23:55:19Z
Lists: pgsql-hackers
On Thu, Oct 15, 2020 at 12:14 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > Andres Freund <andres@anarazel.de> writes: > > On 2020-10-15 11:10:28 +1300, Thomas Munro wrote: > >> 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. > > > Will it do so even if the kqueue is created after postmaster death? > > I did not try to test it, but there's code that purports to handle that > in latch.c, ~ line 1150, and the behavior it's expecting mostly agrees > with what I read in the macOS kevent man page. One thing I'd suggest Yep, I did handle the obvious races here. > is that EACCES probably needs to be treated as "postmaster already dead", > too, in case the PID is now owned by another user ID. Good point. I'll push that change later today.
Commits
-
Handle EACCES errors from kevent() better.
- 47522ee00ddb 13.1 landed
- 70516a178ad0 14.0 landed
-
Make WL_POSTMASTER_DEATH level-triggered on kqueue builds.
- e0950135ae5d 13.1 landed
- b94109ce375b 14.0 landed