• Tom Lane's avatar
    Fix race condition in multixact code: it's possible to try to read a · 1986ca5c
    Tom Lane authored
    multixact's starting offset before the offset has been stored into the
    SLRU file.  A simple fix would be to hold the MultiXactGenLock until the
    offset has been stored, but that looks like a big concurrency hit.  Instead
    rely on knowledge that unset offsets will be zero, and loop when we see
    a zero.  This requires a little extra hacking to ensure that zero is never
    a valid value for the offset.  Problem reported by Matteo Beccati, fix
    ideas from Martijn van Oosterhout, Alvaro Herrera, and Tom Lane.
    1986ca5c
multixact.c 56.1 KB