txm: carefully handle conflict
When a transaction is in read-confirmed state it must ignore all prepared changes, and if it actually ignores something - it must fall to read-view state. By a mistake the check relied not on actual skipping of a prepared statement, but on the fact that there is a deleting statement. That leads to excess conflicts for transactions with read-committed isolation level. Fix it by raising a conflict only if a deleting statement is skipped. Closes #8122 Needed for #7202 NO_DOC=bugfix (cherry picked from commit 91d6d70f)
Showing
- changelogs/unreleased/gh-8122-excess-conflict-in-mvcc.md 3 additions, 0 deletionschangelogs/unreleased/gh-8122-excess-conflict-in-mvcc.md
- src/box/memtx_tx.c 16 additions, 11 deletionssrc/box/memtx_tx.c
- test/box-luatest/gh_8122_excess_conflict_secondary_test.lua 142 additions, 0 deletionstest/box-luatest/gh_8122_excess_conflict_secondary_test.lua
Loading
Please register or sign in to comment