• Tom Lane's avatar
    Repair bufmgr deadlock problem reported by Michael Wildpaner. Must take · c9d8edc9
    Tom Lane authored
    share lock on a buffer being written out before releasing BufMgrLock in
    the BufferAlloc code path; if we do it later we might block on someone
    who's re-pinned the buffer.  I believe this is only an issue for BufferAlloc
    and not the other places that call FlushBuffer.  BufferSync must continue
    to do it the old way since it may well be trying to write buffers that
    other backends have pinned; but it should not be holding any conflicting
    locks.  FlushRelationBuffers is okay since it's got exclusive lock at the
    relation level.
    c9d8edc9
bufmgr.c 56 KB