From 372b97097e8c9a67326e99a07da30ab44f6f822a Mon Sep 17 00:00:00 2001
From: Robert Haas <rhaas@postgresql.org>
Date: Mon, 23 Mar 2015 09:58:56 -0400
Subject: [PATCH] Remove ill-advised pre-check for DSM segment exhaustion.

dsm_control->nitems never decreases, so this is testing whether the
server has *ever* run out of DSM segments, not whether it is
*currently* out of DSM segments.

Reported off-list by Amit Kapila.
---
 src/backend/storage/ipc/dsm.c | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/src/backend/storage/ipc/dsm.c b/src/backend/storage/ipc/dsm.c
index 96ca85e7d07..321bad95461 100644
--- a/src/backend/storage/ipc/dsm.c
+++ b/src/backend/storage/ipc/dsm.c
@@ -466,18 +466,6 @@ dsm_create(Size size, int flags)
 	if (!dsm_init_done)
 		dsm_backend_startup();
 
-	/*
-	 * If we've been instructed to return NULL when it's not possible to
-	 * register another segment, check whether we seem to be at the limit.
-	 * This allows us to avoid the overhead of creating a new segment only to
-	 * immediately destroy it again.  Since we don't take the lock here, the
-	 * value we read might be slightly stale, but the remote possibility of
-	 * an unnecessary failure here shouldn't trouble anyone too much.
-	 */
-	if ((flags & DSM_CREATE_NULL_IF_MAXSEGMENTS) != 0
-		&& dsm_control->nitems >= dsm_control->maxitems)
-		return NULL;
-
 	/* Create a new segment descriptor. */
 	seg = dsm_create_descriptor();
 
-- 
GitLab