Hello!
One of my colleagues encountered an out of space condition, which broke
his logical replication setup.
It`s manifested with the following errors:
ERROR: could not receive data from WAL stream: ERROR: could not create
file "pg_replslot/some_sub/state.tmp": File exists
I`ve digged a bit into this problem, and it`s turned out that in
SaveSlotToPath() temp file for replication slot is opened with 'O_CREAT
| O_EXCL' flags, which makes this routine as not very reentrant.
Since an exclusive lock is taken before temp file creation, I think it
should be safe to replace O_EXCL with O_TRUNC.
Script to reproduce and patch are attached.
--
Grigory Smolkin
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company