summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl
diff options
context:
space:
mode:
authorGregory Wlodarek <gregory.wlodarek@mongodb.com>2019-08-27 13:52:23 +0000
committerevergreen <evergreen@mongodb.com>2019-08-27 13:52:23 +0000
commit077f247b29e9f6c5afecec11bb41858ae95067b6 (patch)
tree090fe306fe92910a0427b0287e1763cac34ef2b9 /src/mongo/db/repl
parente650acdf68952bf967e9eb9cd2a8d990a4c502da (diff)
downloadmongo-077f247b29e9f6c5afecec11bb41858ae95067b6.tar.gz
Revert "SERVER-33272 Proactively close newly empty databases"
This reverts commit 40f226b5a9bfb4863268334d287a46fb226a22cf.
Diffstat (limited to 'src/mongo/db/repl')
-rw-r--r--src/mongo/db/repl/rs_rollback.cpp19
-rw-r--r--src/mongo/db/repl/rs_rollback_test.cpp4
-rw-r--r--src/mongo/db/repl/storage_interface_impl.cpp28
3 files changed, 20 insertions, 31 deletions
diff --git a/src/mongo/db/repl/rs_rollback.cpp b/src/mongo/db/repl/rs_rollback.cpp
index 1a7d03ef9e2..1b685116242 100644
--- a/src/mongo/db/repl/rs_rollback.cpp
+++ b/src/mongo/db/repl/rs_rollback.cpp
@@ -42,7 +42,6 @@
#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"
@@ -1159,20 +1158,14 @@ 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);
- {
- 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;
- }
+ 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());
}
}
diff --git a/src/mongo/db/repl/rs_rollback_test.cpp b/src/mongo/db/repl/rs_rollback_test.cpp
index a4f5b6221dd..6408443af27 100644
--- a/src/mongo/db/repl/rs_rollback_test.cpp
+++ b/src/mongo/db/repl/rs_rollback_test.cpp
@@ -1648,7 +1648,9 @@ TEST_F(RSRollbackTest, RollbackCreateCollectionCommand) {
{
Lock::DBLock dbLock(_opCtx.get(), "test", MODE_S);
auto databaseHolder = DatabaseHolder::get(_opCtx.get());
- ASSERT_FALSE(databaseHolder->getDb(_opCtx.get(), "test"));
+ auto db = databaseHolder->getDb(_opCtx.get(), "test");
+ ASSERT_TRUE(db);
+ ASSERT_FALSE(db->getCollection(_opCtx.get(), NamespaceString("test.t")));
}
}
diff --git a/src/mongo/db/repl/storage_interface_impl.cpp b/src/mongo/db/repl/storage_interface_impl.cpp
index ff17b6c7175..88f4e2f36c7 100644
--- a/src/mongo/db/repl/storage_interface_impl.cpp
+++ b/src/mongo/db/repl/storage_interface_impl.cpp
@@ -49,7 +49,6 @@
#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/client.h"
#include "mongo/db/concurrency/d_concurrency.h"
@@ -460,23 +459,18 @@ Status StorageInterfaceImpl::createCollection(OperationContext* opCtx,
Status StorageInterfaceImpl::dropCollection(OperationContext* opCtx, const NamespaceString& nss) {
return writeConflictRetry(opCtx, "StorageInterfaceImpl::dropCollection", nss.ns(), [&] {
- {
- AutoGetDb autoDb(opCtx, nss.db(), MODE_IX);
- Lock::CollectionLock collLock(opCtx, nss, MODE_X);
- if (!autoDb.getDb()) {
- // Database does not exist - nothing to do.
- return Status::OK();
- }
- WriteUnitOfWork wunit(opCtx);
- const auto status = autoDb.getDb()->dropCollectionEvenIfSystem(opCtx, nss);
- if (!status.isOK()) {
- return status;
- }
- wunit.commit();
+ AutoGetDb autoDb(opCtx, nss.db(), MODE_IX);
+ Lock::CollectionLock collLock(opCtx, nss, MODE_X);
+ if (!autoDb.getDb()) {
+ // Database does not exist - nothing to do.
+ return Status::OK();
}
-
- // If this dropped the last collection in the database, we should close the database.
- closeDatabaseIfEmpty(opCtx, nss.db());
+ WriteUnitOfWork wunit(opCtx);
+ const auto status = autoDb.getDb()->dropCollectionEvenIfSystem(opCtx, nss);
+ if (!status.isOK()) {
+ return status;
+ }
+ wunit.commit();
return Status::OK();
});
}