pgsql: Fix race condition in snapshot caching when 2PC is used.

Поиск
Список
Период
Сортировка
От Andres Freund
Тема pgsql: Fix race condition in snapshot caching when 2PC is used.
Дата
Msg-id E1k8BAl-00040m-SM@gemulon.postgresql.org
обсуждение исходный текст
Ответы Re: pgsql: Fix race condition in snapshot caching when 2PC is used.  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-committers
Fix race condition in snapshot caching when 2PC is used.

When preparing a transaction xactCompletionCount needs to be
incremented, even though the transaction has not committed
yet. Otherwise the snapshot used within the transaction otherwise can
get reused outside of the prepared transaction. As GetSnapshotData()
does not include the current xid when building a snapshot, reuse would
not be correct.

Somewhat surprisingly the regression tests only rarely show incorrect
results without the fix. The reason for that is that often the
snapshot's xmax will be >= the backend xid, yielding a snapshot that
is correct, despite the bug.

I'm working on a reliable test for the bug, but it seems worth seeing
whether this fixes all the BF failures while I do.

Author: Andres Freund <andres@anarazel.de>
Discussion: https://postgr.es/m/E1k7tGP-0005V0-5k@gemulon.postgresql.org

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/07f32fcd23ac81898ed47f88beb569c631a2f223

Modified Files
--------------
src/backend/storage/ipc/procarray.c | 9 +++++++++
1 file changed, 9 insertions(+)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Heikki Linnakangas
Дата:
Сообщение: pgsql: Avoid non-constant format string argument to fprintf().
Следующее
От: Tom Lane
Дата:
Сообщение: Re: pgsql: Fix race condition in snapshot caching when 2PC is used.