summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDan Larkin-York <dan.larkin-york@mongodb.com>2023-03-07 17:20:55 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-03-16 20:51:23 +0000
commit750e7811aa7d391d71396679f385893b61dffb4f (patch)
treed7d13fef8aa8aa7cef420c57ca5a838f25e7ddc1 /src
parent45b1dcb60b936fc16ae7c60ac3740a684d019b0a (diff)
downloadmongo-750e7811aa7d391d71396679f385893b61dffb4f.tar.gz
SERVER-74631 Log index spec when validation detects index key inconsistencies
(cherry picked from commit 354b3b2ff1a72bef452b0037a707ecdc6879bff1)
Diffstat (limited to 'src')
-rw-r--r--src/mongo/db/catalog/collection_validation.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/mongo/db/catalog/collection_validation.cpp b/src/mongo/db/catalog/collection_validation.cpp
index c445763680b..024b801949c 100644
--- a/src/mongo/db/catalog/collection_validation.cpp
+++ b/src/mongo/db/catalog/collection_validation.cpp
@@ -244,6 +244,20 @@ void _validateIndexKeyCount(OperationContext* opCtx,
}
}
+void _printIndexSpec(const ValidateState* validateState, StringData indexName) {
+ auto& indexes = validateState->getIndexes();
+ auto indexEntry =
+ std::find_if(indexes.begin(),
+ indexes.end(),
+ [&](const std::shared_ptr<const IndexCatalogEntry> indexEntry) -> bool {
+ return indexEntry->descriptor()->indexName() == indexName;
+ });
+ if (indexEntry != indexes.end()) {
+ auto indexSpec = (*indexEntry)->descriptor()->infoObj();
+ LOGV2_ERROR(7463100, "Index failed validation", "spec"_attr = indexSpec);
+ }
+}
+
void _reportValidationResults(OperationContext* opCtx,
ValidateState* validateState,
ValidateResults* results,
@@ -264,6 +278,7 @@ void _reportValidationResults(OperationContext* opCtx,
for (const auto& [indexName, vr] : results->indexResultsMap) {
if (!vr.valid) {
results->valid = false;
+ _printIndexSpec(validateState, indexName);
}
if (validateState->getSkippedIndexes().contains(indexName)) {