From: | Andres Freund <andres(at)anarazel(dot)de> |
---|---|
To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | pgsql: pgstat: Bring up pgstat in BaseInit() to fix uninitialized use o |
Date: | 2021-08-07 02:30:26 |
Message-ID: | E1mCC6U-0004Ik-Fs@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers pgsql-hackers |
pgstat: Bring up pgstat in BaseInit() to fix uninitialized use of pgstat by AV.
Previously pgstat_initialize() was called in InitPostgres() and
AuxiliaryProcessMain(). As it turns out there was at least one case where we
reported stats before pgstat_initialize() was called, see
AutoVacWorkerMain()'s intentionally early call to pgstat_report_autovac().
This turns out to not be a problem with the current pgstat implementation as
pgstat_initialize() only registers a shutdown callback. But in the shared
memory based stats implementation we are working towards pgstat_initialize()
has to do more work.
After b406478b87e BaseInit() is a central place where initialization shared by
normal backends and auxiliary backends can be put. Obviously BaseInit() is
called before InitPostgres() registers ShutdownPostgres. Previously
ShutdownPostgres was the first before_shmem_exit callback, now that's commonly
pgstats. That should be fine.
Previously pgstat_initialize() was not called in bootstrap mode, but there
does not appear to be a need for that. It's now done unconditionally.
To detect future issues like this, assertions are added to a few places
verifying that the pgstat subsystem is initialized and not yet shut down.
Author: Andres Freund <andres(at)anarazel(dot)de>
Discussion: https://postgr.es/m/20210405092914.mmxqe7j56lsjfsej@alap3.anarazel.de
Discussion: https://postgr.es/m/20210802164124.ufo5buo4apl6yuvs@alap3.anarazel.de
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/ee3f8d3d3aec0d7c961d6b398d31504bb272a450
Modified Files
--------------
src/backend/postmaster/auxprocess.c | 2 --
src/backend/postmaster/pgstat.c | 53 +++++++++++++++++++++++++++++++++++--
src/backend/utils/init/postinit.c | 23 +++++++++-------
3 files changed, 65 insertions(+), 13 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2021-08-07 02:44:07 | Re: pgsql: pgstat: Bring up pgstat in BaseInit() to fix uninitialized use o |
Previous Message | Tom Lane | 2021-08-06 21:33:04 | pgsql: Don't elide casting to typmod -1. |
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2021-08-07 02:35:40 | Re: Alias collision in `refresh materialized view concurrently` |
Previous Message | Michael Paquier | 2021-08-07 01:40:47 | Re: Alias collision in `refresh materialized view concurrently` |