Re: Patch that deals with that AtCommit_Portals encounters - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: Patch that deals with that AtCommit_Portals encounters
Date
Msg-id 200505111805.j4BI59c03000@candle.pha.pa.us
Whole thread Raw
In response to Patch that deals with that AtCommit_Portals encounters deleted entries  (Thomas Hallgren <thhal@mailblocks.com>)
Responses Re: Patch that deals with that AtCommit_Portals encounters  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-patches
Thomas Hallgren wrote:
> This patch will ensure that the hash table iteration performed by
> AtCommit_Portals is restarted when a portal is deleted. This is
> necessary since the deletion of a portal may cause the deletion of
> another which on rare occations may cause the iterator to return a
> deleted portal an thus a renewed attempt delete.

I have applied the following patch.  I assume it is too risky for
backpatch to 8.0.X.

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: src/backend/utils/mmgr/portalmem.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mmgr/portalmem.c,v
retrieving revision 1.78
diff -c -c -r1.78 portalmem.c
*** src/backend/utils/mmgr/portalmem.c    11 Apr 2005 19:51:15 -0000    1.78
--- src/backend/utils/mmgr/portalmem.c    11 May 2005 18:03:38 -0000
***************
*** 475,486 ****
   *
   * Remove all non-holdable portals created in this transaction.
   * Portals remaining from prior transactions should be left untouched.
-  *
-  * XXX This assumes that portals can be deleted in a random order, ie,
-  * no portal has a reference to any other (at least not one that will be
-  * exercised during deletion).    I think this is okay at the moment, but
-  * we've had bugs of that ilk in the past.  Keep a close eye on cursor
-  * references...
   */
  void
  AtCommit_Portals(void)
--- 475,480 ----
***************
*** 516,521 ****
--- 510,518 ----

          /* Zap all non-holdable portals */
          PortalDrop(portal, true);
+
+         /* Restart the iteration */
+         hash_seq_init(&status, PortalHashTable);
      }
  }


pgsql-patches by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: [BUGS] BUG #1588: pg_autovacuum sleep parameter overflow
Next
From: Bruce Momjian
Date:
Subject: Re: pg_autovacuum micro patch to display database name when