Re: Using WaitEventSet in the postmaster

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Thomas Munro <thomas.munro@gmail.com>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2022-12-06T23:12:30Z
Lists: pgsql-hackers
On 2022-12-07 00:58:06 +1300, Thomas Munro wrote:
> One way to fix that for the epoll version is to EPOLL_CTL_DEL and
> EPOLL_CTL_ADD, whenever transitioning to/from a zero event mask.
> Tried like that in this version.  Another approach would be to
> (finally) write DeleteWaitEvent() to do the same thing at a higher
> level... seems overkill for this.

What about just recreating the WES during crash restart?


> > This seems to hardcode the specific wait events we're waiting for based on
> > latch.c infrastructure. Not really convinced that's a good idea.
>
> What are you objecting to?  The assumption that the first socket is at
> position 1?  The use of GetNumRegisteredWaitEvents()?

The latter.



Commits

  1. Remove unneeded volatile qualifiers from postmaster.c.

  2. Fix WaitEventSetWait() buffer overrun.

  3. Refactor DetermineSleepTime() to use milliseconds.

  4. Use WaitEventSet API for postmaster's event loop.

  5. Allow parent's WaitEventSets to be freed after fork().

  6. Don't leak a signalfd when using latches in the postmaster.

  7. Add WL_SOCKET_ACCEPT event to WaitEventSet API.

  8. From: Phil Thompson <phil@river-bank.demon.co.uk>