Repair longstanding bug in slru/clog logic: it is possible for two backends

Tom Lane <tgl@sss.pgh.pa.us>

Commit: 3cbc8b6fb483ae4bf3011abe49030cb057a2722b
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2006-01-21T04:38:54Z
Releases: 7.3.14
Repair longstanding bug in slru/clog logic: it is possible for two backends
to try to create a log segment file concurrently, but the code erroneously
specified O_EXCL to open(), resulting in a needless failure.  Before 7.4,
it was even a PANIC condition :-(.  Correct code is actually simpler than
what we had, because we can just say O_CREAT to start with and not need a
second open() call.  I believe this accounts for several recent reports of
hard-to-reproduce "could not create file ...: File exists" errors in both
pg_clog and pg_subtrans.

Files

PathChange+/−
src/backend/access/transam/clog.c modified +8 −10