diff options
Diffstat (limited to 'src/mongo/db/catalog/drop_collection.cpp')
-rw-r--r-- | src/mongo/db/catalog/drop_collection.cpp | 7 |
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); |