-
Type: Task
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
Labels:None
-
Fully Compatible
-
Execution Team 2020-07-13, Execution Team 2020-07-27
When resolving merge conflicts we may erase nodes that lead to node compression. If this is done under _merge3Helper the current node is modified and its depth and triekey changes, being different from other and base nodes.
When this state is normally encountered we don't recurse into _merge3Helper and go into merge conflict handling. But the case above happens when we are already recursed in _merge3Helper. This leads to the code paths detecting that just a single branch changed to merge the children into current to put them into the compressed node that should have been split before the merge.
The store is left in an invalid state making these nodes accessible, it also crashes iterators operating on the tree.