postgres.git / summary / log / commit / refs

commit    d92573adcb02564439086d1c257d7821606a3115
Author:   Michael Paquier <michael@paquier.xyz>
Date:     Fri Jun 07 09:46:13 2024 +0000

    Add more debugging information when dropping twice pgstats entry
    
    Floris Van Nee has reported a bug in the pgstats facility where a stats
    entry already dropped would get again dropped.  This case should not
    happen, still the error generated did not offer any details about the
    stats entry getting dropped.
    
    This commit improves the error message generated to inform about the
    stats entry kind, database OID, object OID and refcount, which should
    help to debug more the problem reported.  Bertrand Drouvot has been
    independently able to reach this error path while writing a new feature,
    and more details about the failure would have been helpful for
    debugging.
    
    Author: Andres Freund, Bertrand Drouvot
    Discussion: https://postgr.es/m/20240505160915.6boysum4f34siqct@awork3.anarazel.de
    Discussion: https://postgr.es/m/ZkM30paAD8Cr/Bix@ip-10-97-1-34.eu-west-3.compute.internal
    Backpatch-through: 15


src/backend/utils/activity/pgstat_shmem.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/backend/utils/activity/pgstat_shmem.c b/src/backend/utils/activity/pgstat_shmem.c index 4a4b69891d3..fb79c5e771b 100644 --- a/src/backend/utils/activity/pgstat_shmem.c +++ b/src/backend/utils/activity/pgstat_shmem.c @@ -785,7 +785,11 @@ pgstat_drop_entry_internal(PgStatShared_HashEntry *shent, * backends to release their references. */ if (shent->dropped) - elog(ERROR, "can only drop stats once"); + elog(ERROR, + "trying to drop stats entry already dropped: kind=%s dboid=%u objoid=%u refcount=%u", + pgstat_get_kind_info(shent->key.kind)->name, + shent->key.dboid, shent->key.objoid, + pg_atomic_read_u32(&shent->refcount)); shent->dropped = true; /* release refcount marking entry as not dropped */ [parent: 8cfbac1492bd]