From 00bd5405dfaa44f3094965cf6bb0e6dc55062b99 Mon Sep 17 00:00:00 2001 From: Haley Connelly Date: Fri, 20 Sep 2019 18:00:07 +0000 Subject: SERVER-42373 Prevent "invalid view definition" error while dropping nonexistent collection --- src/mongo/db/catalog/drop_collection.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/mongo/db/catalog') diff --git a/src/mongo/db/catalog/drop_collection.cpp b/src/mongo/db/catalog/drop_collection.cpp index e3f9f9795ab..107e9b7ddad 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); -- cgit v1.2.1