diff options
author | Noah Misch <noah@leadboat.com> | 2014-11-12 07:33:17 -0500 |
---|---|---|
committer | Noah Misch <noah@leadboat.com> | 2014-11-12 07:34:07 -0500 |
commit | c4d360d18259690442036c1ee07a899cbe4022a0 (patch) | |
tree | 74f94cbd5f8491e5eff595e68efba6814a10a1a9 /src/backend/commands/tablespace.c | |
parent | 8fb4218ef41da0baff4909c5d74f23513bac9950 (diff) |
Use just one database connection in the "tablespace" test.
On Windows, DROP TABLESPACE has a race condition when run concurrently
with other processes having opened files in the tablespace. This led to
a rare failure on buildfarm member frogmouth. Back-patch to 9.4, where
the reconnection was introduced.
Diffstat (limited to 'src/backend/commands/tablespace.c')
-rw-r--r-- | src/backend/commands/tablespace.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/backend/commands/tablespace.c b/src/backend/commands/tablespace.c index 28e69a55510..096d01aaf0b 100644 --- a/src/backend/commands/tablespace.c +++ b/src/backend/commands/tablespace.c @@ -491,6 +491,13 @@ DropTableSpace(DropTableSpaceStmt *stmt) * but we can't tell them apart from important data files that we * mustn't delete. So instead, we force a checkpoint which will clean * out any lingering files, and try again. + * + * XXX On Windows, an unlinked file persists in the directory listing + * until no process retains an open handle for the file. The DDL + * commands that schedule files for unlink send invalidation messages + * directing other PostgreSQL processes to close the files. DROP + * TABLESPACE should not give up on the tablespace becoming empty + * until all relevant invalidation processing is complete. */ RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_FORCE | CHECKPOINT_WAIT); if (!destroy_tablespace_directories(tablespaceoid, false)) |