Fix read_relmap_file() concurrency on Windows.
authorRobert Haas <rhaas@postgresql.org>
Wed, 27 Jul 2022 15:12:15 +0000 (11:12 -0400)
committerRobert Haas <rhaas@postgresql.org>
Wed, 27 Jul 2022 15:12:15 +0000 (11:12 -0400)
commita2e97cb2b6fb64c3ca3198f5c5f31190bc14c703
tree6c9137da8f587ff8028cfa9975a693581b2945b6
parentce3049b0215b63744d11c0ce3ac6afdb67fc2ff0
Fix read_relmap_file() concurrency on Windows.

Commit d8cd0c6c95c0120168df93aae095df4e0682a08a introduced a file
rename that could fail on Windows, probably due to other backends
having an open file handle to the old file of the same name.
Re-arrange the locking slightly to prevent that, by making sure the
open() and close() run while we hold the lock.

Thomas Munro. I added an explanatory comment.

Discussion: https://postgr.es/m/CA%2BhUKGLZtCTgp4NTWV-wGbR2Nyag71%3DEfYTKjDKnk%2BfkhuFMHw%40mail.gmail.com
src/backend/utils/cache/relmapper.c