summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Milkie <milkie@10gen.com>2020-10-26 14:44:49 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-11-30 17:59:32 +0000
commitbd3a0404a63ccc1fc92ed8750b3266d5746e05f2 (patch)
treeaeee52bcd119952917f8f0a2f1963d9d50dcd520
parent42f4f48afbafcd6d567d2d31bde71ef757967102 (diff)
downloadmongo-bd3a0404a63ccc1fc92ed8750b3266d5746e05f2.tar.gz
SERVER-51652 catch exceptions in validate from parsing invalid index keys
(cherry picked from commit ca65f33c3777678fda17164cc9e9da248469f409)
-rw-r--r--src/mongo/db/catalog/validate_adaptor.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/mongo/db/catalog/validate_adaptor.cpp b/src/mongo/db/catalog/validate_adaptor.cpp
index 54cb62a16ee..f8160f7fb1f 100644
--- a/src/mongo/db/catalog/validate_adaptor.cpp
+++ b/src/mongo/db/catalog/validate_adaptor.cpp
@@ -258,8 +258,17 @@ void ValidateAdaptor::traverseIndex(OperationContext* opCtx,
numKeys++;
continue;
}
+ try {
+ _indexConsistency->addIndexKey(indexEntry->keyString, &indexInfo, indexEntry->loc);
+ } catch (const DBException& e) {
+ StringBuilder ss;
+ ss << "Parsing index key for " << indexInfo.indexName << " recId " << indexEntry->loc
+ << " threw exception " << e.toString();
+ results->errors.push_back(ss.str());
+ results->valid = false;
+ continue;
+ }
- _indexConsistency->addIndexKey(indexEntry->keyString, &indexInfo, indexEntry->loc);
_progress->hit();
numKeys++;
isFirstEntry = false;