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

Biggie merge3 can incorrectly store nodes under the wrong parent

    XMLWordPrintable

    Details

    • Type: Task
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 4.7.0
    • Component/s: None
    • Labels:
      None

      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

            Assignee:
            henrik.edin Henrik Edin
            Reporter:
            henrik.edin Henrik Edin
            Participants:
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: