summaryrefslogtreecommitdiff
path: root/src/mongo/db/catalog/drop_collection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/catalog/drop_collection.cpp')
-rw-r--r--src/mongo/db/catalog/drop_collection.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/mongo/db/catalog/drop_collection.cpp b/src/mongo/db/catalog/drop_collection.cpp
index 5a8c2828f63..538aaa1e1b4 100644
--- a/src/mongo/db/catalog/drop_collection.cpp
+++ b/src/mongo/db/catalog/drop_collection.cpp
@@ -59,10 +59,15 @@ Status _dropView(OperationContext* opCtx,
if (!db) {
return Status(ErrorCodes::NamespaceNotFound, "ns not found");
}
- auto view = ViewCatalog::get(db)->lookup(opCtx, collectionName.ns());
+ auto view =
+ ViewCatalog::get(db)->lookupWithoutValidatingDurableViews(opCtx, collectionName.ns());
if (!view) {
return Status(ErrorCodes::NamespaceNotFound, "ns not found");
}
+
+ // Validates the view or throws an "invalid view" error.
+ ViewCatalog::get(db)->lookup(opCtx, collectionName.ns());
+
Lock::CollectionLock collLock(opCtx, collectionName, MODE_IX);
// Operations all lock system.views in the end to prevent deadlock.
Lock::CollectionLock systemViewsLock(opCtx, db->getSystemViewsName(), MODE_X);