mirror of
https://github.com/postgres/postgres.git
synced 2025-07-03 20:02:46 +03:00
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.
This commit is contained in:
@ -493,6 +493,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))
|
||||
|
Reference in New Issue
Block a user