]> granicus.if.org Git - postgresql/commitdiff
Cancel pending fsync requests during WAL replay of DROP DATABASE, per bug
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 12 Apr 2007 15:04:47 +0000 (15:04 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 12 Apr 2007 15:04:47 +0000 (15:04 +0000)
report from David Darville.  Back-patch as far as 8.1, which may or may not
have the problem but it seems a safe change anyway.

src/backend/commands/dbcommands.c

index e12b7be407071d498fd7556605a7cf790e2202d7..0ae1b996e4b5b68c1ccf93ad165c25a273790e5d 100644 (file)
@@ -15,7 +15,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/commands/dbcommands.c,v 1.173.2.2 2007/01/27 20:15:55 tgl Exp $
+ *       $PostgreSQL: pgsql/src/backend/commands/dbcommands.c,v 1.173.2.3 2007/04/12 15:04:47 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1375,6 +1375,12 @@ dbase_redo(XLogRecPtr lsn, XLogRecord *record)
                 */
                DropBuffers(xlrec->db_id);
 
+               /* Also, clean out any entries in the shared free space map */
+               FreeSpaceMapForgetDatabase(xlrec->db_id);
+
+               /* Also, clean out any fsync requests that might be pending in md.c */
+               ForgetDatabaseFsyncRequests(xlrec->db_id);
+
                if (!rmtree(dst_path, true))
                        ereport(WARNING,
                                        (errmsg("could not remove database directory \"%s\"",