diff options
Diffstat (limited to 'src/mongo/db/index/btree_based_bulk_access_method.cpp')
-rw-r--r-- | src/mongo/db/index/btree_based_bulk_access_method.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/mongo/db/index/btree_based_bulk_access_method.cpp b/src/mongo/db/index/btree_based_bulk_access_method.cpp index 8434e1859e3..0c4b2f2ffb8 100644 --- a/src/mongo/db/index/btree_based_bulk_access_method.cpp +++ b/src/mongo/db/index/btree_based_bulk_access_method.cpp @@ -151,16 +151,19 @@ namespace mongo { Status status = builder->addKey(d.first, d.second); if (!status.isOK()) { - if (ErrorCodes::DuplicateKey != status.code()) { - return status; + // Overlong key that's OK to skip? + if (status.code() == ErrorCodes::KeyTooLong && _real->ignoreKeyTooLong(_txn)) { + continue; } - invariant(!dupsAllowed); // shouldn't be getting DupKey errors if dupsAllowed. + // Check if this is a duplicate that's OK to skip + if (status.code() == ErrorCodes::DuplicateKey) { + invariant(!dupsAllowed); // shouldn't be getting DupKey errors if dupsAllowed. - // If we're here it's a duplicate key. - if (dupsToDrop) { - dupsToDrop->insert(d.second); - continue; + if (dupsToDrop) { + dupsToDrop->insert(d.second); + continue; + } } return status; |