summaryrefslogtreecommitdiff
path: root/src/mongo/db/catalog/drop_database.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/catalog/drop_database.cpp')
-rw-r--r--src/mongo/db/catalog/drop_database.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/mongo/db/catalog/drop_database.cpp b/src/mongo/db/catalog/drop_database.cpp
index 23f05c15788..99bd4fe88b8 100644
--- a/src/mongo/db/catalog/drop_database.cpp
+++ b/src/mongo/db/catalog/drop_database.cpp
@@ -135,6 +135,7 @@ Status dropDatabase(OperationContext* opCtx, const std::string& dbName) {
// on Database.
auto dropPendingGuard = MakeGuard([&db, opCtx] { db->setDropPending(opCtx, false); });
+ std::vector<NamespaceString> collectionsToDrop;
for (auto collection : *db) {
const auto& nss = collection->ns();
if (nss.isDropPendingNamespace() && replCoord->isReplEnabled() &&
@@ -147,11 +148,17 @@ Status dropDatabase(OperationContext* opCtx, const std::string& dbName) {
if (replCoord->isOplogDisabledFor(opCtx, nss) || nss.isSystemDotIndexes()) {
continue;
}
+ collectionsToDrop.push_back(nss);
+ }
+ numCollectionsToDrop = collectionsToDrop.size();
+
+ log() << "dropDatabase " << dbName << " - dropping " << numCollectionsToDrop
+ << " collections";
+ for (auto nss : collectionsToDrop) {
log() << "dropDatabase " << dbName << " - dropping collection: " << nss;
WriteUnitOfWork wunit(opCtx);
fassertStatusOK(40476, db->dropCollectionEvenIfSystem(opCtx, nss));
wunit.commit();
- numCollectionsToDrop++;
}
dropPendingGuard.Dismiss();