Prevent race condition while reading relmapper file.

Heikki Linnakangas <heikki.linnakangas@iki.fi>

Commit: 85ae8ccb2fb330785c6503316635dc7256cbe495
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: 2021-06-24T07:45:52Z
Releases: 9.6.23
Prevent race condition while reading relmapper file.

Contrary to the comment here, POSIX does not guarantee atomicity of a
read(), if another process calls write() concurrently. Or at least Linux
does not. Add locking to load_relmap_file() to avoid the race condition.

Fixes bug #17064. Thanks to Alexander Lakhin for the report and test case.

Backpatch-through: 9.6, all supported versions.
Discussion: https://www.postgresql.org/message-id/17064-bb0d7904ef72add3@postgresql.org

Files

PathChange+/−
src/backend/utils/cache/relmapper.c modified +20 −14

Discussion