]> granicus.if.org Git - postgresql/commit
Repair longstanding bug in slru/clog logic: it is possible for two backends
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 21 Jan 2006 04:38:46 +0000 (04:38 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 21 Jan 2006 04:38:46 +0000 (04:38 +0000)
commit7da4e7ac6a0680210a2df8b711d8c765d2014e06
tree0860eea30677d56e853c106c50dee2f66e80ba96
parente05a95bc00e1cd2ba763b433843918fc5f2e155e
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.
src/backend/access/transam/slru.c