Prevent race condition while reading relmapper file.

Heikki Linnakangas <heikki.linnakangas@iki.fi>

Commit: caac1965077ffd995dfbe9facf88c05afa868c92
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: 2021-06-24T07:45:43Z
Releases: 12.8
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