Re: Set appropriate processing mode for auxiliary processes.
Xing Guo <higuoxing@gmail.com>
From: Xing Guo <higuoxing@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Heikki Linnakangas <hlinnaka@iki.fi>, pgsql-hackers@lists.postgresql.org
Date: 2024-05-10T02:58:33Z
Lists: pgsql-hackers
Attachments
- v4-0001-Move-bgworker-specific-logic-to-bgworker.c.patch (text/x-patch) patch v4-0001
- v4-0002-Remove-redundant-SetProcessingMode-InitProcessing.patch (text/x-patch) patch v4-0002
- v4-0003-Minor-improvement-to-connection-initialization-fo.patch (text/x-patch) patch v4-0003
On Thu, May 9, 2024 at 11:19 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > > Heikki Linnakangas <hlinnaka@iki.fi> writes: > > At first I was sure this was introduced by my refactorings in v17, but > > in fact it's been like this forever. I agree that InitProcessing makes > > much more sense. The ProcessingMode variable is initialized to > > InitProcessing, so I think we can simply remove that line from > > AuxiliaryProcessMainCommon(). There are existing > > "SetProcessingMode(InitProcessing)" calls in other Main functions too > > (AutoVacLauncherMain, BackgroundWorkerMain, etc.), and I think those can > > also be removed. > > This only works if the postmaster can be trusted never to change the > variable; else children could inherit some other value via fork(). > In that connection, it seems a bit scary that postmaster.c contains a > couple of calls "SetProcessingMode(NormalProcessing)". It looks like > they are in functions that should only be executed by child processes, > but should we try to move them somewhere else? After checking calls to "SetProcessingMode(NormalProcessing)" in the postmaster.c, they are used in background worker specific functions (BackgroundWorkerInitializeConnectionByOid and BackgroundWorkerInitializeConnection). So I think it's a good idea to move these functions to bgworker.c. Then, we can get rid of calling "SetProcessingMode(NormalProcessing)" in postmaster.c. I also noticed that there's an unnecessary call to "BackgroundWorkerInitializeConnection" in worker_spi.c (The worker_spi launcher has set the dboid correctly). Best Regards, Xing.
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Remove redundant SetProcessingMode(InitProcessing) calls
- eb21f5bc67a0 18.0 landed
-
Move bgworker specific logic to bgworker.c
- 4d22173ec08c 18.0 landed