Re: exposing wait events for non-backends (was: Tracking wait event for latches)
Michael Paquier <michael.paquier@gmail.com>
From: Michael Paquier <michael.paquier@gmail.com>
To: Kuntal Ghosh <kuntalghosh.2007@gmail.com>
Cc: Robert Haas <robertmhaas@gmail.com>, Andres Freund <andres@anarazel.de>, Tom Lane <tgl@sss.pgh.pa.us>,
Peter Eisentraut <peter.eisentraut@2ndquadrant.com>, Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>,
Craig Ringer <craig@2ndquadrant.com>, Kevin Grittner <kgrittn@gmail.com>,
Alvaro Herrera <alvherre@2ndquadrant.com>, Thomas Munro <thomas.munro@enterprisedb.com>, Alexander Korotkov <a.korotkov@postgrespro.ru>, PostgreSQL mailing lists <pgsql-hackers@postgresql.org>
Date: 2017-03-27T00:39:29Z
Lists: pgsql-hackers
On Sat, Mar 25, 2017 at 5:26 PM, Kuntal Ghosh <kuntalghosh.2007@gmail.com> wrote: > On Fri, Mar 24, 2017 at 9:23 PM, Robert Haas <robertmhaas@gmail.com> wrote: >> I think this is still not good. The places where pgstat_bestart() has >> been added are not even correct. For example, the call added to >> BackgroundWriterMain() occurs after the section that does >> error-recovery, so it would get repeated every time the background >> writer recovers from an error. There are similar problems elsewhere. >> Furthermore, although in theory there's an idea here that we're making >> it no longer the responsibility of InitPostgres() to call >> pgstat_bestart(), the patch as proposed only removes one of the two >> calls, so we really don't even have a consistent practice. I think >> it's better to go with the idea of having InitPostgres() be >> responsible for calling this for regular backends, and >> AuxiliaryProcessMain() for auxiliary backends. That involves >> substantially fewer calls to pgstat_bestart() and they are spread >> across only two functions, which IMHO makes fewer bugs of omission a >> lot less likely. > > Agreed. Calling it from InitPostgres() and AuxiliaryProcessMain() > seems correct because of the following two reasons as you've mentioned > up in the thread: > 1. security-filtering should be left to some higher-level facility > that can make policy decisions rather than being hard-coded in the > individual modules. > 2. makes fewer bugs of omission a lot less likely. Okay, fine for me. >> - I modified the code to tolerate a NULL return from >> AuxiliaryPidGetProc(). I am pretty sure that without that there's a >> race condition that could lead to a crash if somebody tried to call >> this function just as an auxiliary process was terminating. > > Wow. Haven't thought of that. If it's called after > AuxiliaryProcKill(), a crash is evident. This one is a good catch. -- Michael
Commits
-
Show more processes in pg_stat_activity.
- fc70a4b0df38 10.0 landed