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.
|
Список | 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 по дате отправления: