diff options
author | Andres Freund <andres@anarazel.de> | 2021-08-06 18:54:39 -0700 |
---|---|---|
committer | Andres Freund <andres@anarazel.de> | 2021-08-06 19:05:59 -0700 |
commit | ee3f8d3d3aec0d7c961d6b398d31504bb272a450 (patch) | |
tree | e8938cc582bd9d66782c214b07c63e09cae47888 /src/backend/access/transam/parallel.c | |
parent | 5c056b0c2519e602c2e98bace5b16d2ecde6454b (diff) | |
download | postgresql-ee3f8d3d3aec0d7c961d6b398d31504bb272a450.tar.gz postgresql-ee3f8d3d3aec0d7c961d6b398d31504bb272a450.zip |
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@anarazel.de>
Discussion: https://postgr.es/m/20210405092914.mmxqe7j56lsjfsej@alap3.anarazel.de
Discussion: https://postgr.es/m/20210802164124.ufo5buo4apl6yuvs@alap3.anarazel.de
Diffstat (limited to 'src/backend/access/transam/parallel.c')
0 files changed, 0 insertions, 0 deletions