From 5b9703a6de4a0f0605ce06661d095e565942b2da Mon Sep 17 00:00:00 2001 From: Baji Shaik Date: Sun, 25 Oct 2026 09:38:30 -0500 Subject: [PATCH v2 2/2] Make DSA honor DSA_ALLOC_NO_OOM when out of DSM segments make_new_segment() checks dsm_create() for NULL, but dsm_create() was called without DSM_CREATE_NULL_IF_MAXSEGMENTS, so running out of DSM segments raised an ERROR instead. dsa_allocate_extended() with DSA_ALLOC_NO_OOM therefore errored out rather than returning InvalidDsaPointer, skipping the cleanup that callers such as pgstat_get_entry_ref() and pg_stash_advice do before reporting the failure themselves. Author: Baji Shaik Backpatch-through: 14 Discussion: https://postgr.es/m/CA+fm-RMyb6EoMuk+a4_hZou9cdTHfB6mj1UV-7yb_YuTWLug1g@mail.gmail.com --- src/backend/utils/mmgr/dsa.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/utils/mmgr/dsa.c b/src/backend/utils/mmgr/dsa.c index 18fb30c24ac..9a3b05173b9 100644 --- a/src/backend/utils/mmgr/dsa.c +++ b/src/backend/utils/mmgr/dsa.c @@ -2247,7 +2247,7 @@ make_new_segment(dsa_area *area, size_t requested_pages) /* Create the segment. */ oldowner = CurrentResourceOwner; CurrentResourceOwner = area->resowner; - segment = dsm_create(total_size, 0); + segment = dsm_create(total_size, DSM_CREATE_NULL_IF_MAXSEGMENTS); CurrentResourceOwner = oldowner; if (segment == NULL) return NULL; -- 2.54.0 (Apple Git-157)