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