summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mongo/db/s/balancer/migration_test_fixture.cpp2
-rw-r--r--src/mongo/db/s/config/config_server_test_fixture.cpp7
-rw-r--r--src/mongo/db/s/config/config_server_test_fixture.h2
-rw-r--r--src/mongo/db/s/config/sharding_catalog_manager.h10
-rw-r--r--src/mongo/db/s/config/sharding_catalog_manager_add_shard_test.cpp50
-rw-r--r--src/mongo/db/s/config/sharding_catalog_manager_database_operations.cpp12
-rw-r--r--src/mongo/db/s/config/sharding_catalog_manager_remove_shard_test.cpp6
-rw-r--r--src/mongo/db/s/config/sharding_catalog_manager_shard_operations.cpp2
-rw-r--r--src/mongo/db/s/database_sharding_state_test.cpp2
-rw-r--r--src/mongo/db/s/migration_util_test.cpp7
-rw-r--r--src/mongo/db/s/resharding/resharding_coordinator_service_test.cpp1
-rw-r--r--src/mongo/db/s/resharding/resharding_coordinator_test.cpp2
-rw-r--r--src/mongo/db/s/resharding/resharding_txn_cloner_test.cpp1
-rw-r--r--src/mongo/db/s/resharding_destined_recipient_test.cpp2
-rw-r--r--src/mongo/s/catalog/sharding_catalog_client_impl.cpp20
-rw-r--r--src/mongo/s/catalog/sharding_catalog_client_test.cpp21
-rw-r--r--src/mongo/s/catalog/type_database.idl1
-rw-r--r--src/mongo/s/catalog_cache_loader_mock.cpp9
-rw-r--r--src/mongo/s/catalog_cache_refresh_test.cpp2
-rw-r--r--src/mongo/s/catalog_cache_test.cpp28
-rw-r--r--src/mongo/s/catalog_cache_test_fixture.cpp11
-rw-r--r--src/mongo/s/cluster_ddl.cpp2
-rw-r--r--src/mongo/s/cluster_ddl.h2
-rw-r--r--src/mongo/s/request_types/sharded_ddl_commands.idl1
24 files changed, 86 insertions, 117 deletions
diff --git a/src/mongo/db/s/balancer/migration_test_fixture.cpp b/src/mongo/db/s/balancer/migration_test_fixture.cpp
index 1ff3dc71ccb..206e0d7737d 100644
--- a/src/mongo/db/s/balancer/migration_test_fixture.cpp
+++ b/src/mongo/db/s/balancer/migration_test_fixture.cpp
@@ -48,7 +48,7 @@ std::shared_ptr<RemoteCommandTargeterMock> MigrationTestFixture::shardTargeterMo
}
void MigrationTestFixture::setUpDatabase(const std::string& dbName, const ShardId primaryShard) {
- DatabaseType db(dbName, primaryShard, true, DatabaseVersion(UUID::gen(), Timestamp()));
+ DatabaseType db(dbName, primaryShard, DatabaseVersion(UUID::gen(), Timestamp()));
ASSERT_OK(catalogClient()->insertConfigDocument(operationContext(),
NamespaceString::kConfigDatabasesNamespace,
db.toBSON(),
diff --git a/src/mongo/db/s/config/config_server_test_fixture.cpp b/src/mongo/db/s/config/config_server_test_fixture.cpp
index 774739ec29d..85f64c4a95f 100644
--- a/src/mongo/db/s/config/config_server_test_fixture.cpp
+++ b/src/mongo/db/s/config/config_server_test_fixture.cpp
@@ -328,7 +328,7 @@ void ConfigServerTestFixture::setupCollection(const NamespaceString& nss,
invariant(swShardDoc.isOK(),
"At least one shard should be setup when initializing a collection");
auto shard = uassertStatusOK(ShardType::fromBSON(swShardDoc.getValue()));
- setupDatabase(nss.db().toString(), ShardId(shard.getName()), true /* sharded */);
+ setupDatabase(nss.db().toString(), ShardId(shard.getName()));
}
CollectionType coll(nss,
@@ -400,9 +400,8 @@ StatusWith<ChunkVersion> ConfigServerTestFixture::getCollectionVersion(Operation
}
void ConfigServerTestFixture::setupDatabase(const std::string& dbName,
- const ShardId primaryShard,
- const bool sharded) {
- DatabaseType db(dbName, primaryShard, sharded, DatabaseVersion(UUID::gen(), Timestamp()));
+ const ShardId& primaryShard) {
+ DatabaseType db(dbName, primaryShard, DatabaseVersion(UUID::gen(), Timestamp()));
ASSERT_OK(catalogClient()->insertConfigDocument(operationContext(),
NamespaceString::kConfigDatabasesNamespace,
db.toBSON(),
diff --git a/src/mongo/db/s/config/config_server_test_fixture.h b/src/mongo/db/s/config/config_server_test_fixture.h
index 821b8987406..f2d2d0a1ef0 100644
--- a/src/mongo/db/s/config/config_server_test_fixture.h
+++ b/src/mongo/db/s/config/config_server_test_fixture.h
@@ -136,7 +136,7 @@ protected:
/**
* Inserts a document for the database into the config.databases collection.
*/
- void setupDatabase(const std::string& dbName, ShardId primaryShard, bool sharded);
+ void setupDatabase(const std::string& dbName, const ShardId& primaryShard);
/**
* Returns the indexes definitions defined on a given collection.
diff --git a/src/mongo/db/s/config/sharding_catalog_manager.h b/src/mongo/db/s/config/sharding_catalog_manager.h
index b21b98f3265..9653a0ce6d3 100644
--- a/src/mongo/db/s/config/sharding_catalog_manager.h
+++ b/src/mongo/db/s/config/sharding_catalog_manager.h
@@ -394,10 +394,12 @@ public:
* exists, and if not, creates a new one that matches these prerequisites. If a database already
* exists and matches all the prerequisites returns success, otherwise throws NamespaceNotFound.
*/
- DatabaseType createDatabase(OperationContext* opCtx,
- StringData dbName,
- const boost::optional<ShardId>& optPrimaryShard,
- bool enableSharding);
+ DatabaseType createDatabase(
+ OperationContext* opCtx,
+ StringData dbName,
+ const boost::optional<ShardId>& optPrimaryShard,
+ // # TODO SERVER-63983: remove enableSharding paramter when 6.0 becomes lastLTS
+ bool enableSharding = false);
//
// Collection Operations
diff --git a/src/mongo/db/s/config/sharding_catalog_manager_add_shard_test.cpp b/src/mongo/db/s/config/sharding_catalog_manager_add_shard_test.cpp
index 2dfa0e75278..2cbec96bc9a 100644
--- a/src/mongo/db/s/config/sharding_catalog_manager_add_shard_test.cpp
+++ b/src/mongo/db/s/config/sharding_catalog_manager_add_shard_test.cpp
@@ -380,14 +380,10 @@ TEST_F(AddShardTest, StandaloneBasicSuccess) {
expectedShard.setMaxSizeMB(100);
expectedShard.setState(ShardType::ShardState::kShardAware);
- DatabaseType discoveredDB1("TestDB1",
- ShardId("StandaloneShard"),
- false,
- DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
- DatabaseType discoveredDB2("TestDB2",
- ShardId("StandaloneShard"),
- false,
- DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
+ DatabaseType discoveredDB1(
+ "TestDB1", ShardId("StandaloneShard"), DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
+ DatabaseType discoveredDB2(
+ "TestDB2", ShardId("StandaloneShard"), DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
auto expectWriteConcern = ShardingCatalogClient::kMajorityWriteConcern;
@@ -470,14 +466,10 @@ TEST_F(AddShardTest, StandaloneGenerateName) {
expectedShard.setMaxSizeMB(100);
expectedShard.setState(ShardType::ShardState::kShardAware);
- DatabaseType discoveredDB1("TestDB1",
- ShardId(expectedShardName),
- false,
- DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
- DatabaseType discoveredDB2("TestDB2",
- ShardId(expectedShardName),
- false,
- DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
+ DatabaseType discoveredDB1(
+ "TestDB1", ShardId(expectedShardName), DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
+ DatabaseType discoveredDB2(
+ "TestDB2", ShardId(expectedShardName), DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
auto future = launchAsync([this, &expectedShardName, &shardTarget] {
ThreadClient tc(getServiceContext());
@@ -819,7 +811,7 @@ TEST_F(AddShardTest, ShardContainsExistingDatabase) {
std::string expectedShardName = "mySet";
DatabaseType existingDB(
- "existing", ShardId("existingShard"), false, DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
+ "existing", ShardId("existingShard"), DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
// Add a pre-existing database.
ASSERT_OK(catalogClient()->insertConfigDocument(operationContext(),
@@ -873,10 +865,8 @@ TEST_F(AddShardTest, SuccessfullyAddReplicaSet) {
expectedShard.setMaxSizeMB(100);
expectedShard.setState(ShardType::ShardState::kShardAware);
- DatabaseType discoveredDB("shardDB",
- ShardId(expectedShardName),
- false,
- DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
+ DatabaseType discoveredDB(
+ "shardDB", ShardId(expectedShardName), DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
auto future = launchAsync([this, &expectedShardName, &connString] {
ThreadClient tc(getServiceContext());
@@ -940,10 +930,8 @@ TEST_F(AddShardTest, ReplicaSetExtraHostsDiscovered) {
expectedShard.setMaxSizeMB(100);
expectedShard.setState(ShardType::ShardState::kShardAware);
- DatabaseType discoveredDB("shardDB",
- ShardId(expectedShardName),
- false,
- DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
+ DatabaseType discoveredDB(
+ "shardDB", ShardId(expectedShardName), DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
auto future = launchAsync([this, &expectedShardName, &seedString] {
ThreadClient tc(getServiceContext());
@@ -1008,14 +996,10 @@ TEST_F(AddShardTest, AddShardSucceedsEvenIfAddingDBsFromNewShardFails) {
expectedShard.setMaxSizeMB(100);
expectedShard.setState(ShardType::ShardState::kShardAware);
- DatabaseType discoveredDB1("TestDB1",
- ShardId("StandaloneShard"),
- false,
- DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
- DatabaseType discoveredDB2("TestDB2",
- ShardId("StandaloneShard"),
- false,
- DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
+ DatabaseType discoveredDB1(
+ "TestDB1", ShardId("StandaloneShard"), DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
+ DatabaseType discoveredDB2(
+ "TestDB2", ShardId("StandaloneShard"), DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
// Enable fail point to cause all updates to fail. Since we add the databases detected from
// the shard being added with upserts, but we add the shard document itself via insert, this
diff --git a/src/mongo/db/s/config/sharding_catalog_manager_database_operations.cpp b/src/mongo/db/s/config/sharding_catalog_manager_database_operations.cpp
index 212e598bb67..934eca19e8e 100644
--- a/src/mongo/db/s/config/sharding_catalog_manager_database_operations.cpp
+++ b/src/mongo/db/s/config/sharding_catalog_manager_database_operations.cpp
@@ -90,7 +90,7 @@ DatabaseType ShardingCatalogManager::createDatabase(OperationContext* opCtx,
bool enableSharding) {
if (dbName == NamespaceString::kConfigDb) {
return DatabaseType(
- dbName.toString(), ShardId::kConfigServerId, true, DatabaseVersion::makeFixed());
+ dbName.toString(), ShardId::kConfigServerId, DatabaseVersion::makeFixed());
}
uassert(ErrorCodes::InvalidOptions,
@@ -214,10 +214,12 @@ DatabaseType ShardingCatalogManager::createDatabase(OperationContext* opCtx,
const auto clusterTime = now.clusterTime().asTimestamp();
// Pick a primary shard for the new database.
- DatabaseType db(dbName.toString(),
- shardPtr->getId(),
- enableShardingOptional ? false : enableSharding,
- DatabaseVersion(UUID::gen(), clusterTime));
+ DatabaseType db(
+ dbName.toString(), shardPtr->getId(), DatabaseVersion(UUID::gen(), clusterTime));
+
+ if (!enableShardingOptional) {
+ db.setSharded(enableSharding);
+ }
LOGV2(21938,
"Registering new database {db} in sharding catalog",
diff --git a/src/mongo/db/s/config/sharding_catalog_manager_remove_shard_test.cpp b/src/mongo/db/s/config/sharding_catalog_manager_remove_shard_test.cpp
index aba7972018d..d760e1ce3d5 100644
--- a/src/mongo/db/s/config/sharding_catalog_manager_remove_shard_test.cpp
+++ b/src/mongo/db/s/config/sharding_catalog_manager_remove_shard_test.cpp
@@ -216,7 +216,7 @@ TEST_F(RemoveShardTest, RemoveShardStillDrainingChunksRemaining) {
chunk3.setJumbo(true);
setupShards(std::vector<ShardType>{shard1, shard2});
- setupDatabase("testDB", shard1.getName(), true);
+ setupDatabase("testDB", shard1.getName());
setupCollection(NamespaceString("testDB.testColl"),
kKeyPattern,
std::vector<ChunkType>{chunk1, chunk2, chunk3});
@@ -252,7 +252,7 @@ TEST_F(RemoveShardTest, RemoveShardStillDrainingDatabasesRemaining) {
shard2.setState(ShardType::ShardState::kShardAware);
setupShards(std::vector<ShardType>{shard1, shard2});
- setupDatabase("testDB", shard1.getName(), false);
+ setupDatabase("testDB", shard1.getName());
auto startedResult = ShardingCatalogManager::get(operationContext())
->removeShard(operationContext(), shard1.getName());
@@ -303,7 +303,7 @@ TEST_F(RemoveShardTest, RemoveShardCompletion) {
std::vector<ChunkType> chunks{chunk1, chunk2, chunk3};
setupShards(std::vector<ShardType>{shard1, shard2});
- setupDatabase("testDB", shard2.getName(), false);
+ setupDatabase("testDB", shard2.getName());
setupCollection(NamespaceString("testDB.testColl"),
kKeyPattern,
std::vector<ChunkType>{chunk1, chunk2, chunk3});
diff --git a/src/mongo/db/s/config/sharding_catalog_manager_shard_operations.cpp b/src/mongo/db/s/config/sharding_catalog_manager_shard_operations.cpp
index fc000d17f14..cd97c57f44c 100644
--- a/src/mongo/db/s/config/sharding_catalog_manager_shard_operations.cpp
+++ b/src/mongo/db/s/config/sharding_catalog_manager_shard_operations.cpp
@@ -743,7 +743,7 @@ StatusWith<std::string> ShardingCatalogManager::addShard(
const auto clusterTime = now.clusterTime().asTimestamp();
DatabaseType dbt(
- dbName, shardType.getName(), false, DatabaseVersion(UUID::gen(), clusterTime));
+ dbName, shardType.getName(), DatabaseVersion(UUID::gen(), clusterTime));
{
const auto status = Grid::get(opCtx)->catalogClient()->updateConfigDocument(
diff --git a/src/mongo/db/s/database_sharding_state_test.cpp b/src/mongo/db/s/database_sharding_state_test.cpp
index 007da2b6568..f4516bb8d13 100644
--- a/src/mongo/db/s/database_sharding_state_test.cpp
+++ b/src/mongo/db/s/database_sharding_state_test.cpp
@@ -120,7 +120,7 @@ public:
DatabaseType createDatabase(const UUID& uuid, const Timestamp& timestamp) {
return DatabaseType(
- kDbName.toString(), kShardList[0].getName(), true, DatabaseVersion(uuid, timestamp));
+ kDbName.toString(), kShardList[0].getName(), DatabaseVersion(uuid, timestamp));
}
protected:
diff --git a/src/mongo/db/s/migration_util_test.cpp b/src/mongo/db/s/migration_util_test.cpp
index 61d78b8359b..ac3f0cc4254 100644
--- a/src/mongo/db/s/migration_util_test.cpp
+++ b/src/mongo/db/s/migration_util_test.cpp
@@ -368,11 +368,8 @@ public:
const UUID kDefaultUUID = UUID::gen();
const OID kEpoch = OID::gen();
const Timestamp kDefaultTimestamp = Timestamp(2, 0);
- const DatabaseType kDefaultDatabaseType =
- DatabaseType(kTestNss.db().toString(),
- ShardId("0"),
- true,
- DatabaseVersion(kDefaultUUID, kDefaultTimestamp));
+ const DatabaseType kDefaultDatabaseType = DatabaseType(
+ kTestNss.db().toString(), ShardId("0"), DatabaseVersion(kDefaultUUID, kDefaultTimestamp));
const std::vector<ShardType> kShardList = {ShardType("0", "Host0:12345"),
ShardType("1", "Host1:12345")};
diff --git a/src/mongo/db/s/resharding/resharding_coordinator_service_test.cpp b/src/mongo/db/s/resharding/resharding_coordinator_service_test.cpp
index d402cbbfa26..2587b71dbfb 100644
--- a/src/mongo/db/s/resharding/resharding_coordinator_service_test.cpp
+++ b/src/mongo/db/s/resharding/resharding_coordinator_service_test.cpp
@@ -382,7 +382,6 @@ public:
DatabaseType dbDoc(coordinatorDoc.getSourceNss().db().toString(),
coordinatorDoc.getDonorShards().front().getId(),
- true,
DatabaseVersion{UUID::gen(), Timestamp(1, 1)});
client.insert(NamespaceString::kConfigDatabasesNamespace.ns(), dbDoc.toBSON());
diff --git a/src/mongo/db/s/resharding/resharding_coordinator_test.cpp b/src/mongo/db/s/resharding/resharding_coordinator_test.cpp
index bb7d48471dd..5e54ee87606 100644
--- a/src/mongo/db/s/resharding/resharding_coordinator_test.cpp
+++ b/src/mongo/db/s/resharding/resharding_coordinator_test.cpp
@@ -536,7 +536,7 @@ protected:
// Create original collection's catalog entry as well as both config.chunks and config.tags
// collections.
{
- setupDatabase("db", ShardId("shard0000"), true);
+ setupDatabase("db", ShardId("shard0000"));
auto opCtx = operationContext();
DBDirectClient client(opCtx);
diff --git a/src/mongo/db/s/resharding/resharding_txn_cloner_test.cpp b/src/mongo/db/s/resharding/resharding_txn_cloner_test.cpp
index d8c0b8f8335..c41f4ce7db3 100644
--- a/src/mongo/db/s/resharding/resharding_txn_cloner_test.cpp
+++ b/src/mongo/db/s/resharding/resharding_txn_cloner_test.cpp
@@ -82,7 +82,6 @@ class ReshardingTxnClonerTest : public ShardServerTestFixture {
mockLoader->setDatabaseRefreshReturnValue(
DatabaseType{NamespaceString::kConfigDb.toString(),
ShardId::kConfigServerId,
- true,
DatabaseVersion::makeFixed()});
// The config.transactions collection is always unsharded.
diff --git a/src/mongo/db/s/resharding_destined_recipient_test.cpp b/src/mongo/db/s/resharding_destined_recipient_test.cpp
index 34d56bbb70f..946dab13106 100644
--- a/src/mongo/db/s/resharding_destined_recipient_test.cpp
+++ b/src/mongo/db/s/resharding_destined_recipient_test.cpp
@@ -220,7 +220,7 @@ protected:
coll.setAllowMigrations(false);
_mockCatalogCacheLoader->setDatabaseRefreshReturnValue(
- DatabaseType(kNss.db().toString(), kShardList[0].getName(), true, env.dbVersion));
+ DatabaseType(kNss.db().toString(), kShardList[0].getName(), env.dbVersion));
_mockCatalogCacheLoader->setCollectionRefreshValues(
kNss,
coll,
diff --git a/src/mongo/s/catalog/sharding_catalog_client_impl.cpp b/src/mongo/s/catalog/sharding_catalog_client_impl.cpp
index e05b3b4a9d0..bf98a08c7aa 100644
--- a/src/mongo/s/catalog/sharding_catalog_client_impl.cpp
+++ b/src/mongo/s/catalog/sharding_catalog_client_impl.cpp
@@ -331,14 +331,22 @@ DatabaseType ShardingCatalogClientImpl::getDatabase(OperationContext* opCtx,
NamespaceString::validDBName(dbName, NamespaceString::DollarInDbNameBehavior::Allow));
// The admin database is always hosted on the config server.
- if (dbName == NamespaceString::kAdminDb)
- return DatabaseType(
- dbName.toString(), ShardId::kConfigServerId, false, DatabaseVersion::makeFixed());
+ if (dbName == NamespaceString::kAdminDb) {
+ DatabaseType adminDb{
+ dbName.toString(), ShardId::kConfigServerId, DatabaseVersion::makeFixed()};
+ // TODO SERVER-63983: do not set sharded flag once 6.0 becomes lastLTS
+ adminDb.setSharded(true);
+ return adminDb;
+ }
// The config database's primary shard is always config, and it is always sharded.
- if (dbName == NamespaceString::kConfigDb)
- return DatabaseType(
- dbName.toString(), ShardId::kConfigServerId, true, DatabaseVersion::makeFixed());
+ if (dbName == NamespaceString::kConfigDb) {
+ DatabaseType configDb{
+ dbName.toString(), ShardId::kConfigServerId, DatabaseVersion::makeFixed()};
+ // TODO SERVER-63983: do not set sharded flag once 6.0 becomes lastLTS
+ configDb.setSharded(true);
+ return configDb;
+ }
auto result =
_fetchDatabaseMetadata(opCtx, dbName.toString(), kConfigReadSelector, readConcernLevel);
diff --git a/src/mongo/s/catalog/sharding_catalog_client_test.cpp b/src/mongo/s/catalog/sharding_catalog_client_test.cpp
index d2f9ec29cbe..b9ea396e5e9 100644
--- a/src/mongo/s/catalog/sharding_catalog_client_test.cpp
+++ b/src/mongo/s/catalog/sharding_catalog_client_test.cpp
@@ -162,7 +162,7 @@ TEST_F(ShardingCatalogClientTest, GetDatabaseExisting) {
configTargeter()->setFindHostReturnValue(HostAndPort("TestHost1"));
DatabaseType expectedDb(
- "bigdata", ShardId("shard0000"), true, DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
+ "bigdata", ShardId("shard0000"), DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
const OpTime newOpTime(Timestamp(7, 6), 5);
@@ -213,7 +213,7 @@ TEST_F(ShardingCatalogClientTest, GetDatabaseStaleSecondaryRetrySuccess) {
configTargeter()->setFindHostReturnValue(firstHost);
DatabaseType expectedDb(
- "bigdata", ShardId("shard0000"), true, DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
+ "bigdata", ShardId("shard0000"), DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
auto future = launchAsync([this, &expectedDb] {
return catalogClient()->getDatabase(
@@ -920,10 +920,8 @@ TEST_F(ShardingCatalogClientTest, GetCollectionsInvalidCollectionType) {
TEST_F(ShardingCatalogClientTest, GetDatabasesForShardValid) {
configTargeter()->setFindHostReturnValue(HostAndPort("TestHost1"));
- DatabaseType dbt1(
- "db1", ShardId("shard0000"), false, DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
- DatabaseType dbt2(
- "db2", ShardId("shard0000"), false, DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
+ DatabaseType dbt1("db1", ShardId("shard0000"), DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
+ DatabaseType dbt2("db2", ShardId("shard0000"), DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
auto future = launchAsync([this] {
return assertGet(
@@ -967,8 +965,7 @@ TEST_F(ShardingCatalogClientTest, GetDatabasesForShardInvalidDoc) {
});
onFindCommand([](const RemoteCommandRequest& request) {
- DatabaseType dbt1(
- "db1", {"shard0000"}, false, DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
+ DatabaseType dbt1("db1", {"shard0000"}, DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
return vector<BSONObj>{
dbt1.toBSON(),
BSON(DatabaseType::kNameFieldName << 0) // Database name should be a string
@@ -1075,8 +1072,7 @@ TEST_F(ShardingCatalogClientTest, GetTagsForCollectionInvalidTag) {
TEST_F(ShardingCatalogClientTest, UpdateDatabase) {
configTargeter()->setFindHostReturnValue(HostAndPort("TestHost1"));
- DatabaseType dbt(
- "test", ShardId("shard0000"), true, DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
+ DatabaseType dbt("test", ShardId("shard0000"), DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
auto future = launchAsync([this, dbt] {
auto status = catalogClient()->updateConfigDocument(
@@ -1123,8 +1119,7 @@ TEST_F(ShardingCatalogClientTest, UpdateConfigDocumentNonRetryableError) {
HostAndPort host1("TestHost1");
configTargeter()->setFindHostReturnValue(host1);
- DatabaseType dbt(
- "test", ShardId("shard0001"), false, DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
+ DatabaseType dbt("test", ShardId("shard0001"), DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
auto future = launchAsync([this, dbt] {
auto status = catalogClient()->updateConfigDocument(
@@ -1329,7 +1324,7 @@ TEST_F(ShardingCatalogClientTest, RetryOnFindCommandNetworkErrorSucceedsAtMaxRet
onFindCommand([](const RemoteCommandRequest& request) {
DatabaseType dbType(
- "TestDB", ShardId("TestShard"), true, DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
+ "TestDB", ShardId("TestShard"), DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
return vector<BSONObj>{dbType.toBSON()};
});
diff --git a/src/mongo/s/catalog/type_database.idl b/src/mongo/s/catalog/type_database.idl
index 0da8feb6b62..6298aadf66e 100644
--- a/src/mongo/s/catalog/type_database.idl
+++ b/src/mongo/s/catalog/type_database.idl
@@ -58,6 +58,7 @@ structs:
description: "Specify if it is allowed to create sharded collection on this database."
cpp_name: sharded
type: bool
+ default: false
optional: false
version:
description: "Version of the database."
diff --git a/src/mongo/s/catalog_cache_loader_mock.cpp b/src/mongo/s/catalog_cache_loader_mock.cpp
index 059a7e8d132..09b3b60e3f4 100644
--- a/src/mongo/s/catalog_cache_loader_mock.cpp
+++ b/src/mongo/s/catalog_cache_loader_mock.cpp
@@ -121,14 +121,7 @@ SemiFuture<CollectionAndChangedChunks> CatalogCacheLoaderMock::getChunksSince(
}
SemiFuture<DatabaseType> CatalogCacheLoaderMock::getDatabase(StringData dbName) {
- return makeReadyFutureWith([this] {
- uassertStatusOK(_swDatabaseReturnValue);
- return DatabaseType(_swDatabaseReturnValue.getValue().getName().toString(),
- _swDatabaseReturnValue.getValue().getPrimary(),
- _swDatabaseReturnValue.getValue().getSharded(),
- _swDatabaseReturnValue.getValue().getVersion());
- })
- .semi();
+ return makeReadyFutureWith([this] { return _swDatabaseReturnValue; }).semi();
}
void CatalogCacheLoaderMock::setCollectionRefreshReturnValue(
diff --git a/src/mongo/s/catalog_cache_refresh_test.cpp b/src/mongo/s/catalog_cache_refresh_test.cpp
index 0167943d7c8..31a9cbe0d7a 100644
--- a/src/mongo/s/catalog_cache_refresh_test.cpp
+++ b/src/mongo/s/catalog_cache_refresh_test.cpp
@@ -60,7 +60,7 @@ protected:
void expectGetDatabase() {
expectFindSendBSONObjVector(kConfigHostAndPort, [&]() {
DatabaseType db(
- kNss.db().toString(), {"0"}, true, DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
+ kNss.db().toString(), {"0"}, DatabaseVersion(UUID::gen(), Timestamp(1, 1)));
return std::vector<BSONObj>{db.toBSON()};
}());
}
diff --git a/src/mongo/s/catalog_cache_test.cpp b/src/mongo/s/catalog_cache_test.cpp
index 959cd7bf1fb..42cd460b08a 100644
--- a/src/mongo/s/catalog_cache_test.cpp
+++ b/src/mongo/s/catalog_cache_test.cpp
@@ -183,14 +183,12 @@ protected:
TEST_F(CatalogCacheTest, GetDatabase) {
const auto dbName = "testDB";
const auto dbVersion = DatabaseVersion(UUID::gen(), Timestamp(1, 1));
- _catalogCacheLoader->setDatabaseRefreshReturnValue(
- DatabaseType(dbName, kShards[0], true, dbVersion));
+ _catalogCacheLoader->setDatabaseRefreshReturnValue(DatabaseType(dbName, kShards[0], dbVersion));
const auto swDatabase = _catalogCache->getDatabase(operationContext(), dbName);
ASSERT_OK(swDatabase.getStatus());
const auto cachedDb = swDatabase.getValue();
- ASSERT_TRUE(cachedDb.shardingEnabled());
ASSERT_EQ(cachedDb.primaryId(), kShards[0]);
ASSERT_EQ(cachedDb.databaseVersion().getUuid(), dbVersion.getUuid());
ASSERT_EQ(cachedDb.databaseVersion().getLastMod(), dbVersion.getLastMod());
@@ -199,13 +197,12 @@ TEST_F(CatalogCacheTest, GetDatabase) {
TEST_F(CatalogCacheTest, GetCachedDatabase) {
const auto dbName = "testDB";
const auto dbVersion = DatabaseVersion(UUID::gen(), Timestamp(1, 1));
- loadDatabases({DatabaseType(dbName, kShards[0], true, dbVersion)});
+ loadDatabases({DatabaseType(dbName, kShards[0], dbVersion)});
const auto swDatabase = _catalogCache->getDatabase(operationContext(), dbName);
ASSERT_OK(swDatabase.getStatus());
const auto cachedDb = swDatabase.getValue();
- ASSERT_TRUE(cachedDb.shardingEnabled());
ASSERT_EQ(cachedDb.primaryId(), kShards[0]);
ASSERT_EQ(cachedDb.databaseVersion().getUuid(), dbVersion.getUuid());
ASSERT_EQ(cachedDb.databaseVersion().getLastMod(), dbVersion.getLastMod());
@@ -215,14 +212,12 @@ TEST_F(CatalogCacheTest, GetDatabaseDrop) {
const auto dbName = "testDB";
const auto dbVersion = DatabaseVersion(UUID::gen(), Timestamp(1, 1));
- _catalogCacheLoader->setDatabaseRefreshReturnValue(
- DatabaseType(dbName, kShards[0], true, dbVersion));
+ _catalogCacheLoader->setDatabaseRefreshReturnValue(DatabaseType(dbName, kShards[0], dbVersion));
// The CatalogCache doesn't have any valid info about this DB and finds a new DatabaseType
auto swDatabase = _catalogCache->getDatabase(operationContext(), dbName);
ASSERT_OK(swDatabase.getStatus());
const auto cachedDb = swDatabase.getValue();
- ASSERT_TRUE(cachedDb.shardingEnabled());
ASSERT_EQ(cachedDb.databaseVersion().getUuid(), dbVersion.getUuid());
ASSERT_EQ(cachedDb.databaseVersion().getLastMod(), dbVersion.getLastMod());
@@ -242,11 +237,10 @@ TEST_F(CatalogCacheTest, GetDatabaseDrop) {
TEST_F(CatalogCacheTest, InvalidateSingleDbOnShardRemoval) {
const auto dbName = "testDB";
const auto dbVersion = DatabaseVersion(UUID::gen(), Timestamp(1, 1));
- loadDatabases({DatabaseType(dbName, kShards[0], true, dbVersion)});
+ loadDatabases({DatabaseType(dbName, kShards[0], dbVersion)});
_catalogCache->invalidateEntriesThatReferenceShard(kShards[0]);
- _catalogCacheLoader->setDatabaseRefreshReturnValue(
- DatabaseType(dbName, kShards[1], true, dbVersion));
+ _catalogCacheLoader->setDatabaseRefreshReturnValue(DatabaseType(dbName, kShards[1], dbVersion));
const auto swDatabase = _catalogCache->getDatabase(operationContext(), dbName);
ASSERT_OK(swDatabase.getStatus());
@@ -257,7 +251,7 @@ TEST_F(CatalogCacheTest, InvalidateSingleDbOnShardRemoval) {
TEST_F(CatalogCacheTest, OnStaleDatabaseVersionNoVersion) {
// onStaleDatabaseVesrsion must invalidate the database entry if invoked with no version
const auto dbVersion = DatabaseVersion(UUID::gen(), Timestamp(1, 1));
- loadDatabases({DatabaseType(kNss.db().toString(), kShards[0], true, dbVersion)});
+ loadDatabases({DatabaseType(kNss.db().toString(), kShards[0], dbVersion)});
_catalogCache->onStaleDatabaseVersion(kNss.db(), boost::none);
@@ -269,7 +263,7 @@ TEST_F(CatalogCacheTest, OnStaleShardVersionWithSameVersion) {
const auto dbVersion = DatabaseVersion(UUID::gen(), Timestamp(1, 1));
const auto cachedCollVersion = ChunkVersion(1, 0, OID::gen(), Timestamp(1, 1));
- loadDatabases({DatabaseType(kNss.db().toString(), kShards[0], true, dbVersion)});
+ loadDatabases({DatabaseType(kNss.db().toString(), kShards[0], dbVersion)});
loadCollection(cachedCollVersion);
_catalogCache->invalidateShardOrEntireCollectionEntryForShardedCollection(
kNss, cachedCollVersion, kShards[0]);
@@ -280,7 +274,7 @@ TEST_F(CatalogCacheTest, OnStaleShardVersionWithNoVersion) {
const auto dbVersion = DatabaseVersion(UUID::gen(), Timestamp(1, 1));
const auto cachedCollVersion = ChunkVersion(1, 0, OID::gen(), Timestamp(1, 1));
- loadDatabases({DatabaseType(kNss.db().toString(), kShards[0], true, dbVersion)});
+ loadDatabases({DatabaseType(kNss.db().toString(), kShards[0], dbVersion)});
loadCollection(cachedCollVersion);
_catalogCache->invalidateShardOrEntireCollectionEntryForShardedCollection(
kNss, boost::none, kShards[0]);
@@ -295,7 +289,7 @@ TEST_F(CatalogCacheTest, OnStaleShardVersionWithGraterVersion) {
const auto wantedCollVersion =
ChunkVersion(2, 0, cachedCollVersion.epoch(), cachedCollVersion.getTimestamp());
- loadDatabases({DatabaseType(kNss.db().toString(), kShards[0], true, dbVersion)});
+ loadDatabases({DatabaseType(kNss.db().toString(), kShards[0], dbVersion)});
loadCollection(cachedCollVersion);
_catalogCache->invalidateShardOrEntireCollectionEntryForShardedCollection(
kNss, wantedCollVersion, kShards[0]);
@@ -309,7 +303,7 @@ TEST_F(CatalogCacheTest, TimeseriesFieldsAreProperlyPropagatedOnCC) {
const auto epoch = OID::gen();
const auto version = ChunkVersion(1, 0, epoch, Timestamp(42));
- loadDatabases({DatabaseType(kNss.db().toString(), kShards[0], true, dbVersion)});
+ loadDatabases({DatabaseType(kNss.db().toString(), kShards[0], dbVersion)});
auto coll = makeCollectionType(version);
auto chunks = makeChunks(version);
@@ -365,7 +359,7 @@ TEST_F(CatalogCacheTest, LookupCollectionWithInvalidOptions) {
const auto epoch = OID::gen();
const auto version = ChunkVersion(1, 0, epoch, Timestamp(42));
- loadDatabases({DatabaseType(kNss.db().toString(), kShards[0], true, dbVersion)});
+ loadDatabases({DatabaseType(kNss.db().toString(), kShards[0], dbVersion)});
auto coll = makeCollectionType(version);
diff --git a/src/mongo/s/catalog_cache_test_fixture.cpp b/src/mongo/s/catalog_cache_test_fixture.cpp
index f3e3431e832..323fcd7d7c2 100644
--- a/src/mongo/s/catalog_cache_test_fixture.cpp
+++ b/src/mongo/s/catalog_cache_test_fixture.cpp
@@ -132,11 +132,7 @@ ChunkManager CatalogCacheTestFixture::makeChunkManager(
boost::optional<ReshardingFields> reshardingFields) {
ChunkVersion version(1, 0, OID::gen(), Timestamp(42) /* timestamp */);
- const BSONObj databaseBSON = [&]() {
- DatabaseType db(
- nss.db().toString(), {"0"}, true, DatabaseVersion(UUID::gen(), Timestamp()));
- return db.toBSON();
- }();
+ DatabaseType db(nss.db().toString(), {"0"}, DatabaseVersion(UUID::gen(), Timestamp()));
const auto uuid = UUID::gen();
const BSONObj collectionBSON = [&]() {
@@ -181,7 +177,7 @@ ChunkManager CatalogCacheTestFixture::makeChunkManager(
auto future = scheduleRoutingInfoUnforcedRefresh(nss);
- expectFindSendBSONObjVector(kConfigHostAndPort, {databaseBSON});
+ expectFindSendBSONObjVector(kConfigHostAndPort, {db.toBSON()});
expectFindSendBSONObjVector(kConfigHostAndPort, [&]() {
std::vector<BSONObj> aggResult{collectionBSON};
std::transform(initialChunks.begin(),
@@ -196,8 +192,7 @@ ChunkManager CatalogCacheTestFixture::makeChunkManager(
void CatalogCacheTestFixture::expectGetDatabase(NamespaceString nss, std::string shardId) {
expectFindSendBSONObjVector(kConfigHostAndPort, [&]() {
- DatabaseType db(
- nss.db().toString(), {shardId}, true, DatabaseVersion(UUID::gen(), Timestamp()));
+ DatabaseType db(nss.db().toString(), {shardId}, DatabaseVersion(UUID::gen(), Timestamp()));
return std::vector<BSONObj>{db.toBSON()};
}());
}
diff --git a/src/mongo/s/cluster_ddl.cpp b/src/mongo/s/cluster_ddl.cpp
index 58fa97a9192..70bef5bbcba 100644
--- a/src/mongo/s/cluster_ddl.cpp
+++ b/src/mongo/s/cluster_ddl.cpp
@@ -83,7 +83,7 @@ AsyncRequestsSender::Response executeCommandAgainstDatabasePrimaryOrFirstShard(
CachedDatabaseInfo createDatabase(OperationContext* opCtx,
StringData dbName,
- boost::optional<ShardId> suggestedPrimaryId) {
+ const boost::optional<ShardId>& suggestedPrimaryId) {
auto catalogCache = Grid::get(opCtx)->catalogCache();
auto dbStatus = catalogCache->getDatabase(opCtx, dbName);
diff --git a/src/mongo/s/cluster_ddl.h b/src/mongo/s/cluster_ddl.h
index 0aa3cc24503..6f15aa4e73f 100644
--- a/src/mongo/s/cluster_ddl.h
+++ b/src/mongo/s/cluster_ddl.h
@@ -41,7 +41,7 @@ namespace cluster {
*/
CachedDatabaseInfo createDatabase(OperationContext* opCtx,
StringData dbName,
- boost::optional<ShardId> suggestedPrimaryId = boost::none);
+ const boost::optional<ShardId>& suggestedPrimaryId = boost::none);
/**
* Creates the specified sharded collection.
diff --git a/src/mongo/s/request_types/sharded_ddl_commands.idl b/src/mongo/s/request_types/sharded_ddl_commands.idl
index 15a4fc2b353..a5f39b2515f 100644
--- a/src/mongo/s/request_types/sharded_ddl_commands.idl
+++ b/src/mongo/s/request_types/sharded_ddl_commands.idl
@@ -353,6 +353,7 @@ commands:
primary for the database (if not already created). Otherwise, the
system will use the balancer in order to select a primary."
optional: true
+ # TODO SERVER-63983: remove the following field when 6.0 becomes lastLTS
enableSharding:
type: bool
description: "May only be set to 'true'. If set, indicates to the config server that