summaryrefslogtreecommitdiff
path: root/src/mongo
diff options
context:
space:
mode:
authorjannaerin <golden.janna@gmail.com>2022-07-15 15:13:00 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-07-15 16:37:02 +0000
commit299c4b3e46075a01ab8d0989bca5358a2b0603ae (patch)
treeb01d0e260502be4346f346d8d8d3239836a8d087 /src/mongo
parenta16f7f1ee85ac854db4e92294ceb392043623fea (diff)
downloadmongo-299c4b3e46075a01ab8d0989bca5358a2b0603ae.tar.gz
SERVER-62923 Change DB lock RAII types to use DatabaseName
Diffstat (limited to 'src/mongo')
-rw-r--r--src/mongo/db/auth/auth_op_observer_test.cpp2
-rw-r--r--src/mongo/db/catalog/capped_utils.cpp2
-rw-r--r--src/mongo/db/catalog/collection_compact.cpp2
-rw-r--r--src/mongo/db/catalog/create_collection.cpp6
-rw-r--r--src/mongo/db/catalog/database_impl.cpp3
-rw-r--r--src/mongo/db/catalog/database_test.cpp26
-rw-r--r--src/mongo/db/catalog/drop_collection.cpp6
-rw-r--r--src/mongo/db/catalog/drop_database.cpp15
-rw-r--r--src/mongo/db/catalog/drop_database_test.cpp24
-rw-r--r--src/mongo/db/catalog/rename_collection.cpp2
-rw-r--r--src/mongo/db/catalog/rename_collection_test.cpp4
-rw-r--r--src/mongo/db/catalog_raii.cpp44
-rw-r--r--src/mongo/db/catalog_raii.h4
-rw-r--r--src/mongo/db/catalog_raii_test.cpp47
-rw-r--r--src/mongo/db/commands/dbcheck.cpp3
-rw-r--r--src/mongo/db/commands/dbcommands.cpp3
-rw-r--r--src/mongo/db/commands/dbcommands_d.cpp2
-rw-r--r--src/mongo/db/commands/dbhash.cpp4
-rw-r--r--src/mongo/db/commands/fle2_compact_cmd.cpp2
-rw-r--r--src/mongo/db/commands/list_collections.cpp2
-rw-r--r--src/mongo/db/commands/list_databases.cpp2
-rw-r--r--src/mongo/db/commands/test_commands.cpp2
-rw-r--r--src/mongo/db/commands/validate_db_metadata_cmd.cpp2
-rw-r--r--src/mongo/db/db_raii.cpp7
-rw-r--r--src/mongo/db/db_raii.h4
-rw-r--r--src/mongo/db/index_build_entry_helpers.cpp2
-rw-r--r--src/mongo/db/index_builds_coordinator.cpp5
-rw-r--r--src/mongo/db/matcher/expression_text.cpp2
-rw-r--r--src/mongo/db/mongod_main.cpp2
-rw-r--r--src/mongo/db/namespace_string.h1
-rw-r--r--src/mongo/db/op_observer/op_observer_impl_test.cpp24
-rw-r--r--src/mongo/db/ops/write_ops_exec.cpp2
-rw-r--r--src/mongo/db/persistent_task_store_test.cpp2
-rw-r--r--src/mongo/db/repl/oplog_test.cpp10
-rw-r--r--src/mongo/db/repl/replication_coordinator_external_state_impl.cpp2
-rw-r--r--src/mongo/db/repl/replication_recovery.cpp2
-rw-r--r--src/mongo/db/repl/rs_rollback.cpp2
-rw-r--r--src/mongo/db/repl/storage_interface_impl.cpp10
-rw-r--r--src/mongo/db/repl/storage_timestamp_test.cpp2
-rw-r--r--src/mongo/db/repl/tenant_file_importer_service.cpp2
-rw-r--r--src/mongo/db/repl/tenant_migration_shard_merge_util.cpp2
-rw-r--r--src/mongo/db/s/database_sharding_state_test.cpp4
-rw-r--r--src/mongo/db/s/get_database_version_command.cpp2
-rw-r--r--src/mongo/db/s/migration_chunk_cloner_source_legacy_test.cpp2
-rw-r--r--src/mongo/db/s/migration_destination_manager.cpp2
-rw-r--r--src/mongo/db/s/migration_util.cpp2
-rw-r--r--src/mongo/db/s/move_primary_source_manager.cpp10
-rw-r--r--src/mongo/db/s/persistent_task_queue_test.cpp2
-rw-r--r--src/mongo/db/s/range_deletion_util_test.cpp2
-rw-r--r--src/mongo/db/s/resharding/resharding_donor_service.cpp2
-rw-r--r--src/mongo/db/s/resharding/resharding_oplog_fetcher.cpp2
-rw-r--r--src/mongo/db/s/resharding/resharding_oplog_fetcher_test.cpp2
-rw-r--r--src/mongo/db/s/session_catalog_migration_destination_test.cpp2
-rw-r--r--src/mongo/db/s/shard_server_op_observer.cpp6
-rw-r--r--src/mongo/db/s/sharding_initialization_mongod.cpp2
-rw-r--r--src/mongo/db/s/split_vector_test.cpp2
-rw-r--r--src/mongo/db/serverless/shard_split_donor_service_test.cpp3
-rw-r--r--src/mongo/db/storage/kv/storage_engine_test.cpp4
-rw-r--r--src/mongo/db/storage/storage_engine_test_fixture.h2
-rw-r--r--src/mongo/db/transaction_participant_test.cpp10
-rw-r--r--src/mongo/db/views/view_catalog_test.cpp8
-rw-r--r--src/mongo/dbtests/dbtests.cpp2
-rw-r--r--src/mongo/dbtests/extensions_callback_real_test.cpp4
-rw-r--r--src/mongo/dbtests/indexupdatetests.cpp2
-rw-r--r--src/mongo/dbtests/query_stage_collscan.cpp2
-rw-r--r--src/mongo/dbtests/rollbacktests.cpp6
-rw-r--r--src/mongo/dbtests/validate_tests.cpp4
67 files changed, 212 insertions, 171 deletions
diff --git a/src/mongo/db/auth/auth_op_observer_test.cpp b/src/mongo/db/auth/auth_op_observer_test.cpp
index 72f1230af43..4ae2d589c5c 100644
--- a/src/mongo/db/auth/auth_op_observer_test.cpp
+++ b/src/mongo/db/auth/auth_op_observer_test.cpp
@@ -131,7 +131,7 @@ TEST_F(AuthOpObserverTest, MultipleAboutToDeleteAndOnDelete) {
AuthOpObserver opObserver;
auto opCtx = cc().makeOperationContext();
NamespaceString nss = {"test", "coll"};
- AutoGetDb autoDb(opCtx.get(), nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx.get(), nss.dbName(), MODE_X);
WriteUnitOfWork wunit(opCtx.get());
opObserver.aboutToDelete(opCtx.get(), nss, uuid, BSON("_id" << 1));
opObserver.onDelete(opCtx.get(), nss, uuid, {}, {});
diff --git a/src/mongo/db/catalog/capped_utils.cpp b/src/mongo/db/catalog/capped_utils.cpp
index 00f823bf3cb..de1a436a516 100644
--- a/src/mongo/db/catalog/capped_utils.cpp
+++ b/src/mongo/db/catalog/capped_utils.cpp
@@ -58,7 +58,7 @@
namespace mongo {
Status emptyCapped(OperationContext* opCtx, const NamespaceString& collectionName) {
- AutoGetDb autoDb(opCtx, collectionName.db(), MODE_X);
+ AutoGetDb autoDb(opCtx, collectionName.dbName(), MODE_X);
bool userInitiatedWritesAndNotPrimary = opCtx->writesAreReplicated() &&
!repl::ReplicationCoordinator::get(opCtx)->canAcceptWritesFor(opCtx, collectionName);
diff --git a/src/mongo/db/catalog/collection_compact.cpp b/src/mongo/db/catalog/collection_compact.cpp
index 14fcad95fad..a41613311a5 100644
--- a/src/mongo/db/catalog/collection_compact.cpp
+++ b/src/mongo/db/catalog/collection_compact.cpp
@@ -72,7 +72,7 @@ CollectionPtr getCollectionForCompact(OperationContext* opCtx,
StatusWith<int64_t> compactCollection(OperationContext* opCtx,
const NamespaceString& collectionNss) {
- AutoGetDb autoDb(opCtx, collectionNss.db(), MODE_IX);
+ AutoGetDb autoDb(opCtx, collectionNss.dbName(), MODE_IX);
Database* database = autoDb.getDb();
uassert(ErrorCodes::NamespaceNotFound, "database does not exist", database);
diff --git a/src/mongo/db/catalog/create_collection.cpp b/src/mongo/db/catalog/create_collection.cpp
index 90323d8dc82..9b1e61cbc9c 100644
--- a/src/mongo/db/catalog/create_collection.cpp
+++ b/src/mongo/db/catalog/create_collection.cpp
@@ -157,7 +157,7 @@ Status _createView(OperationContext* opCtx,
!nss.isSystemDotViews());
return writeConflictRetry(opCtx, "create", nss.ns(), [&] {
- AutoGetDb autoDb(opCtx, nss.db(), MODE_IX);
+ AutoGetDb autoDb(opCtx, nss.dbName(), MODE_IX);
Lock::CollectionLock collLock(opCtx, nss, MODE_IX);
// Operations all lock system.views in the end to prevent deadlock.
Lock::CollectionLock systemViewsLock(
@@ -311,7 +311,7 @@ Status _createTimeseries(OperationContext* opCtx,
Status ret =
writeConflictRetry(opCtx, "createBucketCollection", bucketsNs.ns(), [&]() -> Status {
- AutoGetDb autoDb(opCtx, bucketsNs.db(), MODE_IX);
+ AutoGetDb autoDb(opCtx, bucketsNs.dbName(), MODE_IX);
Lock::CollectionLock bucketsCollLock(opCtx, bucketsNs, MODE_X);
auto db = autoDb.ensureDbExists(opCtx);
@@ -468,7 +468,7 @@ Status _createCollection(OperationContext* opCtx,
const CollectionOptions& collectionOptions,
const boost::optional<BSONObj>& idIndex) {
return writeConflictRetry(opCtx, "create", nss.ns(), [&] {
- AutoGetDb autoDb(opCtx, nss.dbName().toStringWithTenantId(), MODE_IX);
+ AutoGetDb autoDb(opCtx, nss.dbName(), MODE_IX);
Lock::CollectionLock collLock(opCtx, nss, MODE_IX);
auto db = autoDb.ensureDbExists(opCtx);
diff --git a/src/mongo/db/catalog/database_impl.cpp b/src/mongo/db/catalog/database_impl.cpp
index 2b98aac4e33..9d867c96e4c 100644
--- a/src/mongo/db/catalog/database_impl.cpp
+++ b/src/mongo/db/catalog/database_impl.cpp
@@ -164,8 +164,7 @@ Status DatabaseImpl::validateDBName(StringData dbname) {
}
DatabaseImpl::DatabaseImpl(const DatabaseName& dbName)
- : _name(dbName),
- _viewsName(_name.toString() + "." + DurableViewCatalog::viewsCollectionName().toString()) {}
+ : _name(dbName), _viewsName(_name, DurableViewCatalog::viewsCollectionName().toString()) {}
Status DatabaseImpl::init(OperationContext* const opCtx) {
Status status = validateDBName(_name.db());
diff --git a/src/mongo/db/catalog/database_test.cpp b/src/mongo/db/catalog/database_test.cpp
index baaf297962f..1b9653ef33a 100644
--- a/src/mongo/db/catalog/database_test.cpp
+++ b/src/mongo/db/catalog/database_test.cpp
@@ -117,7 +117,7 @@ void DatabaseTest::tearDown() {
TEST_F(DatabaseTest, SetDropPendingThrowsExceptionIfDatabaseIsAlreadyInADropPendingState) {
writeConflictRetry(_opCtx.get(), "testSetDropPending", _nss.ns(), [this] {
- AutoGetDb autoDb(_opCtx.get(), _nss.db(), MODE_X);
+ AutoGetDb autoDb(_opCtx.get(), _nss.dbName(), MODE_X);
auto db = autoDb.ensureDbExists(_opCtx.get());
ASSERT_TRUE(db);
@@ -140,7 +140,7 @@ TEST_F(DatabaseTest, SetDropPendingThrowsExceptionIfDatabaseIsAlreadyInADropPend
TEST_F(DatabaseTest, CreateCollectionThrowsExceptionWhenDatabaseIsInADropPendingState) {
writeConflictRetry(
_opCtx.get(), "testÇreateCollectionWhenDatabaseIsInADropPendingState", _nss.ns(), [this] {
- AutoGetDb autoDb(_opCtx.get(), _nss.db(), MODE_X);
+ AutoGetDb autoDb(_opCtx.get(), _nss.dbName(), MODE_X);
auto db = autoDb.ensureDbExists(_opCtx.get());
ASSERT_TRUE(db);
@@ -166,7 +166,7 @@ void _testDropCollection(OperationContext* opCtx,
if (createCollectionBeforeDrop) {
writeConflictRetry(opCtx, "testDropCollection", nss.ns(), [=] {
WriteUnitOfWork wuow(opCtx);
- AutoGetDb autoDb(opCtx, nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx, nss.dbName(), MODE_X);
auto db = autoDb.ensureDbExists(opCtx);
ASSERT_TRUE(db);
ASSERT_TRUE(db->createCollection(opCtx, nss, collOpts));
@@ -175,7 +175,7 @@ void _testDropCollection(OperationContext* opCtx,
}
writeConflictRetry(opCtx, "testDropCollection", nss.ns(), [=] {
- AutoGetDb autoDb(opCtx, nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx, nss.dbName(), MODE_X);
auto db = autoDb.ensureDbExists(opCtx);
ASSERT_TRUE(db);
@@ -216,7 +216,7 @@ TEST_F(DatabaseTest, DropCollectionRejectsProvidedDropOpTimeIfWritesAreReplicate
auto opCtx = _opCtx.get();
auto nss = _nss;
- AutoGetDb autoDb(opCtx, nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx, nss.dbName(), MODE_X);
auto db = autoDb.ensureDbExists(opCtx);
writeConflictRetry(opCtx, "testDropOpTimeWithReplicated", nss.ns(), [&] {
ASSERT_TRUE(db);
@@ -234,7 +234,7 @@ TEST_F(DatabaseTest, DropCollectionRejectsProvidedDropOpTimeIfWritesAreReplicate
void _testDropCollectionThrowsExceptionIfThereAreIndexesInProgress(OperationContext* opCtx,
const NamespaceString& nss) {
writeConflictRetry(opCtx, "testDropCollectionWithIndexesInProgress", nss.ns(), [opCtx, nss] {
- AutoGetDb autoDb(opCtx, nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx, nss.dbName(), MODE_X);
auto db = autoDb.ensureDbExists(opCtx);
ASSERT_TRUE(db);
@@ -292,7 +292,7 @@ TEST_F(DatabaseTest, RenameCollectionPreservesUuidOfSourceCollectionAndUpdatesUu
auto toNss = NamespaceString(fromNss.getSisterNS("bar"));
ASSERT_NOT_EQUALS(fromNss, toNss);
- AutoGetDb autoDb(opCtx, fromNss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx, fromNss.dbName(), MODE_X);
auto db = autoDb.ensureDbExists(opCtx);
ASSERT_TRUE(db);
@@ -334,7 +334,7 @@ TEST_F(DatabaseTest, RenameCollectionPreservesUuidOfSourceCollectionAndUpdatesUu
TEST_F(DatabaseTest,
MakeUniqueCollectionNamespaceReturnsFailedToParseIfModelDoesNotContainPercentSign) {
writeConflictRetry(_opCtx.get(), "testMakeUniqueCollectionNamespace", _nss.ns(), [this] {
- AutoGetDb autoDb(_opCtx.get(), _nss.db(), MODE_X);
+ AutoGetDb autoDb(_opCtx.get(), _nss.dbName(), MODE_X);
auto db = autoDb.ensureDbExists(_opCtx.get());
ASSERT_TRUE(db);
ASSERT_EQUALS(ErrorCodes::FailedToParse,
@@ -345,7 +345,7 @@ TEST_F(DatabaseTest,
TEST_F(DatabaseTest, MakeUniqueCollectionNamespaceReplacesPercentSignsWithRandomCharacters) {
writeConflictRetry(_opCtx.get(), "testMakeUniqueCollectionNamespace", _nss.ns(), [this] {
- AutoGetDb autoDb(_opCtx.get(), _nss.db(), MODE_X);
+ AutoGetDb autoDb(_opCtx.get(), _nss.dbName(), MODE_X);
auto db = autoDb.ensureDbExists(_opCtx.get());
ASSERT_TRUE(db);
@@ -388,7 +388,7 @@ TEST_F(
DatabaseTest,
MakeUniqueCollectionNamespaceReturnsNamespaceExistsIfGeneratedNamesMatchExistingCollections) {
writeConflictRetry(_opCtx.get(), "testMakeUniqueCollectionNamespace", _nss.ns(), [this] {
- AutoGetDb autoDb(_opCtx.get(), _nss.db(), MODE_X);
+ AutoGetDb autoDb(_opCtx.get(), _nss.dbName(), MODE_X);
auto db = autoDb.ensureDbExists(_opCtx.get());
ASSERT_TRUE(db);
@@ -418,7 +418,7 @@ TEST_F(DatabaseTest, AutoGetDBSucceedsWithDeadlineNow) {
Lock::DBLock lock(_opCtx.get(), nss.dbName(), MODE_X);
ASSERT(_opCtx.get()->lockState()->isDbLockedForMode(nss.dbName(), MODE_X));
try {
- AutoGetDb db(_opCtx.get(), nss.db(), MODE_X, Date_t::now());
+ AutoGetDb db(_opCtx.get(), nss.dbName(), MODE_X, Date_t::now());
ASSERT(_opCtx.get()->lockState()->isDbLockedForMode(nss.dbName(), MODE_X));
} catch (const ExceptionFor<ErrorCodes::LockTimeout>&) {
FAIL("Should get the db within the timeout");
@@ -430,7 +430,7 @@ TEST_F(DatabaseTest, AutoGetDBSucceedsWithDeadlineMin) {
Lock::DBLock lock(_opCtx.get(), nss.dbName(), MODE_X);
ASSERT(_opCtx.get()->lockState()->isDbLockedForMode(nss.dbName(), MODE_X));
try {
- AutoGetDb db(_opCtx.get(), nss.db(), MODE_X, Date_t());
+ AutoGetDb db(_opCtx.get(), nss.dbName(), MODE_X, Date_t());
ASSERT(_opCtx.get()->lockState()->isDbLockedForMode(nss.dbName(), MODE_X));
} catch (const ExceptionFor<ErrorCodes::LockTimeout>&) {
FAIL("Should get the db within the timeout");
@@ -470,7 +470,7 @@ TEST_F(DatabaseTest, CreateCollectionProhibitsReplicatedCollectionsWithoutIdInde
"testÇreateCollectionProhibitsReplicatedCollectionsWithoutIdIndex",
_nss.ns(),
[this] {
- AutoGetDb autoDb(_opCtx.get(), _nss.db(), MODE_X);
+ AutoGetDb autoDb(_opCtx.get(), _nss.dbName(), MODE_X);
auto db = autoDb.ensureDbExists(_opCtx.get());
ASSERT_TRUE(db);
diff --git a/src/mongo/db/catalog/drop_collection.cpp b/src/mongo/db/catalog/drop_collection.cpp
index cc164c4aa0f..57192461061 100644
--- a/src/mongo/db/catalog/drop_collection.cpp
+++ b/src/mongo/db/catalog/drop_collection.cpp
@@ -355,7 +355,7 @@ Status _dropCollection(OperationContext* opCtx,
try {
return writeConflictRetry(opCtx, "drop", collectionName.ns(), [&] {
- AutoGetDb autoDb(opCtx, collectionName.db(), MODE_IX);
+ AutoGetDb autoDb(opCtx, collectionName.dbName(), MODE_IX);
auto db = autoDb.getDb();
if (!db) {
return expectedUUID
@@ -505,7 +505,7 @@ Status dropCollection(OperationContext* opCtx,
Status dropCollectionIfUUIDNotMatching(OperationContext* opCtx,
const NamespaceString& ns,
const UUID& expectedUUID) {
- AutoGetDb autoDb(opCtx, ns.db(), MODE_IX);
+ AutoGetDb autoDb(opCtx, ns.dbName(), MODE_IX);
if (autoDb.getDb()) {
{
Lock::CollectionLock collLock(opCtx, ns, MODE_IS);
@@ -540,7 +540,7 @@ Status dropCollectionForApplyOps(OperationContext* opCtx,
hangDropCollectionBeforeLockAcquisition.pauseWhileSet();
}
return writeConflictRetry(opCtx, "drop", collectionName.ns(), [&] {
- AutoGetDb autoDb(opCtx, collectionName.db(), MODE_IX);
+ AutoGetDb autoDb(opCtx, collectionName.dbName(), MODE_IX);
Database* db = autoDb.getDb();
if (!db) {
return Status(ErrorCodes::NamespaceNotFound, "ns not found");
diff --git a/src/mongo/db/catalog/drop_database.cpp b/src/mongo/db/catalog/drop_database.cpp
index 929ac9fac96..dad0b1d9696 100644
--- a/src/mongo/db/catalog/drop_database.cpp
+++ b/src/mongo/db/catalog/drop_database.cpp
@@ -157,7 +157,8 @@ Status _dropDatabase(OperationContext* opCtx, const std::string& dbName, bool ab
{
boost::optional<AutoGetDb> autoDB;
- autoDB.emplace(opCtx, dbName, MODE_X);
+ // TODO SERVER-67549 Use dbName directly.
+ autoDB.emplace(opCtx, DatabaseName(boost::none, dbName), MODE_X);
Database* db = autoDB->getDb();
Status status = _checkNssAndReplState(opCtx, db, dbName);
@@ -191,7 +192,8 @@ Status _dropDatabase(OperationContext* opCtx, const std::string& dbName, bool ab
// yielded.
ScopeGuard dropPendingGuardWhileUnlocked([dbName, opCtx, &dropPendingGuard] {
UninterruptibleLockGuard noInterrupt(opCtx->lockState());
- AutoGetDb autoDB(opCtx, dbName, MODE_IX);
+ // TODO SERVER-67549 Use dbName directly.
+ AutoGetDb autoDB(opCtx, DatabaseName(boost::none, dbName), MODE_IX);
if (auto db = autoDB.getDb()) {
db->setDropPending(opCtx, false);
}
@@ -212,7 +214,8 @@ Status _dropDatabase(OperationContext* opCtx, const std::string& dbName, bool ab
dropDatabaseHangAfterWaitingForIndexBuilds.pauseWhileSet();
}
- autoDB.emplace(opCtx, dbName, MODE_X);
+ // TODO SERVER-67549 Use dbName directly.
+ autoDB.emplace(opCtx, DatabaseName(boost::none, dbName), MODE_X);
db = autoDB->getDb();
dropPendingGuardWhileUnlocked.dismiss();
@@ -307,7 +310,8 @@ Status _dropDatabase(OperationContext* opCtx, const std::string& dbName, bool ab
// locks (which can throw) needed to finish the drop database.
ScopeGuard dropPendingGuardWhileUnlocked([dbName, opCtx] {
UninterruptibleLockGuard noInterrupt(opCtx->lockState());
- AutoGetDb autoDB(opCtx, dbName, MODE_IX);
+ // TODO SERVER-67549 Use dbName directly.
+ AutoGetDb autoDB(opCtx, DatabaseName(boost::none, dbName), MODE_IX);
if (auto db = autoDB.getDb()) {
db->setDropPending(opCtx, false);
}
@@ -388,7 +392,8 @@ Status _dropDatabase(OperationContext* opCtx, const std::string& dbName, bool ab
dropDatabaseHangAfterAllCollectionsDrop.pauseWhileSet();
}
- AutoGetDb autoDB(opCtx, dbName, MODE_X);
+ // TODO SERVER-67549 Use dbName directly.
+ AutoGetDb autoDB(opCtx, DatabaseName(boost::none, dbName), MODE_X);
auto db = autoDB.getDb();
if (!db) {
return Status(ErrorCodes::NamespaceNotFound,
diff --git a/src/mongo/db/catalog/drop_database_test.cpp b/src/mongo/db/catalog/drop_database_test.cpp
index 0c9f6746fb1..1f80d7db67c 100644
--- a/src/mongo/db/catalog/drop_database_test.cpp
+++ b/src/mongo/db/catalog/drop_database_test.cpp
@@ -183,7 +183,7 @@ void DropDatabaseTest::tearDown() {
*/
void _createCollection(OperationContext* opCtx, const NamespaceString& nss) {
writeConflictRetry(opCtx, "testDropCollection", nss.ns(), [=] {
- AutoGetDb autoDb(opCtx, nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx, nss.dbName(), MODE_X);
auto db = autoDb.ensureDbExists(opCtx);
ASSERT_TRUE(db);
@@ -210,7 +210,7 @@ void _removeDatabaseFromCatalog(OperationContext* opCtx, StringData dbName) {
}
TEST_F(DropDatabaseTest, DropDatabaseReturnsNamespaceNotFoundIfDatabaseDoesNotExist) {
- ASSERT_FALSE(AutoGetDb(_opCtx.get(), _nss.db(), MODE_X).getDb());
+ ASSERT_FALSE(AutoGetDb(_opCtx.get(), _nss.dbName(), MODE_X).getDb());
ASSERT_EQUALS(ErrorCodes::NamespaceNotFound,
dropDatabaseForApplyOps(_opCtx.get(), _nss.db().toString()));
}
@@ -238,12 +238,12 @@ void _testDropDatabase(OperationContext* opCtx,
// Set OpObserverMock::db so that we can check Database::isDropPending() while dropping
// collections.
- auto db = AutoGetDb(opCtx, nss.db(), MODE_X).getDb();
+ auto db = AutoGetDb(opCtx, nss.dbName(), MODE_X).getDb();
ASSERT_TRUE(db);
opObserver->db = db;
ASSERT_OK(dropDatabaseForApplyOps(opCtx, nss.db().toString()));
- ASSERT_FALSE(AutoGetDb(opCtx, nss.db(), MODE_X).getDb());
+ ASSERT_FALSE(AutoGetDb(opCtx, nss.dbName(), MODE_X).getDb());
opObserver->db = nullptr;
ASSERT_EQUALS(1U, opObserver->droppedDatabaseNames.size());
@@ -314,7 +314,7 @@ TEST_F(DropDatabaseTest, DropDatabaseResetsDropPendingStateOnException) {
_createCollection(_opCtx.get(), _nss);
{
- AutoGetDb autoDb(_opCtx.get(), _nss.db(), MODE_X);
+ AutoGetDb autoDb(_opCtx.get(), _nss.dbName(), MODE_X);
auto db = autoDb.getDb();
ASSERT_TRUE(db);
}
@@ -325,7 +325,7 @@ TEST_F(DropDatabaseTest, DropDatabaseResetsDropPendingStateOnException) {
"onDropCollection() failed");
{
- AutoGetDb autoDb(_opCtx.get(), _nss.db(), MODE_X);
+ AutoGetDb autoDb(_opCtx.get(), _nss.dbName(), MODE_X);
auto db = autoDb.getDb();
ASSERT_FALSE(db->isDropPending(_opCtx.get()));
}
@@ -336,12 +336,12 @@ void _testDropDatabaseResetsDropPendingStateIfAwaitReplicationFails(OperationCon
bool expectDbPresent) {
_createCollection(opCtx, nss);
- ASSERT_TRUE(AutoGetDb(opCtx, nss.db(), MODE_X).getDb());
+ ASSERT_TRUE(AutoGetDb(opCtx, nss.dbName(), MODE_X).getDb());
ASSERT_EQUALS(ErrorCodes::WriteConcernFailed,
dropDatabaseForApplyOps(opCtx, nss.db().toString()));
- AutoGetDb autoDb(opCtx, nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx, nss.dbName(), MODE_X);
auto db = autoDb.getDb();
if (expectDbPresent) {
ASSERT_TRUE(db);
@@ -386,7 +386,7 @@ TEST_F(DropDatabaseTest,
_createCollection(_opCtx.get(), _nss);
- ASSERT_TRUE(AutoGetDb(_opCtx.get(), _nss.db(), MODE_X).getDb());
+ ASSERT_TRUE(AutoGetDb(_opCtx.get(), _nss.dbName(), MODE_X).getDb());
auto status = dropDatabaseForApplyOps(_opCtx.get(), _nss.db().toString());
ASSERT_EQUALS(ErrorCodes::NamespaceNotFound, status);
@@ -395,7 +395,7 @@ TEST_F(DropDatabaseTest,
<< "Could not drop database " << _nss.db()
<< " because it does not exist after dropping 1 collection(s)."));
- ASSERT_FALSE(AutoGetDb(_opCtx.get(), _nss.db(), MODE_X).getDb());
+ ASSERT_FALSE(AutoGetDb(_opCtx.get(), _nss.dbName(), MODE_X).getDb());
}
TEST_F(DropDatabaseTest,
@@ -411,7 +411,7 @@ TEST_F(DropDatabaseTest,
_createCollection(_opCtx.get(), _nss);
- ASSERT_TRUE(AutoGetDb(_opCtx.get(), _nss.db(), MODE_X).getDb());
+ ASSERT_TRUE(AutoGetDb(_opCtx.get(), _nss.dbName(), MODE_X).getDb());
auto status = dropDatabaseForApplyOps(_opCtx.get(), _nss.db().toString());
ASSERT_EQUALS(ErrorCodes::PrimarySteppedDown, status);
@@ -421,7 +421,7 @@ TEST_F(DropDatabaseTest,
<< " while waiting for 1 pending collection drop(s)."));
// Check drop-pending flag in Database after dropDatabase() fails.
- AutoGetDb autoDb(_opCtx.get(), _nss.db(), MODE_X);
+ AutoGetDb autoDb(_opCtx.get(), _nss.dbName(), MODE_X);
auto db = autoDb.getDb();
ASSERT_TRUE(db);
ASSERT_FALSE(db->isDropPending(_opCtx.get()));
diff --git a/src/mongo/db/catalog/rename_collection.cpp b/src/mongo/db/catalog/rename_collection.cpp
index e038707d438..0fd96248734 100644
--- a/src/mongo/db/catalog/rename_collection.cpp
+++ b/src/mongo/db/catalog/rename_collection.cpp
@@ -753,7 +753,7 @@ void doLocalRenameIfOptionsAndIndexesHaveNotChanged(OperationContext* opCtx,
const RenameCollectionOptions& options,
std::list<BSONObj> originalIndexes,
BSONObj originalCollectionOptions) {
- AutoGetDb dbLock(opCtx, targetNs.db(), MODE_X);
+ AutoGetDb dbLock(opCtx, targetNs.dbName(), MODE_X);
auto collection = dbLock.getDb()
? CollectionCatalog::get(opCtx)->lookupCollectionByNamespace(opCtx, targetNs)
: nullptr;
diff --git a/src/mongo/db/catalog/rename_collection_test.cpp b/src/mongo/db/catalog/rename_collection_test.cpp
index 07efc4750f8..66e175b30ce 100644
--- a/src/mongo/db/catalog/rename_collection_test.cpp
+++ b/src/mongo/db/catalog/rename_collection_test.cpp
@@ -384,7 +384,7 @@ void _createCollection(OperationContext* opCtx,
const NamespaceString& nss,
const CollectionOptions options = {}) {
writeConflictRetry(opCtx, "_createCollection", nss.ns(), [=] {
- AutoGetDb autoDb(opCtx, nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx, nss.dbName(), MODE_X);
auto db = autoDb.ensureDbExists(opCtx);
ASSERT_TRUE(db) << "Cannot create collection " << nss << " because database " << nss.db()
<< " does not exist.";
@@ -519,7 +519,7 @@ CollectionPtr _getCollection_inlock(OperationContext* opCtx, const NamespaceStri
}
TEST_F(RenameCollectionTest, RenameCollectionReturnsNamespaceNotFoundIfDatabaseDoesNotExist) {
- ASSERT_FALSE(AutoGetDb(_opCtx.get(), _sourceNss.db(), MODE_X).getDb());
+ ASSERT_FALSE(AutoGetDb(_opCtx.get(), _sourceNss.dbName(), MODE_X).getDb());
ASSERT_EQUALS(ErrorCodes::NamespaceNotFound,
renameCollection(_opCtx.get(), _sourceNss, _targetNss, {}));
}
diff --git a/src/mongo/db/catalog_raii.cpp b/src/mongo/db/catalog_raii.cpp
index 83f42c4beea..56ee3846b63 100644
--- a/src/mongo/db/catalog_raii.cpp
+++ b/src/mongo/db/catalog_raii.cpp
@@ -175,16 +175,17 @@ void acquireCollectionLocksInResourceIdOrder(
} // namespace
-// TODO SERVER-62923 Use DatabaseName obj to construct '_dbLock' and to pass to
-// DatabaseHolder::getDb().
-AutoGetDb::AutoGetDb(OperationContext* opCtx, StringData dbName, LockMode mode, Date_t deadline)
- : _dbName(dbName), _dbLock(opCtx, DatabaseName(boost::none, dbName), mode, deadline), _db([&] {
- const DatabaseName tenantDbName(boost::none, dbName);
+AutoGetDb::AutoGetDb(OperationContext* opCtx,
+ const DatabaseName& dbName,
+ LockMode mode,
+ Date_t deadline)
+ : _dbName(dbName), _dbLock(opCtx, dbName, mode, deadline), _db([&] {
auto databaseHolder = DatabaseHolder::get(opCtx);
- return databaseHolder->getDb(opCtx, tenantDbName);
+ return databaseHolder->getDb(opCtx, dbName);
}()) {
// The 'primary' database must be version checked for sharding.
- catalog_helper::assertMatchingDbVersion(opCtx, _dbName);
+ // TODO SERVER-63706 Pass dbName directly
+ catalog_helper::assertMatchingDbVersion(opCtx, _dbName.toStringWithTenantId());
}
Database* AutoGetDb::ensureDbExists(OperationContext* opCtx) {
@@ -193,10 +194,9 @@ Database* AutoGetDb::ensureDbExists(OperationContext* opCtx) {
}
auto databaseHolder = DatabaseHolder::get(opCtx);
- const DatabaseName dbName(boost::none, _dbName);
- _db = databaseHolder->openDb(opCtx, dbName, nullptr);
+ _db = databaseHolder->openDb(opCtx, _dbName, nullptr);
- catalog_helper::assertMatchingDbVersion(opCtx, _dbName);
+ catalog_helper::assertMatchingDbVersion(opCtx, _dbName.toStringWithTenantId());
return _db;
}
@@ -213,19 +213,11 @@ AutoGetCollection::AutoGetCollection(
// Acquire the global/RSTL and all the database locks (may or may not be multiple
// databases).
- // TODO SERVER-62923 Use DatabaseName obj directly.
- auto dbName = [nsOrUUID]() {
- // TODO SERVER-67817 Use NamespaceStringOrUUID::db() instead.
- if (nsOrUUID.dbName())
- return nsOrUUID.dbName()->toStringWithTenantId();
-
- if (nsOrUUID.nss())
- return nsOrUUID.nss()->dbName().toStringWithTenantId();
-
- return DatabaseName(boost::none, "").toStringWithTenantId();
- }();
-
- _autoDb.emplace(opCtx, dbName, isSharedLockMode(modeColl) ? MODE_IS : MODE_IX, deadline);
+ // TODO SERVER-67817 Use NamespaceStringOrUUID::db() instead.
+ _autoDb.emplace(opCtx,
+ nsOrUUID.nss() ? nsOrUUID.nss()->dbName() : *nsOrUUID.dbName(),
+ isSharedLockMode(modeColl) ? MODE_IS : MODE_IX,
+ deadline);
// Out of an abundance of caution, force operations to acquire new snapshots after
// acquiring exclusive collection locks. Operations that hold MODE_X locks make an
@@ -263,14 +255,14 @@ AutoGetCollection::AutoGetCollection(
auto secondaryResolvedNss =
catalog->resolveNamespaceStringOrUUID(opCtx, secondaryNssOrUUID);
auto secondaryColl = catalog->lookupCollectionByNamespace(opCtx, secondaryResolvedNss);
- // TODO SERVER-64608 Use tenantID on NamespaceString to construct DatabaseName
- const DatabaseName secondaryDbName(boost::none, secondaryNssOrUUID.db());
+ auto secondaryDbName = secondaryNssOrUUID.dbName() ? secondaryNssOrUUID.dbName()
+ : secondaryNssOrUUID.nss()->dbName();
verifyDbAndCollection(opCtx,
MODE_IS,
secondaryNssOrUUID,
secondaryResolvedNss,
secondaryColl,
- databaseHolder->getDb(opCtx, secondaryDbName));
+ databaseHolder->getDb(opCtx, *secondaryDbName));
}
if (_coll) {
diff --git a/src/mongo/db/catalog_raii.h b/src/mongo/db/catalog_raii.h
index 62d63404e9f..e4dc1fda484 100644
--- a/src/mongo/db/catalog_raii.h
+++ b/src/mongo/db/catalog_raii.h
@@ -57,7 +57,7 @@ class AutoGetDb {
public:
AutoGetDb(OperationContext* opCtx,
- StringData dbName,
+ const DatabaseName& dbName,
LockMode mode,
Date_t deadline = Date_t::max());
@@ -76,7 +76,7 @@ public:
Database* ensureDbExists(OperationContext* opCtx);
private:
- std::string _dbName;
+ DatabaseName _dbName;
// Special note! The primary DBLock must destruct last (be declared first) so that the global
// and RSTL locks are not released until all the secondary DBLocks (without global and RSTL)
diff --git a/src/mongo/db/catalog_raii_test.cpp b/src/mongo/db/catalog_raii_test.cpp
index e7d600cb81d..f55de38adcd 100644
--- a/src/mongo/db/catalog_raii_test.cpp
+++ b/src/mongo/db/catalog_raii_test.cpp
@@ -92,7 +92,9 @@ TEST_F(CatalogRAIITestFixture, AutoGetDBDeadline) {
Lock::DBLock dbLock1(client1.second.get(), nss.dbName(), MODE_X);
ASSERT(client1.second->lockState()->isDbLockedForMode(nss.dbName(), MODE_X));
failsWithLockTimeout(
- [&] { AutoGetDb db(client2.second.get(), nss.db(), MODE_X, Date_t::now() + timeoutMs); },
+ [&] {
+ AutoGetDb db(client2.second.get(), nss.dbName(), MODE_X, Date_t::now() + timeoutMs);
+ },
timeoutMs);
}
@@ -100,25 +102,28 @@ TEST_F(CatalogRAIITestFixture, AutoGetDBGlobalLockDeadline) {
Lock::GlobalLock gLock1(client1.second.get(), MODE_X);
ASSERT(gLock1.isLocked());
failsWithLockTimeout(
- [&] { AutoGetDb db(client2.second.get(), nss.db(), MODE_X, Date_t::now() + timeoutMs); },
+ [&] {
+ AutoGetDb db(client2.second.get(), nss.dbName(), MODE_X, Date_t::now() + timeoutMs);
+ },
timeoutMs);
}
TEST_F(CatalogRAIITestFixture, AutoGetDBDeadlineNow) {
Lock::DBLock dbLock1(client1.second.get(), nss.dbName(), MODE_IX);
ASSERT(client1.second->lockState()->isDbLockedForMode(nss.dbName(), MODE_IX));
- AutoGetDb db(client2.second.get(), nss.db(), MODE_IX);
+ AutoGetDb db(client2.second.get(), nss.dbName(), MODE_IX);
failsWithLockTimeout(
- [&] { AutoGetDb db(client2.second.get(), nss.db(), MODE_X, Date_t::now()); },
+ [&] { AutoGetDb db(client2.second.get(), nss.dbName(), MODE_X, Date_t::now()); },
Milliseconds(0));
}
TEST_F(CatalogRAIITestFixture, AutoGetDBDeadlineMin) {
Lock::DBLock dbLock1(client1.second.get(), nss.dbName(), MODE_IX);
ASSERT(client1.second->lockState()->isDbLockedForMode(nss.dbName(), MODE_IX));
- AutoGetDb db(client2.second.get(), nss.db(), MODE_IX);
- failsWithLockTimeout([&] { AutoGetDb db(client2.second.get(), nss.db(), MODE_X, Date_t{}); },
- Milliseconds(0));
+ AutoGetDb db(client2.second.get(), nss.dbName(), MODE_IX);
+ failsWithLockTimeout(
+ [&] { AutoGetDb db(client2.second.get(), nss.dbName(), MODE_X, Date_t{}); },
+ Milliseconds(0));
}
TEST_F(CatalogRAIITestFixture, AutoGetCollectionCollLockDeadline) {
@@ -299,7 +304,7 @@ TEST_F(CatalogRAIITestFixture, AutoGetDbSecondaryNamespacesSingleDb) {
auto opCtx1 = client1.second.get();
boost::optional<AutoGetDb> autoGetDb;
- autoGetDb.emplace(opCtx1, nss.db(), MODE_IS, Date_t::max());
+ autoGetDb.emplace(opCtx1, nss.dbName(), MODE_IS, Date_t::max());
ASSERT(opCtx1->lockState()->isRSTLLocked());
ASSERT(opCtx1->lockState()->isReadLocked()); // Global lock check
@@ -466,5 +471,31 @@ TEST_F(ReadSourceScopeTest, RestoreReadSource) {
ASSERT_EQ(opCtx()->recoveryUnit()->getPointInTimeReadTimestamp(opCtx()), Timestamp(1, 2));
}
+TEST_F(CatalogRAIITestFixture, AutoGetDBDifferentTenantsConflictingNamespaces) {
+ auto db = "db1";
+ auto tenant1 = TenantId(OID::gen());
+ auto tenant2 = TenantId(OID::gen());
+
+ DatabaseName dbName1(tenant1, db);
+ DatabaseName dbName2(tenant2, db);
+
+ AutoGetDb db1(client1.second.get(), dbName1, MODE_X);
+ AutoGetDb db2(client2.second.get(), dbName2, MODE_X);
+
+ ASSERT(client1.second->lockState()->isDbLockedForMode(dbName1, MODE_X));
+ ASSERT(client2.second->lockState()->isDbLockedForMode(dbName2, MODE_X));
+}
+
+TEST_F(CatalogRAIITestFixture, AutoGetDBWithTenantHitsDeadline) {
+ auto db = "db1";
+ DatabaseName dbName(TenantId(OID::gen()), db);
+
+ Lock::DBLock dbLock1(client1.second.get(), dbName, MODE_X);
+ ASSERT(client1.second->lockState()->isDbLockedForMode(dbName, MODE_X));
+ failsWithLockTimeout(
+ [&] { AutoGetDb db(client2.second.get(), dbName, MODE_X, Date_t::now() + timeoutMs); },
+ timeoutMs);
+}
+
} // namespace
} // namespace mongo
diff --git a/src/mongo/db/commands/dbcheck.cpp b/src/mongo/db/commands/dbcheck.cpp
index 7da38954e9c..99970945e21 100644
--- a/src/mongo/db/commands/dbcheck.cpp
+++ b/src/mongo/db/commands/dbcheck.cpp
@@ -197,7 +197,8 @@ std::unique_ptr<DbCheckRun> fullDatabaseRun(OperationContext* opCtx,
uassert(
ErrorCodes::InvalidNamespace, "Cannot run dbCheck on local database", dbName != "local");
- AutoGetDb agd(opCtx, StringData(dbName), MODE_IS);
+ // TODO SERVER-63353 Change to use dbName directly
+ AutoGetDb agd(opCtx, DatabaseName(boost::none, dbName), MODE_IS);
uassert(ErrorCodes::NamespaceNotFound, "Database " + dbName + " not found", agd.getDb());
const int64_t max = std::numeric_limits<int64_t>::max();
diff --git a/src/mongo/db/commands/dbcommands.cpp b/src/mongo/db/commands/dbcommands.cpp
index 54fca604321..ab19c34d789 100644
--- a/src/mongo/db/commands/dbcommands.cpp
+++ b/src/mongo/db/commands/dbcommands.cpp
@@ -661,7 +661,8 @@ public:
CurOp::get(opCtx)->setNS_inlock(dbname);
}
- AutoGetDb autoDb(opCtx, ns, MODE_IS);
+ // TODO SERVER-67519 Pass ns.dbName() directly once parseNs returns NamespaceString obj
+ AutoGetDb autoDb(opCtx, DatabaseName(boost::none, ns), MODE_IS);
result.append("db", ns);
diff --git a/src/mongo/db/commands/dbcommands_d.cpp b/src/mongo/db/commands/dbcommands_d.cpp
index 67d3586cb30..50f2acdb4df 100644
--- a/src/mongo/db/commands/dbcommands_d.cpp
+++ b/src/mongo/db/commands/dbcommands_d.cpp
@@ -168,7 +168,7 @@ protected:
// Accessing system.profile collection should not conflict with oplog application.
ShouldNotConflictWithSecondaryBatchApplicationBlock shouldNotConflictBlock(
opCtx->lockState());
- AutoGetDb ctx(opCtx, dbName.db(), dbMode);
+ AutoGetDb ctx(opCtx, dbName, dbMode);
Database* db = ctx.getDb();
// Fetches the database profiling level + filter or the server default if the db does not
diff --git a/src/mongo/db/commands/dbhash.cpp b/src/mongo/db/commands/dbhash.cpp
index b2a6fa441c9..c3cb85c3d2a 100644
--- a/src/mongo/db/commands/dbhash.cpp
+++ b/src/mongo/db/commands/dbhash.cpp
@@ -221,7 +221,9 @@ public:
// later commitTransaction or abortTransaction oplog entry.
shouldNotConflictBlock.emplace(opCtx->lockState());
}
- AutoGetDb autoDb(opCtx, ns, lockMode);
+
+ // TODO SERVER-67459 Pass dbName obj directly
+ AutoGetDb autoDb(opCtx, DatabaseName(boost::none, ns), lockMode);
Database* db = autoDb.getDb();
result.append("host", prettyHostName());
diff --git a/src/mongo/db/commands/fle2_compact_cmd.cpp b/src/mongo/db/commands/fle2_compact_cmd.cpp
index 18fe1fc6eef..1867f50ad78 100644
--- a/src/mongo/db/commands/fle2_compact_cmd.cpp
+++ b/src/mongo/db/commands/fle2_compact_cmd.cpp
@@ -71,7 +71,7 @@ CompactStats compactEncryptedCompactionCollection(OperationContext* opCtx,
LOGV2(6319900, "Compacting the encrypted compaction collection", "namespace"_attr = edcNss);
- AutoGetDb autoDb(opCtx, edcNss.db(), MODE_IX);
+ AutoGetDb autoDb(opCtx, edcNss.dbName(), MODE_IX);
uassert(ErrorCodes::NamespaceNotFound,
str::stream() << "Database '" << edcNss.db() << "' does not exist",
autoDb.getDb());
diff --git a/src/mongo/db/commands/list_collections.cpp b/src/mongo/db/commands/list_collections.cpp
index 28cf8bbb451..c8cb9d3a77a 100644
--- a/src/mongo/db/commands/list_collections.cpp
+++ b/src/mongo/db/commands/list_collections.cpp
@@ -333,7 +333,7 @@ public:
{
// Acquire only the global lock and set up a consistent in-memory catalog and
// storage snapshot.
- AutoGetDbForReadMaybeLockFree lockFreeReadBlock(opCtx, db);
+ AutoGetDbForReadMaybeLockFree lockFreeReadBlock(opCtx, dbName);
auto catalog = CollectionCatalog::get(opCtx);
CurOpFailpointHelpers::waitWhileFailPointEnabled(&hangBeforeListCollections,
diff --git a/src/mongo/db/commands/list_databases.cpp b/src/mongo/db/commands/list_databases.cpp
index d43bf0acf7c..05c130c74f7 100644
--- a/src/mongo/db/commands/list_databases.cpp
+++ b/src/mongo/db/commands/list_databases.cpp
@@ -154,7 +154,7 @@ public:
continue;
}
- AutoGetDbForReadMaybeLockFree lockFreeReadBlock(opCtx, dbName.db());
+ AutoGetDbForReadMaybeLockFree lockFreeReadBlock(opCtx, dbName);
// The database could have been dropped since we called 'listDatabases()' above.
if (!DatabaseHolder::get(opCtx)->dbExists(opCtx, dbName)) {
continue;
diff --git a/src/mongo/db/commands/test_commands.cpp b/src/mongo/db/commands/test_commands.cpp
index 864c8c762b3..413607a19a1 100644
--- a/src/mongo/db/commands/test_commands.cpp
+++ b/src/mongo/db/commands/test_commands.cpp
@@ -262,7 +262,7 @@ public:
const Timestamp requestedPinTs = cmdObj.firstElement().timestamp();
const bool round = cmdObj["round"].booleanSafe();
- AutoGetDb autoDb(opCtx, kDurableHistoryTestNss.db(), MODE_IX);
+ AutoGetDb autoDb(opCtx, kDurableHistoryTestNss.dbName(), MODE_IX);
Lock::CollectionLock collLock(opCtx, kDurableHistoryTestNss, MODE_IX);
if (!CollectionCatalog::get(opCtx)->lookupCollectionByNamespace(
opCtx,
diff --git a/src/mongo/db/commands/validate_db_metadata_cmd.cpp b/src/mongo/db/commands/validate_db_metadata_cmd.cpp
index 6b0a494c3f6..3ba6108f237 100644
--- a/src/mongo/db/commands/validate_db_metadata_cmd.cpp
+++ b/src/mongo/db/commands/validate_db_metadata_cmd.cpp
@@ -130,7 +130,7 @@ public:
: collectionCatalog->getAllDbNames();
for (const auto& dbName : dbNames) {
- AutoGetDb autoDb(opCtx, dbName.db(), LockMode::MODE_IS);
+ AutoGetDb autoDb(opCtx, dbName, LockMode::MODE_IS);
if (!autoDb.getDb()) {
continue;
}
diff --git a/src/mongo/db/db_raii.cpp b/src/mongo/db/db_raii.cpp
index cc9c4ed8c49..bf35c7558d5 100644
--- a/src/mongo/db/db_raii.cpp
+++ b/src/mongo/db/db_raii.cpp
@@ -976,7 +976,7 @@ AutoReadLockFree::AutoReadLockFree(OperationContext* opCtx, Date_t deadline)
}
AutoGetDbForReadLockFree::AutoGetDbForReadLockFree(OperationContext* opCtx,
- StringData dbName,
+ const DatabaseName& dbName,
Date_t deadline)
: _catalogStash(opCtx),
_lockFreeReadsBlock(opCtx),
@@ -996,7 +996,8 @@ AutoGetDbForReadLockFree::AutoGetDbForReadLockFree(OperationContext* opCtx,
// Note: this must always be checked, regardless of whether the collection exists, so
// that the dbVersion of this node or the caller gets updated quickly in case either is
// stale.
- catalog_helper::assertMatchingDbVersion(opCtx, dbName);
+ // TODO SERVER-63706 Pass dbName directly.
+ catalog_helper::assertMatchingDbVersion(opCtx, dbName.toStringWithTenantId());
return std::make_pair(&fakeColl, /* isView */ false);
},
/* ResetFunc */
@@ -1006,7 +1007,7 @@ AutoGetDbForReadLockFree::AutoGetDbForReadLockFree(OperationContext* opCtx,
}
AutoGetDbForReadMaybeLockFree::AutoGetDbForReadMaybeLockFree(OperationContext* opCtx,
- StringData dbName,
+ const DatabaseName& dbName,
Date_t deadline) {
if (supportsLockFreeRead(opCtx)) {
_autoGetLockFree.emplace(opCtx, dbName, deadline);
diff --git a/src/mongo/db/db_raii.h b/src/mongo/db/db_raii.h
index f2b2b8e0c0c..cd3bfa635ee 100644
--- a/src/mongo/db/db_raii.h
+++ b/src/mongo/db/db_raii.h
@@ -503,7 +503,7 @@ private:
class AutoGetDbForReadLockFree {
public:
AutoGetDbForReadLockFree(OperationContext* opCtx,
- StringData dbName,
+ const DatabaseName& dbName,
Date_t deadline = Date_t::max());
private:
@@ -524,7 +524,7 @@ private:
class AutoGetDbForReadMaybeLockFree {
public:
AutoGetDbForReadMaybeLockFree(OperationContext* opCtx,
- StringData dbName,
+ const DatabaseName& dbName,
Date_t deadline = Date_t::max());
private:
diff --git a/src/mongo/db/index_build_entry_helpers.cpp b/src/mongo/db/index_build_entry_helpers.cpp
index 471b2dc2fc3..4d6f0884a89 100644
--- a/src/mongo/db/index_build_entry_helpers.cpp
+++ b/src/mongo/db/index_build_entry_helpers.cpp
@@ -172,7 +172,7 @@ void ensureIndexBuildEntriesNamespaceExists(OperationContext* opCtx) {
"createIndexBuildCollection",
NamespaceString::kIndexBuildEntryNamespace.ns(),
[&]() -> void {
- AutoGetDb autoDb(opCtx, NamespaceString::kIndexBuildEntryNamespace.db(), MODE_IX);
+ AutoGetDb autoDb(opCtx, NamespaceString::kIndexBuildEntryNamespace.dbName(), MODE_IX);
auto db = autoDb.ensureDbExists(opCtx);
// Ensure the database exists.
diff --git a/src/mongo/db/index_builds_coordinator.cpp b/src/mongo/db/index_builds_coordinator.cpp
index 898065a7976..30b66e249b5 100644
--- a/src/mongo/db/index_builds_coordinator.cpp
+++ b/src/mongo/db/index_builds_coordinator.cpp
@@ -2681,7 +2681,10 @@ IndexBuildsCoordinator::CommitResult IndexBuildsCoordinator::_insertKeysFromSide
hangIndexBuildBeforeCommit.pauseWhileSet();
}
- AutoGetDb autoDb(opCtx, replState->dbName, MODE_IX);
+ // TODO SERVER-67437 Once ReplIndexBuildState holds DatabaseName, use dbName directly for
+ // lock
+ DatabaseName dbName(boost::none, replState->dbName);
+ AutoGetDb autoDb(opCtx, dbName, MODE_IX);
// Unlock RSTL to avoid deadlocks with prepare conflicts and state transitions caused by waiting
// for a a strong collection lock. See SERVER-42621.
diff --git a/src/mongo/db/matcher/expression_text.cpp b/src/mongo/db/matcher/expression_text.cpp
index 5dcebcd40e5..98937e42b95 100644
--- a/src/mongo/db/matcher/expression_text.cpp
+++ b/src/mongo/db/matcher/expression_text.cpp
@@ -57,7 +57,7 @@ TextMatchExpression::TextMatchExpression(OperationContext* opCtx,
fts::TextIndexVersion version;
{
// Find text index.
- AutoGetDb autoDb(opCtx, nss.db(), MODE_IS);
+ AutoGetDb autoDb(opCtx, nss.dbName(), MODE_IS);
Lock::CollectionLock collLock(opCtx, nss, MODE_IS);
Database* db = autoDb.getDb();
diff --git a/src/mongo/db/mongod_main.cpp b/src/mongo/db/mongod_main.cpp
index e431f697a36..a9101d83dcb 100644
--- a/src/mongo/db/mongod_main.cpp
+++ b/src/mongo/db/mongod_main.cpp
@@ -277,7 +277,7 @@ void logStartup(OperationContext* opCtx) {
BSONObj o = toLog.obj();
Lock::GlobalWrite lk(opCtx);
- AutoGetDb autoDb(opCtx, startupLogCollectionName.db(), mongo::MODE_X);
+ AutoGetDb autoDb(opCtx, startupLogCollectionName.dbName(), mongo::MODE_X);
auto db = autoDb.ensureDbExists(opCtx);
CollectionPtr collection =
CollectionCatalog::get(opCtx)->lookupCollectionByNamespace(opCtx, startupLogCollectionName);
diff --git a/src/mongo/db/namespace_string.h b/src/mongo/db/namespace_string.h
index 3a1d3485de1..ac19873b8ab 100644
--- a/src/mongo/db/namespace_string.h
+++ b/src/mongo/db/namespace_string.h
@@ -701,6 +701,7 @@ private:
*/
class NamespaceStringOrUUID {
public:
+ NamespaceStringOrUUID() = delete;
NamespaceStringOrUUID(NamespaceString nss) : _nss(std::move(nss)) {}
NamespaceStringOrUUID(DatabaseName dbname, UUID uuid)
: _uuid(std::move(uuid)), _dbname(std::move(dbname)) {}
diff --git a/src/mongo/db/op_observer/op_observer_impl_test.cpp b/src/mongo/db/op_observer/op_observer_impl_test.cpp
index 2792fc3e716..5d56f716d19 100644
--- a/src/mongo/db/op_observer/op_observer_impl_test.cpp
+++ b/src/mongo/db/op_observer/op_observer_impl_test.cpp
@@ -356,7 +356,7 @@ TEST_F(OpObserverTest, StartIndexBuildExpectedOplogEntry) {
// Write to the oplog.
{
- AutoGetDb autoDb(opCtx.get(), nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx.get(), nss.dbName(), MODE_X);
WriteUnitOfWork wunit(opCtx.get());
opObserver.onStartIndexBuild(
opCtx.get(), nss, uuid, indexBuildUUID, specs, false /*fromMigrate*/);
@@ -396,7 +396,7 @@ TEST_F(OpObserverTest, CommitIndexBuildExpectedOplogEntry) {
// Write to the oplog.
{
- AutoGetDb autoDb(opCtx.get(), nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx.get(), nss.dbName(), MODE_X);
WriteUnitOfWork wunit(opCtx.get());
opObserver.onCommitIndexBuild(
opCtx.get(), nss, uuid, indexBuildUUID, specs, false /*fromMigrate*/);
@@ -437,7 +437,7 @@ TEST_F(OpObserverTest, AbortIndexBuildExpectedOplogEntry) {
// Write to the oplog.
Status cause(ErrorCodes::OperationFailed, "index build failed");
{
- AutoGetDb autoDb(opCtx.get(), nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx.get(), nss.dbName(), MODE_X);
WriteUnitOfWork wunit(opCtx.get());
auto fromMigrate = false;
opObserver.onAbortIndexBuild(
@@ -582,7 +582,7 @@ TEST_F(OpObserverTest, OnDropCollectionReturnsDropOpTime) {
// Write to the oplog.
repl::OpTime dropOpTime;
{
- AutoGetDb autoDb(opCtx.get(), nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx.get(), nss.dbName(), MODE_X);
WriteUnitOfWork wunit(opCtx.get());
opObserver.onDropCollection(
opCtx.get(), nss, uuid, 0U, OpObserver::CollectionDropType::kTwoPhase);
@@ -640,7 +640,7 @@ TEST_F(OpObserverTest, OnRenameCollectionReturnsRenameOpTime) {
// Write to the oplog.
repl::OpTime renameOpTime;
{
- AutoGetDb autoDb(opCtx.get(), sourceNss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx.get(), sourceNss.dbName(), MODE_X);
WriteUnitOfWork wunit(opCtx.get());
opObserver.onRenameCollection(
opCtx.get(), sourceNss, targetNss, uuid, dropTargetUuid, 0U, stayTemp);
@@ -746,7 +746,7 @@ TEST_F(OpObserverTest, OnRenameCollectionOmitsDropTargetFieldIfDropTargetUuidIsN
// Write to the oplog.
{
- AutoGetDb autoDb(opCtx.get(), sourceNss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx.get(), sourceNss.dbName(), MODE_X);
WriteUnitOfWork wunit(opCtx.get());
opObserver.onRenameCollection(opCtx.get(), sourceNss, targetNss, uuid, {}, 0U, stayTemp);
wunit.commit();
@@ -794,7 +794,7 @@ TEST_F(OpObserverTest, ImportCollectionOplogEntry) {
// Write to the oplog.
{
- AutoGetDb autoDb(opCtx.get(), nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx.get(), nss.dbName(), MODE_X);
WriteUnitOfWork wunit(opCtx.get());
opObserver.onImportCollection(opCtx.get(),
importUUID,
@@ -907,7 +907,7 @@ TEST_F(OpObserverTest, SingleStatementUpdateTestIncludesTenantId) {
OplogUpdateEntryArgs update(&updateArgs, nss, uuid);
WriteUnitOfWork wuow(opCtx.get());
- AutoGetDb autoDb(opCtx.get(), nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx.get(), nss.dbName(), MODE_X);
OpObserverRegistry opObserver;
opObserver.addObserver(std::make_unique<OpObserverImpl>(std::make_unique<OplogWriterImpl>()));
@@ -1040,7 +1040,7 @@ TEST_F(OpObserverTest, MultipleAboutToDeleteAndOnDelete) {
OpObserverImpl opObserver(std::make_unique<OplogWriterImpl>());
auto opCtx = cc().makeOperationContext();
NamespaceString nss = {boost::none, "test", "coll"};
- AutoGetDb autoDb(opCtx.get(), nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx.get(), nss.dbName(), MODE_X);
WriteUnitOfWork wunit(opCtx.get());
opObserver.aboutToDelete(opCtx.get(), nss, uuid, BSON("_id" << 1));
opObserver.onDelete(opCtx.get(), nss, uuid, kUninitializedStmtId, {});
@@ -2051,7 +2051,7 @@ protected:
OplogUpdateEntryArgs update(&updateArgs, nss, uuid);
update.retryableFindAndModifyLocation = RetryableFindAndModifyLocation::kSideCollection;
- AutoGetDb autoDb(opCtx(), nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx(), nss.dbName(), MODE_X);
opObserver().onUpdate(opCtx(), update);
commit();
@@ -2082,7 +2082,7 @@ protected:
OplogUpdateEntryArgs update(&updateArgs, nss, uuid);
update.retryableFindAndModifyLocation = RetryableFindAndModifyLocation::kSideCollection;
- AutoGetDb autoDb(opCtx(), nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx(), nss.dbName(), MODE_X);
opObserver().onUpdate(opCtx(), update);
commit();
@@ -2102,7 +2102,7 @@ protected:
NamespaceString nss = {boost::none, "test", "coll"};
const auto uuid = UUID::gen();
- AutoGetDb autoDb(opCtx(), nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx(), nss.dbName(), MODE_X);
const auto deletedDoc = BSON("_id" << 0 << "data"
<< "x");
opObserver().aboutToDelete(opCtx(), nss, uuid, deletedDoc);
diff --git a/src/mongo/db/ops/write_ops_exec.cpp b/src/mongo/db/ops/write_ops_exec.cpp
index 53c7f0c8a7a..8156553851e 100644
--- a/src/mongo/db/ops/write_ops_exec.cpp
+++ b/src/mongo/db/ops/write_ops_exec.cpp
@@ -235,7 +235,7 @@ void assertCanWrite_inlock(OperationContext* opCtx, const NamespaceString& ns) {
void makeCollection(OperationContext* opCtx, const NamespaceString& ns) {
writeConflictRetry(opCtx, "implicit collection creation", ns.ns(), [&opCtx, &ns] {
- AutoGetDb autoDb(opCtx, ns.db(), MODE_IX);
+ AutoGetDb autoDb(opCtx, ns.dbName(), MODE_IX);
Lock::CollectionLock collLock(opCtx, ns, MODE_IX);
assertCanWrite_inlock(opCtx, ns);
diff --git a/src/mongo/db/persistent_task_store_test.cpp b/src/mongo/db/persistent_task_store_test.cpp
index d7e193e9302..c2c2beeb19b 100644
--- a/src/mongo/db/persistent_task_store_test.cpp
+++ b/src/mongo/db/persistent_task_store_test.cpp
@@ -74,7 +74,7 @@ class PersistentTaskStoreTest : public CatalogTestFixture {
CatalogTestFixture::setUp();
auto opCtx = operationContext();
- AutoGetDb autoDb(opCtx, kNss.db(), MODE_IX);
+ AutoGetDb autoDb(opCtx, kNss.dbName(), MODE_IX);
Lock::CollectionLock collLock(opCtx, kNss, MODE_IX);
}
};
diff --git a/src/mongo/db/repl/oplog_test.cpp b/src/mongo/db/repl/oplog_test.cpp
index 445656974ae..2ff9468bbb8 100644
--- a/src/mongo/db/repl/oplog_test.cpp
+++ b/src/mongo/db/repl/oplog_test.cpp
@@ -105,7 +105,7 @@ TEST_F(OplogTest, LogOpReturnsOpTimeOnSuccessfulInsertIntoOplogCollection) {
oplogEntry.setNss(nss);
oplogEntry.setObject(msgObj);
oplogEntry.setWallClockTime(Date_t::now());
- AutoGetDb autoDb(opCtx.get(), nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx.get(), nss.dbName(), MODE_X);
WriteUnitOfWork wunit(opCtx.get());
opTime = logOp(opCtx.get(), &oplogEntry);
ASSERT_FALSE(opTime.isNull());
@@ -242,7 +242,7 @@ TEST_F(OplogTest, ConcurrentLogOp) {
unittest::Barrier* barrier) {
return [=] {
auto opCtx = cc().makeOperationContext();
- AutoGetDb autoDb(opCtx.get(), nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx.get(), nss.dbName(), MODE_X);
WriteUnitOfWork wunit(opCtx.get());
_logOpNoopWithMsg(opCtx.get(), mtx, opTimeNssMap, nss);
@@ -273,7 +273,7 @@ TEST_F(OplogTest, ConcurrentLogOpRevertFirstOplogEntry) {
unittest::Barrier* barrier) {
return [=] {
auto opCtx = cc().makeOperationContext();
- AutoGetDb autoDb(opCtx.get(), nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx.get(), nss.dbName(), MODE_X);
WriteUnitOfWork wunit(opCtx.get());
auto opTime = _logOpNoopWithMsg(opCtx.get(), mtx, opTimeNssMap, nss);
@@ -319,7 +319,7 @@ TEST_F(OplogTest, ConcurrentLogOpRevertLastOplogEntry) {
unittest::Barrier* barrier) {
return [=] {
auto opCtx = cc().makeOperationContext();
- AutoGetDb autoDb(opCtx.get(), nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx.get(), nss.dbName(), MODE_X);
WriteUnitOfWork wunit(opCtx.get());
auto opTime = _logOpNoopWithMsg(opCtx.get(), mtx, opTimeNssMap, nss);
@@ -372,7 +372,7 @@ TEST_F(OplogTest, MigrationIdAddedToOplog) {
oplogEntry.setNss(nss);
oplogEntry.setObject(msgObj);
oplogEntry.setWallClockTime(Date_t::now());
- AutoGetDb autoDb(opCtx.get(), nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx.get(), nss.dbName(), MODE_X);
WriteUnitOfWork wunit(opCtx.get());
opTime = logOp(opCtx.get(), &oplogEntry);
ASSERT_FALSE(opTime.isNull());
diff --git a/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp b/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp
index b9653ab4753..227e60b0444 100644
--- a/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp
+++ b/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp
@@ -1058,7 +1058,7 @@ void ReplicationCoordinatorExternalStateImpl::_dropAllTempCollections(OperationC
"Removing temporary collections from {db}",
"Removing temporary collections",
"db"_attr = dbName);
- AutoGetDb autoDb(opCtx, dbName.db(), MODE_IX);
+ AutoGetDb autoDb(opCtx, dbName, MODE_IX);
invariant(autoDb.getDb(),
str::stream() << "Unable to get reference to database " << dbName.db());
autoDb.getDb()->clearTmpCollections(opCtx);
diff --git a/src/mongo/db/repl/replication_recovery.cpp b/src/mongo/db/repl/replication_recovery.cpp
index 50f1bd83e38..a8cd23cd89b 100644
--- a/src/mongo/db/repl/replication_recovery.cpp
+++ b/src/mongo/db/repl/replication_recovery.cpp
@@ -806,7 +806,7 @@ void ReplicationRecoveryImpl::_truncateOplogTo(OperationContext* opCtx,
// Fetch the oplog collection.
const NamespaceString oplogNss(NamespaceString::kRsOplogNamespace);
- AutoGetDb autoDb(opCtx, oplogNss.db(), MODE_IX);
+ AutoGetDb autoDb(opCtx, oplogNss.dbName(), MODE_IX);
Lock::CollectionLock oplogCollectionLoc(opCtx, oplogNss, MODE_X);
auto oplogCollection =
CollectionCatalog::get(opCtx)->lookupCollectionByNamespace(opCtx, oplogNss);
diff --git a/src/mongo/db/repl/rs_rollback.cpp b/src/mongo/db/repl/rs_rollback.cpp
index c90093fcbe8..66c05c2ef0f 100644
--- a/src/mongo/db/repl/rs_rollback.cpp
+++ b/src/mongo/db/repl/rs_rollback.cpp
@@ -1503,7 +1503,7 @@ void rollback_internal::syncFixUp(OperationContext* opCtx,
"Dropping collection",
"namespace"_attr = *nss,
"uuid"_attr = uuid);
- AutoGetDb dbLock(opCtx, nss->db(), MODE_X);
+ AutoGetDb dbLock(opCtx, nss->dbName(), MODE_X);
Database* db = dbLock.getDb();
if (db) {
diff --git a/src/mongo/db/repl/storage_interface_impl.cpp b/src/mongo/db/repl/storage_interface_impl.cpp
index 9cfc1b0f4e7..0fcd6083e77 100644
--- a/src/mongo/db/repl/storage_interface_impl.cpp
+++ b/src/mongo/db/repl/storage_interface_impl.cpp
@@ -242,7 +242,7 @@ StorageInterfaceImpl::createCollectionForBulkLoading(
UnreplicatedWritesBlock uwb(opCtx.get());
// Get locks and create the collection.
- AutoGetDb autoDb(opCtx.get(), nss.db(), MODE_IX);
+ AutoGetDb autoDb(opCtx.get(), nss.dbName(), MODE_IX);
AutoGetCollection coll(opCtx.get(), nss, fixLockModeForSystemDotViewsChanges(nss, MODE_X));
if (coll) {
return Status(ErrorCodes::NamespaceExists,
@@ -452,7 +452,7 @@ Status StorageInterfaceImpl::createCollection(OperationContext* opCtx,
const bool createIdIndex,
const BSONObj& idIndexSpec) {
return writeConflictRetry(opCtx, "StorageInterfaceImpl::createCollection", nss.ns(), [&] {
- AutoGetDb databaseWriteGuard(opCtx, nss.db(), MODE_IX);
+ AutoGetDb databaseWriteGuard(opCtx, nss.dbName(), MODE_IX);
auto db = databaseWriteGuard.ensureDbExists(opCtx);
invariant(db);
@@ -513,7 +513,7 @@ Status StorageInterfaceImpl::createIndexesOnEmptyCollection(
Status StorageInterfaceImpl::dropCollection(OperationContext* opCtx, const NamespaceString& nss) {
return writeConflictRetry(opCtx, "StorageInterfaceImpl::dropCollection", nss.ns(), [&] {
- AutoGetDb autoDb(opCtx, nss.db(), MODE_IX);
+ AutoGetDb autoDb(opCtx, nss.dbName(), MODE_IX);
Lock::CollectionLock collLock(opCtx, nss, MODE_X);
if (!autoDb.getDb()) {
// Database does not exist - nothing to do.
@@ -560,7 +560,7 @@ Status StorageInterfaceImpl::renameCollection(OperationContext* opCtx,
}
return writeConflictRetry(opCtx, "StorageInterfaceImpl::renameCollection", fromNS.ns(), [&] {
- AutoGetDb autoDB(opCtx, fromNS.db(), MODE_X);
+ AutoGetDb autoDB(opCtx, fromNS.dbName(), MODE_X);
if (!autoDB.getDb()) {
return Status(ErrorCodes::NamespaceNotFound,
str::stream()
@@ -1428,7 +1428,7 @@ boost::optional<Timestamp> StorageInterfaceImpl::getRecoveryTimestamp(
}
Status StorageInterfaceImpl::isAdminDbValid(OperationContext* opCtx) {
- AutoGetDb autoDB(opCtx, "admin", MODE_X);
+ AutoGetDb autoDB(opCtx, DatabaseName(boost::none, "admin"), MODE_X);
auto adminDb = autoDB.getDb();
if (!adminDb) {
return Status::OK();
diff --git a/src/mongo/db/repl/storage_timestamp_test.cpp b/src/mongo/db/repl/storage_timestamp_test.cpp
index 7c613a67773..299bfcc2339 100644
--- a/src/mongo/db/repl/storage_timestamp_test.cpp
+++ b/src/mongo/db/repl/storage_timestamp_test.cpp
@@ -115,7 +115,7 @@ Status createIndexFromSpec(OperationContext* opCtx,
// on this namespace would have a dangling Collection pointer after this function has run.
invariant(!opCtx->lockState()->isCollectionLockedForMode(nss, MODE_IX));
- AutoGetDb autoDb(opCtx, nsToDatabaseSubstring(ns), MODE_X);
+ AutoGetDb autoDb(opCtx, nss.dbName(), MODE_X);
{
WriteUnitOfWork wunit(opCtx);
auto coll =
diff --git a/src/mongo/db/repl/tenant_file_importer_service.cpp b/src/mongo/db/repl/tenant_file_importer_service.cpp
index af565c3c713..19173a7c259 100644
--- a/src/mongo/db/repl/tenant_file_importer_service.cpp
+++ b/src/mongo/db/repl/tenant_file_importer_service.cpp
@@ -101,7 +101,7 @@ void importCopiedFiles(OperationContext* opCtx,
auto catalog = CollectionCatalog::get(opCtx);
for (auto&& m : metadatas) {
- AutoGetDb dbLock(opCtx, m.ns.db(), MODE_IX);
+ AutoGetDb dbLock(opCtx, m.ns.dbName(), MODE_IX);
Lock::CollectionLock systemViewsLock(
opCtx,
NamespaceString(m.ns.dbName(), NamespaceString::kSystemDotViewsCollectionName),
diff --git a/src/mongo/db/repl/tenant_migration_shard_merge_util.cpp b/src/mongo/db/repl/tenant_migration_shard_merge_util.cpp
index b683fe3aebf..a600fdc5289 100644
--- a/src/mongo/db/repl/tenant_migration_shard_merge_util.cpp
+++ b/src/mongo/db/repl/tenant_migration_shard_merge_util.cpp
@@ -171,7 +171,7 @@ void wiredTigerImportFromBackupCursor(OperationContext* opCtx,
const auto nss = collectionMetadata.ns;
writeConflictRetry(opCtx, "importCollection", nss.ns(), [&] {
LOGV2_DEBUG(6114303, 1, "Importing donor collection", "ns"_attr = nss);
- AutoGetDb autoDb(opCtx, nss.db(), MODE_IX);
+ AutoGetDb autoDb(opCtx, nss.dbName(), MODE_IX);
auto db = autoDb.ensureDbExists(opCtx);
invariant(db);
Lock::CollectionLock collLock(opCtx, nss, MODE_X);
diff --git a/src/mongo/db/s/database_sharding_state_test.cpp b/src/mongo/db/s/database_sharding_state_test.cpp
index a0848154f53..bc263c5ab50 100644
--- a/src/mongo/db/s/database_sharding_state_test.cpp
+++ b/src/mongo/db/s/database_sharding_state_test.cpp
@@ -137,7 +137,7 @@ TEST_F(DatabaseShardingStateTestWithMockedLoader, OnDbVersionMismatch) {
auto opCtx = operationContext();
auto getActiveDbVersion = [&] {
- AutoGetDb autoDb(opCtx, kDbName, MODE_IS);
+ AutoGetDb autoDb(opCtx, DatabaseName(boost::none, kDbName), MODE_IS);
return DatabaseHolder::get(opCtx)->getDbVersion(opCtx, kDbName);
};
@@ -170,7 +170,7 @@ TEST_F(DatabaseShardingStateTestWithMockedLoader, ForceDatabaseRefresh) {
forceDatabaseRefresh(opCtx, kDbName);
boost::optional<DatabaseVersion> activeDbVersion = [&] {
- AutoGetDb autoDb(opCtx, kDbName, MODE_IS);
+ AutoGetDb autoDb(opCtx, DatabaseName(boost::none, kDbName), MODE_IS);
return DatabaseHolder::get(opCtx)->getDbVersion(opCtx, kDbName);
}();
ASSERT_TRUE(activeDbVersion);
diff --git a/src/mongo/db/s/get_database_version_command.cpp b/src/mongo/db/s/get_database_version_command.cpp
index 2b5ebd0ff2a..a906d3a0b89 100644
--- a/src/mongo/db/s/get_database_version_command.cpp
+++ b/src/mongo/db/s/get_database_version_command.cpp
@@ -80,7 +80,7 @@ public:
str::stream() << definition()->getName() << " can only be run on shard servers",
serverGlobalParams.clusterRole == ClusterRole::ShardServer);
BSONObj versionObj;
- AutoGetDb autoDb(opCtx, _targetDb(), MODE_IS);
+ AutoGetDb autoDb(opCtx, DatabaseName(boost::none, _targetDb()), MODE_IS);
if (const auto dbVersion =
DatabaseHolder::get(opCtx)->getDbVersion(opCtx, _targetDb())) {
diff --git a/src/mongo/db/s/migration_chunk_cloner_source_legacy_test.cpp b/src/mongo/db/s/migration_chunk_cloner_source_legacy_test.cpp
index 4837f2bb552..b5046b97d86 100644
--- a/src/mongo/db/s/migration_chunk_cloner_source_legacy_test.cpp
+++ b/src/mongo/db/s/migration_chunk_cloner_source_legacy_test.cpp
@@ -182,7 +182,7 @@ protected:
ChunkVersion({epoch, timestamp}, {1, 0}),
ShardId("dummyShardId")}});
- AutoGetDb autoDb(operationContext(), kNss.db(), MODE_IX);
+ AutoGetDb autoDb(operationContext(), kNss.dbName(), MODE_IX);
Lock::CollectionLock collLock(operationContext(), kNss, MODE_IX);
CollectionShardingRuntime::get(operationContext(), kNss)
->setFilteringMetadata(
diff --git a/src/mongo/db/s/migration_destination_manager.cpp b/src/mongo/db/s/migration_destination_manager.cpp
index bc707e25182..58fe7659d21 100644
--- a/src/mongo/db/s/migration_destination_manager.cpp
+++ b/src/mongo/db/s/migration_destination_manager.cpp
@@ -992,7 +992,7 @@ void MigrationDestinationManager::cloneCollectionIndexesAndOptions(
// Take the exclusive database lock if the collection does not exist or indexes are missing
// (needs auto-heal).
- AutoGetDb autoDb(opCtx, nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx, nss.dbName(), MODE_X);
auto db = autoDb.ensureDbExists(opCtx);
auto collection = CollectionCatalog::get(opCtx)->lookupCollectionByNamespace(opCtx, nss);
diff --git a/src/mongo/db/s/migration_util.cpp b/src/mongo/db/s/migration_util.cpp
index a0a1471a5e3..e71dfe04d89 100644
--- a/src/mongo/db/s/migration_util.cpp
+++ b/src/mongo/db/s/migration_util.cpp
@@ -1067,7 +1067,7 @@ void recoverMigrationCoordinations(OperationContext* opCtx,
}
auto setFilteringMetadata = [&opCtx, &currentMetadata, &doc, &cancellationToken]() {
- AutoGetDb autoDb(opCtx, doc.getNss().db(), MODE_IX);
+ AutoGetDb autoDb(opCtx, doc.getNss().dbName(), MODE_IX);
Lock::CollectionLock collLock(opCtx, doc.getNss(), MODE_IX);
auto* const csr = CollectionShardingRuntime::get(opCtx, doc.getNss());
diff --git a/src/mongo/db/s/move_primary_source_manager.cpp b/src/mongo/db/s/move_primary_source_manager.cpp
index 11b8390f55a..e016d060f09 100644
--- a/src/mongo/db/s/move_primary_source_manager.cpp
+++ b/src/mongo/db/s/move_primary_source_manager.cpp
@@ -100,7 +100,7 @@ Status MovePrimarySourceManager::clone(OperationContext* opCtx) {
{
// We use AutoGetDb::ensureDbExists() the first time just in case movePrimary was called
// before any data was inserted into the database.
- AutoGetDb autoDb(opCtx, getNss().toString(), MODE_X);
+ AutoGetDb autoDb(opCtx, getNss().dbName(), MODE_X);
invariant(autoDb.ensureDbExists(opCtx), getNss().toString());
auto dss = DatabaseShardingState::get(opCtx, getNss().toString());
@@ -164,7 +164,7 @@ Status MovePrimarySourceManager::enterCriticalSection(OperationContext* opCtx) {
// The critical section must be entered with the database X lock in order to ensure there
// are no writes which could have entered and passed the database version check just before
// we entered the critical section, but will potentially complete after we left it.
- AutoGetDb autoDb(opCtx, getNss().toString(), MODE_X);
+ AutoGetDb autoDb(opCtx, getNss().dbName(), MODE_X);
if (!autoDb.getDb()) {
uasserted(ErrorCodes::ConflictingOperationInProgress,
@@ -213,7 +213,7 @@ Status MovePrimarySourceManager::commitOnConfig(OperationContext* opCtx) {
ScopeGuard scopedGuard([&] { cleanupOnError(opCtx); });
{
- AutoGetDb autoDb(opCtx, getNss().toString(), MODE_X);
+ AutoGetDb autoDb(opCtx, getNss().dbName(), MODE_X);
if (!autoDb.getDb()) {
uasserted(ErrorCodes::ConflictingOperationInProgress,
@@ -273,7 +273,7 @@ Status MovePrimarySourceManager::commitOnConfig(OperationContext* opCtx) {
// this node can accept writes for this collection as a proxy for it being primary.
if (!validateStatus.isOK()) {
UninterruptibleLockGuard noInterrupt(opCtx->lockState());
- AutoGetDb autoDb(opCtx, getNss().toString(), MODE_IX);
+ AutoGetDb autoDb(opCtx, getNss().dbName(), MODE_IX);
if (!autoDb.getDb()) {
uasserted(ErrorCodes::ConflictingOperationInProgress,
@@ -443,7 +443,7 @@ void MovePrimarySourceManager::_cleanup(OperationContext* opCtx) {
{
// Unregister from the database's sharding state if we're still registered.
UninterruptibleLockGuard noInterrupt(opCtx->lockState());
- AutoGetDb autoDb(opCtx, getNss().toString(), MODE_IX);
+ AutoGetDb autoDb(opCtx, getNss().dbName(), MODE_IX);
auto dss = DatabaseShardingState::get(opCtx, getNss().db());
dss->clearMovePrimarySourceManager(opCtx);
diff --git a/src/mongo/db/s/persistent_task_queue_test.cpp b/src/mongo/db/s/persistent_task_queue_test.cpp
index 4c498940583..55f490d9a7f 100644
--- a/src/mongo/db/s/persistent_task_queue_test.cpp
+++ b/src/mongo/db/s/persistent_task_queue_test.cpp
@@ -83,7 +83,7 @@ void killOps(ServiceContext* serviceCtx) {
class PersistentTaskQueueTest : public ShardServerTestFixture {
void setUp() override {
ShardServerTestFixture::setUp();
- AutoGetDb autoDb(operationContext(), kNss.db(), MODE_IX);
+ AutoGetDb autoDb(operationContext(), kNss.dbName(), MODE_IX);
Lock::CollectionLock collLock(operationContext(), kNss, MODE_IX);
CollectionShardingRuntime::get(operationContext(), kNss)
->setFilteringMetadata(operationContext(), CollectionMetadata());
diff --git a/src/mongo/db/s/range_deletion_util_test.cpp b/src/mongo/db/s/range_deletion_util_test.cpp
index 8ebbf459823..43eba92c307 100644
--- a/src/mongo/db/s/range_deletion_util_test.cpp
+++ b/src/mongo/db/s/range_deletion_util_test.cpp
@@ -117,7 +117,7 @@ public:
DatabaseVersion(UUID::gen(), Timestamp(1, 1)),
makeStandaloneRoutingTableHistory(std::move(rt)),
boost::none);
- AutoGetDb autoDb(_opCtx, kNss.db(), MODE_IX);
+ AutoGetDb autoDb(_opCtx, kNss.dbName(), MODE_IX);
Lock::CollectionLock collLock(_opCtx, kNss, MODE_IX);
CollectionMetadata collMetadata(std::move(cm), ShardId("dummyShardId"));
CollectionShardingRuntime::get(_opCtx, kNss)->setFilteringMetadata(_opCtx, collMetadata);
diff --git a/src/mongo/db/s/resharding/resharding_donor_service.cpp b/src/mongo/db/s/resharding/resharding_donor_service.cpp
index 95d31bda195..9bc249cd378 100644
--- a/src/mongo/db/s/resharding/resharding_donor_service.cpp
+++ b/src/mongo/db/s/resharding/resharding_donor_service.cpp
@@ -86,7 +86,7 @@ Timestamp generateMinFetchTimestamp(OperationContext* opCtx, const NamespaceStri
// Do a no-op write and use the OpTime as the minFetchTimestamp
writeConflictRetry(
opCtx, "resharding donor minFetchTimestamp", NamespaceString::kRsOplogNamespace.ns(), [&] {
- AutoGetDb db(opCtx, sourceNss.db(), MODE_IX);
+ AutoGetDb db(opCtx, sourceNss.dbName(), MODE_IX);
Lock::CollectionLock collLock(opCtx, sourceNss, MODE_S);
AutoGetOplog oplogWrite(opCtx, OplogAccessMode::kWrite);
diff --git a/src/mongo/db/s/resharding/resharding_oplog_fetcher.cpp b/src/mongo/db/s/resharding/resharding_oplog_fetcher.cpp
index ac62a1cee4d..5f84a037f4c 100644
--- a/src/mongo/db/s/resharding/resharding_oplog_fetcher.cpp
+++ b/src/mongo/db/s/resharding/resharding_oplog_fetcher.cpp
@@ -253,7 +253,7 @@ void ReshardingOplogFetcher::_ensureCollection(Client* client,
}
WriteUnitOfWork wuow(opCtx);
- AutoGetDb autoDb(opCtx, nss.db(), LockMode::MODE_IX);
+ AutoGetDb autoDb(opCtx, nss.dbName(), LockMode::MODE_IX);
Lock::CollectionLock collLock(opCtx, nss, MODE_IX);
auto db = autoDb.ensureDbExists(opCtx);
diff --git a/src/mongo/db/s/resharding/resharding_oplog_fetcher_test.cpp b/src/mongo/db/s/resharding/resharding_oplog_fetcher_test.cpp
index ddf8e673240..9258511832d 100644
--- a/src/mongo/db/s/resharding/resharding_oplog_fetcher_test.cpp
+++ b/src/mongo/db/s/resharding/resharding_oplog_fetcher_test.cpp
@@ -215,7 +215,7 @@ public:
void create(NamespaceString nss) {
writeConflictRetry(_opCtx, "create", nss.ns(), [&] {
AllowLockAcquisitionOnTimestampedUnitOfWork allowLockAcquisition(_opCtx->lockState());
- AutoGetDb autoDb(_opCtx, nss.db(), LockMode::MODE_X);
+ AutoGetDb autoDb(_opCtx, nss.dbName(), LockMode::MODE_X);
WriteUnitOfWork wunit(_opCtx);
if (_opCtx->recoveryUnit()->getCommitTimestamp().isNull()) {
ASSERT_OK(_opCtx->recoveryUnit()->setTimestamp(Timestamp(1, 1)));
diff --git a/src/mongo/db/s/session_catalog_migration_destination_test.cpp b/src/mongo/db/s/session_catalog_migration_destination_test.cpp
index aba7b87e75c..2dc41e842ca 100644
--- a/src/mongo/db/s/session_catalog_migration_destination_test.cpp
+++ b/src/mongo/db/s/session_catalog_migration_destination_test.cpp
@@ -274,7 +274,7 @@ public:
}
void setUnshardedFilteringMetadata(const NamespaceString& nss) {
- AutoGetDb autoDb(operationContext(), nss.db(), MODE_IX);
+ AutoGetDb autoDb(operationContext(), nss.dbName(), MODE_IX);
Lock::CollectionLock collLock(operationContext(), nss, MODE_IX);
CollectionShardingRuntime::get(operationContext(), nss)
->setFilteringMetadata(operationContext(), CollectionMetadata());
diff --git a/src/mongo/db/s/shard_server_op_observer.cpp b/src/mongo/db/s/shard_server_op_observer.cpp
index 427208baec6..661be4e079d 100644
--- a/src/mongo/db/s/shard_server_op_observer.cpp
+++ b/src/mongo/db/s/shard_server_op_observer.cpp
@@ -383,6 +383,7 @@ void ShardServerOpObserver::onUpdate(OperationContext* opCtx, const OplogUpdateE
// primary, blocking behind the critical section.
// Extract which database was updated
+ // TODO SERVER-67789 Change to extract DatabaseName obj, and use when locking db below.
std::string db;
fassert(40478,
bsonExtractStringField(
@@ -395,7 +396,7 @@ void ShardServerOpObserver::onUpdate(OperationContext* opCtx, const OplogUpdateE
// TODO SERVER-58223: evaluate whether this is safe or whether acquiring the lock can
// block.
AllowLockAcquisitionOnTimestampedUnitOfWork allowLockAcquisition(opCtx->lockState());
- AutoGetDb autoDb(opCtx, db, MODE_X);
+ AutoGetDb autoDb(opCtx, DatabaseName(boost::none, db), MODE_X);
DatabaseHolder::get(opCtx)->clearDbInfo(opCtx, DatabaseName(boost::none, db));
}
}
@@ -484,6 +485,7 @@ void ShardServerOpObserver::onDelete(OperationContext* opCtx,
}
// Extract which database entry is being deleted from the _id field.
+ // TODO SERVER-67789 Change to extract DatabaseName obj, and use when locking db below.
std::string deletedDatabase;
fassert(50772,
bsonExtractStringField(
@@ -491,7 +493,7 @@ void ShardServerOpObserver::onDelete(OperationContext* opCtx,
// TODO SERVER-58223: evaluate whether this is safe or whether acquiring the lock can block.
AllowLockAcquisitionOnTimestampedUnitOfWork allowLockAcquisition(opCtx->lockState());
- AutoGetDb autoDb(opCtx, deletedDatabase, MODE_X);
+ AutoGetDb autoDb(opCtx, DatabaseName(boost::none, deletedDatabase), MODE_X);
DatabaseHolder::get(opCtx)->clearDbInfo(opCtx, DatabaseName(boost::none, deletedDatabase));
}
diff --git a/src/mongo/db/s/sharding_initialization_mongod.cpp b/src/mongo/db/s/sharding_initialization_mongod.cpp
index 9458486f9b9..9d423f65057 100644
--- a/src/mongo/db/s/sharding_initialization_mongod.cpp
+++ b/src/mongo/db/s/sharding_initialization_mongod.cpp
@@ -461,7 +461,7 @@ void ShardingInitializationMongoD::updateShardIdentityConfigString(
write_ops::UpdateModification::parseFromClassicUpdate(updateObj));
try {
- AutoGetDb autoDb(opCtx, NamespaceString::kServerConfigurationNamespace.db(), MODE_X);
+ AutoGetDb autoDb(opCtx, NamespaceString::kServerConfigurationNamespace.dbName(), MODE_X);
auto result = update(opCtx, autoDb.ensureDbExists(opCtx), updateReq);
if (result.numMatched == 0) {
diff --git a/src/mongo/db/s/split_vector_test.cpp b/src/mongo/db/s/split_vector_test.cpp
index f2a63755cf5..f5588677e85 100644
--- a/src/mongo/db/s/split_vector_test.cpp
+++ b/src/mongo/db/s/split_vector_test.cpp
@@ -48,7 +48,7 @@ const NamespaceString kNss = NamespaceString("foo", "bar");
const std::string kPattern = "_id";
void setUnshardedFilteringMetadata(OperationContext* opCtx, const NamespaceString& nss) {
- AutoGetDb autoDb(opCtx, nss.db(), MODE_IX);
+ AutoGetDb autoDb(opCtx, nss.dbName(), MODE_IX);
Lock::CollectionLock collLock(opCtx, nss, MODE_IX);
CollectionShardingRuntime::get(opCtx, nss)->setFilteringMetadata(opCtx, CollectionMetadata());
}
diff --git a/src/mongo/db/serverless/shard_split_donor_service_test.cpp b/src/mongo/db/serverless/shard_split_donor_service_test.cpp
index 2068cebcf3c..6f976ed8424 100644
--- a/src/mongo/db/serverless/shard_split_donor_service_test.cpp
+++ b/src/mongo/db/serverless/shard_split_donor_service_test.cpp
@@ -351,7 +351,8 @@ public:
// The database needs to be open before using shard split donor service.
{
auto opCtx = cc().makeOperationContext();
- AutoGetDb autoDb(opCtx.get(), NamespaceString::kShardSplitDonorsNamespace.db(), MODE_X);
+ AutoGetDb autoDb(
+ opCtx.get(), NamespaceString::kShardSplitDonorsNamespace.dbName(), MODE_X);
auto db = autoDb.ensureDbExists(opCtx.get());
ASSERT_TRUE(db);
}
diff --git a/src/mongo/db/storage/kv/storage_engine_test.cpp b/src/mongo/db/storage/kv/storage_engine_test.cpp
index ebfd3bb017a..eced5c5c3ff 100644
--- a/src/mongo/db/storage/kv/storage_engine_test.cpp
+++ b/src/mongo/db/storage/kv/storage_engine_test.cpp
@@ -449,7 +449,7 @@ TEST_F(StorageEngineRepairTest, LoadCatalogRecoversOrphansInCatalog) {
ASSERT_OK(swCollInfo.getStatus());
ASSERT(collectionExists(opCtx.get(), collNs));
- AutoGetDb db(opCtx.get(), collNs.db(), LockMode::MODE_X);
+ AutoGetDb db(opCtx.get(), collNs.dbName(), LockMode::MODE_X);
// Only drop the catalog entry; storage engine still knows about this ident.
// This simulates an unclean shutdown happening between dropping the catalog entry and
// the actual drop in storage engine.
@@ -485,7 +485,7 @@ TEST_F(StorageEngineTest, LoadCatalogDropsOrphans) {
ASSERT_OK(swCollInfo.getStatus());
ASSERT(collectionExists(opCtx.get(), collNs));
- AutoGetDb db(opCtx.get(), collNs.db(), LockMode::MODE_X);
+ AutoGetDb db(opCtx.get(), collNs.dbName(), LockMode::MODE_X);
// Only drop the catalog entry; storage engine still knows about this ident.
// This simulates an unclean shutdown happening between dropping the catalog entry and
// the actual drop in storage engine.
diff --git a/src/mongo/db/storage/storage_engine_test_fixture.h b/src/mongo/db/storage/storage_engine_test_fixture.h
index 4e8d0e27f54..42e748bc588 100644
--- a/src/mongo/db/storage/storage_engine_test_fixture.h
+++ b/src/mongo/db/storage/storage_engine_test_fixture.h
@@ -58,7 +58,7 @@ public:
StatusWith<DurableCatalog::Entry> createCollection(OperationContext* opCtx,
NamespaceString ns) {
- AutoGetDb db(opCtx, ns.db(), LockMode::MODE_X);
+ AutoGetDb db(opCtx, ns.dbName(), LockMode::MODE_X);
CollectionOptions options;
options.uuid = UUID::gen();
RecordId catalogId;
diff --git a/src/mongo/db/transaction_participant_test.cpp b/src/mongo/db/transaction_participant_test.cpp
index 95748462bdb..60d0df6e6f2 100644
--- a/src/mongo/db/transaction_participant_test.cpp
+++ b/src/mongo/db/transaction_participant_test.cpp
@@ -291,7 +291,7 @@ protected:
{
// Set up a collection so that TransactionParticipant::prepareTransaction() can safely
// access it.
- AutoGetDb autoDb(opCtx(), kNss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx(), kNss.dbName(), MODE_X);
auto db = autoDb.ensureDbExists(opCtx());
ASSERT_TRUE(db);
@@ -398,7 +398,7 @@ void insertTxnRecord(OperationContext* opCtx, unsigned i, DurableTxnStateEnum st
record.setLastWriteOpTime(repl::OpTime(ts, 0));
record.setLastWriteDate(Date_t::now());
- AutoGetDb autoDb(opCtx, nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx, nss.dbName(), MODE_X);
auto db = autoDb.ensureDbExists(opCtx);
ASSERT(db);
WriteUnitOfWork wuow(opCtx);
@@ -673,7 +673,7 @@ TEST_F(TxnParticipantTest, PrepareFailsOnTemporaryCollection) {
// Create a temporary collection so that we can write to it.
{
- AutoGetDb autoDb(opCtx(), kNss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx(), kNss.dbName(), MODE_X);
auto db = autoDb.ensureDbExists(opCtx());
ASSERT_TRUE(db);
@@ -4473,7 +4473,7 @@ TEST_F(TxnParticipantTest, OldestActiveTransactionTimestamp) {
auto deleteTxnRecord = [&](unsigned i) {
Timestamp ts(1, i);
- AutoGetDb autoDb(opCtx(), nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx(), nss.dbName(), MODE_X);
auto db = autoDb.ensureDbExists(opCtx());
ASSERT(db);
WriteUnitOfWork wuow(opCtx());
@@ -4530,7 +4530,7 @@ TEST_F(TxnParticipantTest, OldestActiveTransactionTimestamp) {
TEST_F(TxnParticipantTest, OldestActiveTransactionTimestampTimeout) {
// Block getOldestActiveTimestamp() by locking the config database.
auto nss = NamespaceString::kSessionTransactionsTableNamespace;
- AutoGetDb autoDb(opCtx(), nss.db(), MODE_X);
+ AutoGetDb autoDb(opCtx(), nss.dbName(), MODE_X);
auto db = autoDb.ensureDbExists(opCtx());
ASSERT(db);
auto statusWith = TransactionParticipant::getOldestActiveTimestamp(Timestamp());
diff --git a/src/mongo/db/views/view_catalog_test.cpp b/src/mongo/db/views/view_catalog_test.cpp
index 1d6b091681a..841bdd61bb8 100644
--- a/src/mongo/db/views/view_catalog_test.cpp
+++ b/src/mongo/db/views/view_catalog_test.cpp
@@ -82,13 +82,15 @@ public:
CatalogTestFixture::setUp();
WriteUnitOfWork wuow(operationContext());
- AutoGetDb autoDb(operationContext(), "db", MODE_X);
+ AutoGetDb autoDb(operationContext(), DatabaseName(boost::none, "db"), MODE_X);
_db = autoDb.ensureDbExists(operationContext());
invariant(_db);
// Create any additional databases used throughout the test.
- ASSERT(AutoGetDb(operationContext(), "db1", MODE_X).ensureDbExists(operationContext()));
- ASSERT(AutoGetDb(operationContext(), "db2", MODE_X).ensureDbExists(operationContext()));
+ ASSERT(AutoGetDb(operationContext(), DatabaseName(boost::none, "db1"), MODE_X)
+ .ensureDbExists(operationContext()));
+ ASSERT(AutoGetDb(operationContext(), DatabaseName(boost::none, "db2"), MODE_X)
+ .ensureDbExists(operationContext()));
auto durableViewCatalogUnique = std::make_unique<DurableViewCatalogImpl>(_db);
durableViewCatalog = durableViewCatalogUnique.get();
diff --git a/src/mongo/dbtests/dbtests.cpp b/src/mongo/dbtests/dbtests.cpp
index a0c99d5d5e5..1a4ac85d34b 100644
--- a/src/mongo/dbtests/dbtests.cpp
+++ b/src/mongo/dbtests/dbtests.cpp
@@ -101,7 +101,7 @@ Status createIndex(OperationContext* opCtx, StringData ns, const BSONObj& keys,
Status createIndexFromSpec(OperationContext* opCtx, StringData ns, const BSONObj& spec) {
NamespaceString nss(ns);
- AutoGetDb autoDb(opCtx, nsToDatabaseSubstring(ns), MODE_IX);
+ AutoGetDb autoDb(opCtx, nss.dbName(), MODE_IX);
{
Lock::CollectionLock collLock(opCtx, nss, MODE_X);
WriteUnitOfWork wunit(opCtx);
diff --git a/src/mongo/dbtests/extensions_callback_real_test.cpp b/src/mongo/dbtests/extensions_callback_real_test.cpp
index a2d88117969..a74c5f7dcdd 100644
--- a/src/mongo/dbtests/extensions_callback_real_test.cpp
+++ b/src/mongo/dbtests/extensions_callback_real_test.cpp
@@ -53,7 +53,7 @@ public:
}
void setUp() final {
- AutoGetDb autoDb(&_opCtx, _nss.db(), MODE_X);
+ AutoGetDb autoDb(&_opCtx, _nss.dbName(), MODE_X);
auto database = autoDb.ensureDbExists(&_opCtx);
{
WriteUnitOfWork wunit(&_opCtx);
@@ -63,7 +63,7 @@ public:
}
void tearDown() final {
- AutoGetDb autoDb(&_opCtx, _nss.db(), MODE_X);
+ AutoGetDb autoDb(&_opCtx, _nss.dbName(), MODE_X);
Database* database = autoDb.getDb();
if (!database) {
return;
diff --git a/src/mongo/dbtests/indexupdatetests.cpp b/src/mongo/dbtests/indexupdatetests.cpp
index be7a8dab483..5b11a9d6078 100644
--- a/src/mongo/dbtests/indexupdatetests.cpp
+++ b/src/mongo/dbtests/indexupdatetests.cpp
@@ -273,7 +273,7 @@ public:
}
regenOpCtx();
- AutoGetDb dbRaii(_opCtx, _nss.db(), LockMode::MODE_IX);
+ AutoGetDb dbRaii(_opCtx, _nss.dbName(), LockMode::MODE_IX);
boost::optional<Lock::CollectionLock> collLk;
collLk.emplace(_opCtx, _nss, LockMode::MODE_IX);
// The new index is not listed in the index catalog because the index build failed.
diff --git a/src/mongo/dbtests/query_stage_collscan.cpp b/src/mongo/dbtests/query_stage_collscan.cpp
index 3a4b201f409..247fd181035 100644
--- a/src/mongo/dbtests/query_stage_collscan.cpp
+++ b/src/mongo/dbtests/query_stage_collscan.cpp
@@ -160,7 +160,7 @@ public:
ScopedCollectionDeleter(OperationContext* opCtx, NamespaceString nss)
: _opCtx(opCtx), _nss(nss) {}
~ScopedCollectionDeleter() {
- AutoGetDb autoDb(_opCtx, _nss.db(), MODE_IX);
+ AutoGetDb autoDb(_opCtx, _nss.dbName(), MODE_IX);
if (!autoDb.getDb())
return;
diff --git a/src/mongo/dbtests/rollbacktests.cpp b/src/mongo/dbtests/rollbacktests.cpp
index 1c2b2a1dc1c..27cc030a169 100644
--- a/src/mongo/dbtests/rollbacktests.cpp
+++ b/src/mongo/dbtests/rollbacktests.cpp
@@ -488,7 +488,7 @@ public:
dropDatabase(&opCtx, nss);
createCollection(&opCtx, nss);
- AutoGetDb autoDb(&opCtx, nss.db(), MODE_X);
+ AutoGetDb autoDb(&opCtx, nss.dbName(), MODE_X);
CollectionWriter coll(&opCtx, nss);
@@ -530,7 +530,7 @@ public:
dropDatabase(&opCtx, nss);
createCollection(&opCtx, nss);
- AutoGetDb autoDb(&opCtx, nss.db(), MODE_X);
+ AutoGetDb autoDb(&opCtx, nss.dbName(), MODE_X);
CollectionWriter coll(&opCtx, nss);
@@ -584,7 +584,7 @@ public:
dropDatabase(&opCtx, nss);
createCollection(&opCtx, nss);
- AutoGetDb autoDb(&opCtx, nss.db(), MODE_X);
+ AutoGetDb autoDb(&opCtx, nss.dbName(), MODE_X);
CollectionWriter coll(&opCtx, nss);
string idxName = "a";
diff --git a/src/mongo/dbtests/validate_tests.cpp b/src/mongo/dbtests/validate_tests.cpp
index 597f1d9e365..f1fa76d2bb9 100644
--- a/src/mongo/dbtests/validate_tests.cpp
+++ b/src/mongo/dbtests/validate_tests.cpp
@@ -108,7 +108,7 @@ public:
: ValidateBase(full, background, /*clustered=*/false) {}
~ValidateBase() {
- AutoGetDb autoDb(&_opCtx, _nss.db(), MODE_X);
+ AutoGetDb autoDb(&_opCtx, _nss.dbName(), MODE_X);
auto db = autoDb.getDb();
ASSERT_TRUE(db);
@@ -192,7 +192,7 @@ protected:
void lockDb(LockMode mode) {
_autoDb.reset();
invariant(_opCtx.lockState()->isDbLockedForMode(_nss.dbName(), MODE_NONE));
- _autoDb.reset(new AutoGetDb(&_opCtx, _nss.db().toString(), mode));
+ _autoDb.reset(new AutoGetDb(&_opCtx, _nss.dbName(), mode));
invariant(_opCtx.lockState()->isDbLockedForMode(_nss.dbName(), mode));
_db = _autoDb.get()->getDb();
}