summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/rs_rollback.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/repl/rs_rollback.cpp')
-rw-r--r--src/mongo/db/repl/rs_rollback.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/mongo/db/repl/rs_rollback.cpp b/src/mongo/db/repl/rs_rollback.cpp
index 1b685116242..1a7d03ef9e2 100644
--- a/src/mongo/db/repl/rs_rollback.cpp
+++ b/src/mongo/db/repl/rs_rollback.cpp
@@ -42,6 +42,7 @@
#include "mongo/db/catalog/collection_catalog.h"
#include "mongo/db/catalog/database_holder.h"
#include "mongo/db/catalog/document_validation.h"
+#include "mongo/db/catalog/drop_collection.h"
#include "mongo/db/catalog/index_catalog.h"
#include "mongo/db/catalog/rename_collection.h"
#include "mongo/db/catalog_raii.h"
@@ -1158,14 +1159,20 @@ void rollback_internal::syncFixUp(OperationContext* opCtx,
log() << "This collection does not exist, UUID: " << uuid;
} else {
log() << "Dropping collection: " << *nss << ", UUID: " << uuid;
- AutoGetDb dbLock(opCtx, nss->db(), MODE_X);
- Database* db = dbLock.getDb();
- if (db) {
- Collection* collection = CollectionCatalog::get(opCtx).lookupCollectionByUUID(uuid);
- dropCollection(opCtx, *nss, collection, db);
- LOG(1) << "Dropped collection: " << *nss << ", UUID: " << uuid;
+ {
+ AutoGetDb dbLock(opCtx, nss->db(), MODE_X);
+
+ Database* db = dbLock.getDb();
+ if (db) {
+ Collection* collection =
+ CollectionCatalog::get(opCtx).lookupCollectionByUUID(uuid);
+ dropCollection(opCtx, *nss, collection, db);
+ LOG(1) << "Dropped collection: " << *nss << ", UUID: " << uuid;
+ }
}
+
+ closeDatabaseIfEmpty(opCtx, nss->db());
}
}