diff options
Diffstat (limited to 'src/mongo/db/storage/biggie/store.h')
-rw-r--r-- | src/mongo/db/storage/biggie/store.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/mongo/db/storage/biggie/store.h b/src/mongo/db/storage/biggie/store.h index 80da6009cf9..a2f74a29945 100644 --- a/src/mongo/db/storage/biggie/store.h +++ b/src/mongo/db/storage/biggie/store.h @@ -1407,9 +1407,13 @@ private: current->_children[key] = other->_children[key]; } } else if (baseNode && otherNode && baseNode != otherNode) { - // If all three are unique and leaf nodes, then it is a merge conflict. - if (node->isLeaf() && baseNode->isLeaf() && otherNode->isLeaf()) - throw merge_conflict_exception(); + // If all three are unique and leaf nodes with different data, then it is a merge + // conflict. + if (node->isLeaf() && baseNode->isLeaf() && otherNode->isLeaf()) { + if (node->_data != baseNode->_data || baseNode->_data != otherNode->_data) + throw merge_conflict_exception(); + continue; + } // If the keys and data are all the exact same, then we can keep recursing. // Otherwise, we manually resolve the differences element by element. The |