diff options
author | Bynn Lee <bynn.lee@mongodb.com> | 2021-02-10 16:22:55 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-02-16 23:33:03 +0000 |
commit | 408b94f30377eb038272903626c3acbf7b5cd3f7 (patch) | |
tree | d41f075b0aa03ebff504ae3c5a6ee8c9be56d845 | |
parent | 5d0eaf8291050689b970581083abc5d0e6c931d1 (diff) | |
download | mongo-408b94f30377eb038272903626c3acbf7b5cd3f7.tar.gz |
SERVER-53556 Double-check record existence in validate
-rw-r--r-- | src/mongo/db/catalog/validate_adaptor.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/mongo/db/catalog/validate_adaptor.cpp b/src/mongo/db/catalog/validate_adaptor.cpp index 2bd6d5bb4d0..fd61311da8e 100644 --- a/src/mongo/db/catalog/validate_adaptor.cpp +++ b/src/mongo/db/catalog/validate_adaptor.cpp @@ -463,6 +463,18 @@ void ValidateAdaptor::traverseRecordStore(OperationContext* opCtx, size_t validatedSize = 0; Status status = validateRecord(opCtx, record->id, record->data, &validatedSize, results); + // TODO SERVER-54481 : Disable double validate. + auto doubleValidateRecord = traverseRecordStoreCursor->seekExact(opCtx, record->id); + if (!doubleValidateRecord || doubleValidateRecord->id != record->id || + doubleValidateRecord->data.size() != record->data.size()) { + LOGV2( + 5355600, + "Document corruption details - Document validation failure; double validate failed", + "recordId"_attr = record->id); + results->errors.push_back("Detected one or more invalid documents. See logs."); + results->valid = false; + } + // Checks to ensure isInRecordIdOrder() is being used properly. if (prevRecordId.isValid()) { invariant(prevRecordId < record->id); |