Project 'picodata/tarantool' was moved to 'core/tarantool'. Please update any links and bookmarks that may still have the old path.
memtx: fix lost gap and full scan items
By a mistake in 8a565144 a shortcut was added to procedure that handles gap write: it was considered that if the writing transaction is the same as reading - there is no actual conflict that must be stored further. That was a wrong decision: if such a transaction yields and another transaction comes and commits a value with the same key - the first one must go to conflicted state since it has read no more possible state. Another similar mistake was made in e6f5090c, where writing after full scan of the same transaction was not tracked as read. Obviously that was wrong: if some other transaction overwrites the key and commits - this transaction must go to read view since it did not see anything by this key which is not so anymore. Fix it, reverting the first commit and an modifying the second and add a test. Closes #8326 NO_DOC=bugfix (cherry picked from commit b41c4546)
Showing
- changelogs/unreleased/gh-8326-mvcc-lost-gap-record.md 3 additions, 0 deletionschangelogs/unreleased/gh-8326-mvcc-lost-gap-record.md
- src/box/memtx_tx.c 5 additions, 12 deletionssrc/box/memtx_tx.c
- test/box-luatest/gh_8326_mvcc_lost_gap_record_test.lua 72 additions, 0 deletionstest/box-luatest/gh_8326_mvcc_lost_gap_record_test.lua
Loading
Please register or sign in to comment