summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGregory Wlodarek <gregory.wlodarek@mongodb.com>2021-02-02 03:11:13 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-02-03 21:32:58 +0000
commit812956d932fcfaac9dd112c857adbf94e29f992c (patch)
treeae0db01f69088dcebec3d38c44a6b25447edcb23 /src
parenteacd71cf2fddc9f4767d929c74f1669b7d79ddd2 (diff)
downloadmongo-812956d932fcfaac9dd112c857adbf94e29f992c.tar.gz
SERVER-53986 Validate skips record store traversal on empty record stores
Diffstat (limited to 'src')
-rw-r--r--src/mongo/db/catalog/validate_adaptor.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/mongo/db/catalog/validate_adaptor.cpp b/src/mongo/db/catalog/validate_adaptor.cpp
index ada9feeb27c..2bd6d5bb4d0 100644
--- a/src/mongo/db/catalog/validate_adaptor.cpp
+++ b/src/mongo/db/catalog/validate_adaptor.cpp
@@ -419,6 +419,12 @@ void ValidateAdaptor::traverseRecordStore(OperationContext* opCtx,
long long nInvalid = 0;
long long numCorruptRecordsSizeBytes = 0;
+ ON_BLOCK_EXIT([&]() {
+ output->appendNumber("nInvalidDocuments", nInvalid);
+ output->appendNumber("nrecords", _numRecords);
+ _progress->finished();
+ });
+
results->valid = true;
RecordId prevRecordId;
@@ -437,6 +443,11 @@ void ValidateAdaptor::traverseRecordStore(OperationContext* opCtx,
_progress.set(CurOp::get(opCtx)->setProgress_inlock(curopMessage, totalRecords));
}
+ if (_validateState->getFirstRecordId().isNull()) {
+ // The record store is empty if the first RecordId isn't initialized.
+ return;
+ }
+
bool corruptRecordsSizeLimitWarning = false;
const std::unique_ptr<SeekableRecordThrottleCursor>& traverseRecordStoreCursor =
_validateState->getTraverseRecordStoreCursor();
@@ -538,11 +549,6 @@ void ValidateAdaptor::traverseRecordStore(OperationContext* opCtx,
_validateState->getCollection()->getRecordStore()->updateStatsAfterRepair(
opCtx, _numRecords, dataSizeTotal);
}
-
- _progress->finished();
-
- output->appendNumber("nInvalidDocuments", nInvalid);
- output->appendNumber("nrecords", _numRecords);
}
void ValidateAdaptor::validateIndexKeyCount(const IndexCatalogEntry* index,