Обсуждение: pgsql: Fix race condition in multixact code: it's possible to try to

Поиск
Список
Период
Сортировка

pgsql: Fix race condition in multixact code: it's possible to try to

От
tgl@svr1.postgresql.org (Tom Lane)
Дата:
Log Message:
-----------
Fix race condition in multixact code: it's possible to try to read a
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.

Modified Files:
--------------
    pgsql/src/backend/access/transam:
        multixact.c (r1.9 -> r1.10)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/multixact.c.diff?r1=1.9&r2=1.10)