]> granicus.if.org Git - postgresql/commitdiff
Make the bgwriter's error recovery path do smgrcloseall(). On Windows this
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 1 Dec 2006 19:55:28 +0000 (19:55 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 1 Dec 2006 19:55:28 +0000 (19:55 +0000)
should allow delete-pending files to actually go away, and thereby work
around the various complaints we've seen about 'permission denied'
errors in such cases.  Should be reasonably harmless in any case...

src/backend/postmaster/bgwriter.c

index 4d5c1d1cca86cfda6c5fb450263ff09195302be1..9062b4f7deb1984dd1180d845dd4dcde4becf946 100644 (file)
@@ -37,7 +37,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/postmaster/bgwriter.c,v 1.32 2006/11/30 18:29:12 tgl Exp $
+ *       $PostgreSQL: pgsql/src/backend/postmaster/bgwriter.c,v 1.33 2006/12/01 19:55:28 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -304,6 +304,13 @@ BackgroundWriterMain(void)
                 * fast as we can.
                 */
                pg_usleep(1000000L);
+
+               /*
+                * Close all open files after any error.  This is helpful on Windows,
+                * where holding deleted files open causes various strange errors.
+                * It's not clear we need it elsewhere, but shouldn't hurt.
+                */
+               smgrcloseall();
        }
 
        /* We can now handle ereport(ERROR) */