Need to release buffer pins before attempting to drop files during
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 18 Mar 2005 05:24:13 +0000 (05:24 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 18 Mar 2005 05:24:13 +0000 (05:24 +0000)
backend exit.  Per report from Bruce.

src/backend/utils/init/postinit.c

index d1479bbab77e13ef01377ead4e36034df0aa0007..901053f18392b067190a0fd65361f4b0396246cd 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/utils/init/postinit.c,v 1.141 2005/02/26 18:43:33 tgl Exp $
+ *       $PostgreSQL: pgsql/src/backend/utils/init/postinit.c,v 1.142 2005/03/18 05:24:13 tgl Exp $
  *
  *
  *-------------------------------------------------------------------------
@@ -507,13 +507,14 @@ ShutdownPostgres(int code, Datum arg)
         * since that just raises the odds of failure --- but there's some
         * stuff we need to do.
         *
-        * Release any LW locks and buffer context locks we might be holding.
-        * This is a kluge to improve the odds that we won't get into a
-        * self-made stuck-lock scenario while trying to shut down.
+        * Release any LW locks, buffer content locks, and buffer pins we might be
+        * holding.  This is a kluge to improve the odds that we won't get into a
+        * self-made stuck-lock scenario while trying to shut down.  We *must*
+        * release buffer pins to make it safe to do file deletion, since we
+        * might have some pins on pages of the target files.
         */
        LWLockReleaseAll();
-       AbortBufferIO();
-       UnlockBuffers();
+       AtProcExit_Buffers();
 
        /*
         * In case a transaction is open, delete any files it created.  This