summaryrefslogtreecommitdiff
path: root/src/mongo/db/commands/validate_db_metadata_cmd.cpp
diff options
context:
space:
mode:
authorArun Banala <arun.banala@mongodb.com>2021-02-11 13:15:32 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-02-17 21:27:24 +0000
commit45e2b7620e47e367f940c838b44d8139de3b8205 (patch)
treefb572ce88103d15c042773f692f150649c0dec61 /src/mongo/db/commands/validate_db_metadata_cmd.cpp
parente39a36314d2363e52f0811bf01f81f9df2b5551f (diff)
downloadmongo-45e2b7620e47e367f940c838b44d8139de3b8205.tar.gz
SERVER-53218 Inherit API Parameters from command for validator evaluation
Diffstat (limited to 'src/mongo/db/commands/validate_db_metadata_cmd.cpp')
-rw-r--r--src/mongo/db/commands/validate_db_metadata_cmd.cpp20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/mongo/db/commands/validate_db_metadata_cmd.cpp b/src/mongo/db/commands/validate_db_metadata_cmd.cpp
index ec468c9adde..8af8a44443d 100644
--- a/src/mongo/db/commands/validate_db_metadata_cmd.cpp
+++ b/src/mongo/db/commands/validate_db_metadata_cmd.cpp
@@ -205,15 +205,25 @@ public:
return _validateView(opCtx, *viewDef);
}
- // TODO SERVER-53218: Add validation for collection validator.
-
- const auto* collPtr = collection.getCollection().get();
- if (!collPtr) {
+ if (!collection.getCollection()) {
return true;
}
+ const auto status = collection->checkValidatorAPIVersionCompatability(opCtx);
+ if (!status.isOK()) {
+ ErrorReplyElement error(coll.nss()->ns(),
+ ErrorCodes::APIStrictError,
+ ErrorCodes::errorString(ErrorCodes::APIStrictError),
+ status.reason());
+
+ if (!_sizeTracker.incrementAndCheckOverflow(error)) {
+ _reply.setHasMoreErrors(true);
+ return false;
+ }
+ apiVersionErrors.push_back(error);
+ }
// Ensure there are no unstable indexes.
- const auto* indexCatalog = collPtr->getIndexCatalog();
+ const auto* indexCatalog = collection->getIndexCatalog();
std::unique_ptr<IndexCatalog::IndexIterator> ii =
indexCatalog->getIndexIterator(opCtx, true /* includeUnfinishedIndexes */);
while (ii->more()) {