Re: Checks in RegisterBackgroundWorker.()
Heikki Linnakangas <hlinnaka@iki.fi>
From: Heikki Linnakangas <hlinnaka@iki.fi>
To: Thomas Munro <thomas.munro@gmail.com>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2023-09-19T15:47:40Z
Lists: pgsql-hackers
On 25/08/2023 00:00, Thomas Munro wrote:
> On Fri, Aug 25, 2023 at 3:15 AM Heikki Linnakangas <hlinnaka@iki.fi> wrote:
>> In summary, RegisterBackgroundWorker() is doing some questionable and
>> useless work, when a shared preload library is loaded to a backend
>> process in EXEC_BACKEND mode.
>
> Yeah. When I was working on 7389aad6 ("Use WaitEventSet API for
> postmaster's event loop."), I also tried to move all of the
> postmaster's state variables into PostmasterContext (since the only
> reason for that scope was the signal handler code that is now gone),
> and I hit a variant of this design problem. I wonder if that would be
> unblocked by this...
>
> https://www.postgresql.org/message-id/CA+hUKGKH_RPAo=NgPfHKj--565aL1qiVpUGdWt1_pmJehY+dmw@mail.gmail.com
A-ha, yes I believe this patch will unblock that.
RegisterBackgroundWorker() has no legit reason to access
BackgroundWorkerList in child processes, and with these patches, it no
longer does.
--
Heikki Linnakangas
Neon (https://neon.tech)
Commits
-
Rename StartBackgroundWorker() to BackgroundWorkerMain().
- 637109d13ab2 17.0 landed
-
Allocate Backend structs in PostmasterContext.
- 0bbafb534275 17.0 landed
-
Clarify the checks in RegisterBackgroundWorker.
- 1ca312686e4c 17.0 landed