summaryrefslogtreecommitdiff
path: root/src/mongo/db/index/btree_based_bulk_access_method.cpp
diff options
context:
space:
mode:
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.cpp17
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;