From 53bdecfeb44e6f6dcc7f7fcc20d1569f4d01285b Mon Sep 17 00:00:00 2001 From: Mikhail Kot Date: Wed, 3 Sep 2025 22:34:46 +0100 Subject: [PATCH] remove pgstate hash entry if pgstat_init_entry errors with OOM --- src/backend/utils/activity/pgstat_shmem.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/backend/utils/activity/pgstat_shmem.c b/src/backend/utils/activity/pgstat_shmem.c index 62de3474453..fffa1e56941 100644 --- a/src/backend/utils/activity/pgstat_shmem.c +++ b/src/backend/utils/activity/pgstat_shmem.c @@ -508,7 +508,16 @@ pgstat_get_entry_ref(PgStat_Kind kind, Oid dboid, uint64 objid, bool create, shhashent = dshash_find_or_insert(pgStatLocal.shared_hash, &key, &shfound); if (!shfound) { - shheader = pgstat_init_entry(kind, shhashent); + PG_TRY(); + { + shheader = pgstat_init_entry(kind, shhashent); + } + PG_CATCH(); + { + dshash_delete_entry(pgStatLocal.shared_hash, shhashent); + PG_RE_THROW(); + } + PG_END_TRY(); pgstat_acquire_entry_ref(entry_ref, shhashent, shheader); if (created_entry != NULL) -- 2.47.2