memtx: fix MVCC breaking TREE index iterators
The MVCC transaction manager story garbage collection introduced a subtle code dependency: TREE index iterators can get broken (see definition of “broken” at struct bps_tree_iterator), because the elements they are referencing can change during story garbage collection. We coined the notion “MVCC TRANSACTION MANAGER STORY GARBAGE COLLECTION BOUND” to refer to this issue explicitly: iterators and the tree elements they reference must not be used after this point in code. Closes #6344 NO_DOC=bug fix
Showing
- changelogs/unreleased/gh_6344_mvcc_txm_story_gc_breaks_memtx_tree_iter.md 4 additions, 0 deletions...eased/gh_6344_mvcc_txm_story_gc_breaks_memtx_tree_iter.md
- src/box/memtx_tree.cc 70 additions, 21 deletionssrc/box/memtx_tree.cc
- test/box-luatest/gh_6344_mvcc_txm_story_gc_breaks_memtx_tree_iter_test.lua 49 additions, 0 deletions...gh_6344_mvcc_txm_story_gc_breaks_memtx_tree_iter_test.lua
Loading