From 6c6b8f028a82810484a9aafc20e9f0ddebe9e483 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 12 Apr 2007 15:04:47 +0000 Subject: Cancel pending fsync requests during WAL replay of DROP DATABASE, per bug 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 | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/backend/commands/dbcommands.c') diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c index e12b7be4070..0ae1b996e4b 100644 --- a/src/backend/commands/dbcommands.c +++ b/src/backend/commands/dbcommands.c @@ -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\"", -- cgit v1.2.3