diff options
author | Arun Banala <arun.banala@mongodb.com> | 2021-02-11 13:15:32 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-02-17 21:27:24 +0000 |
commit | 45e2b7620e47e367f940c838b44d8139de3b8205 (patch) | |
tree | fb572ce88103d15c042773f692f150649c0dec61 /src/mongo/db/commands/validate_db_metadata_cmd.cpp | |
parent | e39a36314d2363e52f0811bf01f81f9df2b5551f (diff) | |
download | mongo-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.cpp | 20 |
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()) { |