summaryrefslogtreecommitdiff
path: root/src/mongo/db/s
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/db/s
parenta16f7f1ee85ac854db4e92294ceb392043623fea (diff)
downloadmongo-299c4b3e46075a01ab8d0989bca5358a2b0603ae.tar.gz
SERVER-62923 Change DB lock RAII types to use DatabaseName
Diffstat (limited to 'src/mongo/db/s')
-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
15 files changed, 23 insertions, 21 deletions
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());
}