memtx: fix loss of committed tuple in secondary index
Concurrent transactions can try to insert tuples that intersect only by parts of secondary index: in this case when one of them gets prepared, the others get conflicted, but the committed story does not get retained (because the conflicting statements are not added to the committed story's delete statement list as opposed to primary index) and is lost after garbage collection: retain stories if there is a newer uncommitted story in the secondary indexes' history chain. Closes #7712 NO_DOC=bugfix (cherry picked from commit 7b0baa57)
Showing
- changelogs/unreleased/gh-7712-loss-of-commited-tuple-in-secondary-index.md 4 additions, 0 deletions...ased/gh-7712-loss-of-commited-tuple-in-secondary-index.md
- src/box/memtx_tx.c 9 additions, 0 deletionssrc/box/memtx_tx.c
- test/box-luatest/gh_7712_loss_of_commited_tuple_in_secondary_index_test.lua 39 additions, 0 deletions...h_7712_loss_of_commited_tuple_in_secondary_index_test.lua
Loading
Please register or sign in to comment