]> granicus.if.org Git - postgresql/commitdiff
Remove ill-advised pre-check for DSM segment exhaustion.
authorRobert Haas <rhaas@postgresql.org>
Mon, 23 Mar 2015 13:58:56 +0000 (09:58 -0400)
committerRobert Haas <rhaas@postgresql.org>
Mon, 23 Mar 2015 13:58:56 +0000 (09:58 -0400)
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

index 96ca85e7d075bc81de0fea15dd4fe540536e6552..321bad95461d0036f6c3d043ab14a8da6298a5e7 100644 (file)
@@ -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();