Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-49283

Biggie merge3 can incorrectly store nodes under the wrong parent

    XMLWordPrintableJSON

Details

    • Icon: Task Task
    • Resolution: Fixed
    • Icon: Major - P3 Major - P3
    • 4.7.0
    • None
    • None
    • None
    • Fully Compatible
    • Execution Team 2020-07-13, Execution Team 2020-07-27

    Description

      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.

      Attachments

        Activity

          People

            henrik.edin@mongodb.com Henrik Edin
            henrik.edin@mongodb.com Henrik Edin
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: