pg.ddx.io  pgsql-committers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Michael Paquier <michael@paquier.xyz>
To: pgsql-committers@lists.postgresql.org
Subject: pgsql: Prevent inconsistent use of stats entry for replication slots
Date: Wed, 05 Jun 2024 23:49:14 +0000
Message-ID: <E1sF0NV-000AIk-Hw@gemulon.postgresql.org> (raw)

Prevent inconsistent use of stats entry for replication slots

Concurrent activity around replication slot creation and drop could
cause a replication slot to use a stats entry it should not have used
when created, triggering an assertion failure when retrieving this
inconsistent entry from the dshash table used by the stats facility.

The issue is that pgstat_drop_replslot() calls pgstat_drop_entry()
without checking the result.  If pgstat_drop_entry() cannot free the
entry related to the object dropped, pgstat_request_entry_refs_gc()
should be called.  AtEOXact_PgStat_DroppedStats() and surrounding
routines dropping stats entries already do that.

This is documented in pgstat_internal.h, but let's add a comment at the
top of pgstat_drop_entry() as that can be easy to miss.

Reported-by: Alexander Lakhin
Author: Floris Van Nee
Analyzed-by: Andres Freund
Discussion: https://postgr.es/m/17947-b9554521ad963c9c@postgresql.org
Backpatch-through: 15

Branch
------
REL_15_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/bfc44da2478954330233a8df8a146ee920400947

Modified Files
--------------
src/backend/utils/activity/pgstat_replslot.c |  5 +++--
src/backend/utils/activity/pgstat_shmem.c    | 11 +++++++++++
2 files changed, 14 insertions(+), 2 deletions(-)



view thread (3+ messages)  latest in thread

Message-ID: <E1sF0NV-000AIk-Hw@gemulon.postgresql.org>
Permalink:  ../E1sF0NV-000AIk-Hw@gemulon.postgresql.org/
Also on:    postgresql.org/message-id/E1sF0NV-000AIk-Hw@gemulon.postgresql.org

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-committers@postgresql.org
  Cc: michael@paquier.xyz, pgsql-committers@lists.postgresql.org
  Subject: Re: pgsql: Prevent inconsistent use of stats entry for replication slots
  In-Reply-To: <E1sF0NV-000AIk-Hw@gemulon.postgresql.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox