summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mongo/db/catalog/collection_impl.h4
-rw-r--r--src/mongo/db/pipeline/sharded_union_test.cpp16
-rw-r--r--src/mongo/db/s/balancer/balancer_chunk_selection_policy_impl.cpp2
-rw-r--r--src/mongo/db/s/balancer/migration_manager.cpp8
-rw-r--r--src/mongo/db/s/chunk_splitter.cpp2
-rw-r--r--src/mongo/db/s/collection_metadata.h2
-rw-r--r--src/mongo/db/s/collection_sharding_runtime_test.cpp2
-rw-r--r--src/mongo/db/s/config/configsvr_reshard_collection_cmd.cpp5
-rw-r--r--src/mongo/db/s/config/sharding_catalog_manager_collection_operations.cpp2
-rw-r--r--src/mongo/db/s/merge_chunks_command.cpp4
-rw-r--r--src/mongo/db/s/metadata_manager.cpp4
-rw-r--r--src/mongo/db/s/metadata_manager_test.cpp9
-rw-r--r--src/mongo/db/s/migration_source_manager.h4
-rw-r--r--src/mongo/db/s/resharding/resharding_data_replication.cpp2
-rw-r--r--src/mongo/db/s/resharding/resharding_donor_recipient_common.cpp2
-rw-r--r--src/mongo/db/s/resharding_util.cpp9
-rw-r--r--src/mongo/db/s/resharding_util.h7
-rw-r--r--src/mongo/s/catalog_cache.cpp2
-rw-r--r--src/mongo/s/catalog_cache_refresh_test.cpp10
-rw-r--r--src/mongo/s/chunk_manager.cpp12
-rw-r--r--src/mongo/s/chunk_manager.h18
-rw-r--r--src/mongo/s/chunk_manager_refresh_bm.cpp2
-rw-r--r--src/mongo/s/commands/cluster_move_chunk_cmd.cpp2
-rw-r--r--src/mongo/s/query/cluster_aggregation_planner.cpp2
-rw-r--r--src/mongo/s/routing_table_history_test.cpp2
25 files changed, 54 insertions, 80 deletions
diff --git a/src/mongo/db/catalog/collection_impl.h b/src/mongo/db/catalog/collection_impl.h
index a4a2efe443b..e0fd02ceb44 100644
--- a/src/mongo/db/catalog/collection_impl.h
+++ b/src/mongo/db/catalog/collection_impl.h
@@ -88,11 +88,11 @@ public:
Status rename(OperationContext* opCtx, const NamespaceString& nss, bool stayTemp) final;
- RecordId getCatalogId() const {
+ RecordId getCatalogId() const final {
return _catalogId;
}
- UUID uuid() const {
+ UUID uuid() const final {
return _uuid;
}
diff --git a/src/mongo/db/pipeline/sharded_union_test.cpp b/src/mongo/db/pipeline/sharded_union_test.cpp
index 977a925ccbb..b385a7ff206 100644
--- a/src/mongo/db/pipeline/sharded_union_test.cpp
+++ b/src/mongo/db/pipeline/sharded_union_test.cpp
@@ -173,14 +173,14 @@ TEST_F(ShardedUnionTest, RetriesSubPipelineOnStaleConfigError) {
ChunkVersion version(1, 0, epoch, timestamp);
- ChunkType chunk1(*cm.getUUID(),
+ ChunkType chunk1(cm.getUUID(),
{shardKeyPattern.getKeyPattern().globalMin(), BSON("_id" << 0)},
version,
{"0"});
chunk1.setName(OID::gen());
version.incMinor();
- ChunkType chunk2(*cm.getUUID(),
+ ChunkType chunk2(cm.getUUID(),
{BSON("_id" << 0), shardKeyPattern.getKeyPattern().globalMax()},
version,
{"1"});
@@ -252,7 +252,7 @@ TEST_F(ShardedUnionTest, CorrectlySplitsSubPipelineIfRefreshedDistributionRequir
ChunkVersion version(1, 0, epoch, timestamp);
- ChunkType chunk1(*cm.getUUID(),
+ ChunkType chunk1(cm.getUUID(),
{shardKeyPattern.getKeyPattern().globalMin(), BSON("_id" << 0)},
version,
{shards[0].getName()});
@@ -260,11 +260,11 @@ TEST_F(ShardedUnionTest, CorrectlySplitsSubPipelineIfRefreshedDistributionRequir
version.incMinor();
ChunkType chunk2(
- *cm.getUUID(), {BSON("_id" << 0), BSON("_id" << 10)}, version, {shards[1].getName()});
+ cm.getUUID(), {BSON("_id" << 0), BSON("_id" << 10)}, version, {shards[1].getName()});
chunk2.setName(OID::gen());
version.incMinor();
- ChunkType chunk3(*cm.getUUID(),
+ ChunkType chunk3(cm.getUUID(),
{BSON("_id" << 10), shardKeyPattern.getKeyPattern().globalMax()},
version,
{shards[0].getName()});
@@ -341,7 +341,7 @@ TEST_F(ShardedUnionTest, AvoidsSplittingSubPipelineIfRefreshedDistributionDoesNo
const ShardKeyPattern shardKeyPattern(BSON("_id" << 1));
ChunkVersion version(1, 0, epoch, timestamp);
ChunkType chunk1(
- *cm.getUUID(),
+ cm.getUUID(),
{shardKeyPattern.getKeyPattern().globalMin(), shardKeyPattern.getKeyPattern().globalMax()},
version,
{shards[0].getName()});
@@ -400,14 +400,14 @@ TEST_F(ShardedUnionTest, IncorporatesViewDefinitionAndRetriesWhenViewErrorReceiv
const Timestamp timestamp(1, 1);
ChunkVersion version(1, 0, epoch, timestamp);
- ChunkType chunk1(*cm.getUUID(),
+ ChunkType chunk1(cm.getUUID(),
{shardKeyPattern.getKeyPattern().globalMin(), BSON("_id" << 0)},
version,
{"0"});
chunk1.setName(OID::gen());
version.incMinor();
- ChunkType chunk2(*cm.getUUID(),
+ ChunkType chunk2(cm.getUUID(),
{BSON("_id" << 0), shardKeyPattern.getKeyPattern().globalMax()},
version,
{"1"});
diff --git a/src/mongo/db/s/balancer/balancer_chunk_selection_policy_impl.cpp b/src/mongo/db/s/balancer/balancer_chunk_selection_policy_impl.cpp
index d724a88cf97..0f2349e84a6 100644
--- a/src/mongo/db/s/balancer/balancer_chunk_selection_policy_impl.cpp
+++ b/src/mongo/db/s/balancer/balancer_chunk_selection_policy_impl.cpp
@@ -76,7 +76,7 @@ StatusWith<DistributionStatus> createCollectionDistributionStatus(
chunkMgr.forEachChunk([&](const auto& chunkEntry) {
ChunkType chunk;
- chunk.setCollectionUUID(*chunkMgr.getUUID());
+ chunk.setCollectionUUID(chunkMgr.getUUID());
chunk.setMin(chunkEntry.getMin());
chunk.setMax(chunkEntry.getMax());
chunk.setJumbo(chunkEntry.isJumbo());
diff --git a/src/mongo/db/s/balancer/migration_manager.cpp b/src/mongo/db/s/balancer/migration_manager.cpp
index fa94ade6b60..040615acd6a 100644
--- a/src/mongo/db/s/balancer/migration_manager.cpp
+++ b/src/mongo/db/s/balancer/migration_manager.cpp
@@ -339,17 +339,11 @@ void MigrationManager::finishRecovery(OperationContext* opCtx,
}
const auto& cm = swCM.getValue();
- const auto uuid = cm.getUUID();
- if (!uuid) {
- // The collection has been dropped, so there is no need to recover the migration.
- continue;
- }
-
int scheduledMigrations = 0;
while (!migrateInfos.empty()) {
auto migrationType = std::move(migrateInfos.front());
- const auto migrationInfo = migrationType.toMigrateInfo(*uuid);
+ const auto migrationInfo = migrationType.toMigrateInfo(cm.getUUID());
auto waitForDelete = migrationType.getWaitForDelete();
migrateInfos.pop_front();
diff --git a/src/mongo/db/s/chunk_splitter.cpp b/src/mongo/db/s/chunk_splitter.cpp
index 34b419367ae..e41d49db40b 100644
--- a/src/mongo/db/s/chunk_splitter.cpp
+++ b/src/mongo/db/s/chunk_splitter.cpp
@@ -121,7 +121,7 @@ void moveChunk(OperationContext* opCtx, const NamespaceString& nss, const BSONOb
const auto suggestedChunk = cm.findIntersectingChunkWithSimpleCollation(minKey);
ChunkType chunkToMove;
- chunkToMove.setCollectionUUID(*cm.getUUID());
+ chunkToMove.setCollectionUUID(cm.getUUID());
chunkToMove.setShard(suggestedChunk.getShardId());
chunkToMove.setMin(suggestedChunk.getMin());
chunkToMove.setMax(suggestedChunk.getMax());
diff --git a/src/mongo/db/s/collection_metadata.h b/src/mongo/db/s/collection_metadata.h
index aeae9303eb5..4cf162648b5 100644
--- a/src/mongo/db/s/collection_metadata.h
+++ b/src/mongo/db/s/collection_metadata.h
@@ -151,7 +151,7 @@ public:
return _cm->uuidMatches(uuid);
}
- boost::optional<UUID> getUUID() const {
+ const UUID& getUUID() const {
return _cm->getUUID();
}
diff --git a/src/mongo/db/s/collection_sharding_runtime_test.cpp b/src/mongo/db/s/collection_sharding_runtime_test.cpp
index 18694965619..97412466118 100644
--- a/src/mongo/db/s/collection_sharding_runtime_test.cpp
+++ b/src/mongo/db/s/collection_sharding_runtime_test.cpp
@@ -185,7 +185,7 @@ TEST_F(CollectionShardingRuntimeTest,
ASSERT_EQ(csr.getNumMetadataManagerChanges_forTest(), 2);
ASSERT(
- csr.getCollectionDescription(opCtx).uuidMatches(*newMetadata.getChunkManager()->getUUID()));
+ csr.getCollectionDescription(opCtx).uuidMatches(newMetadata.getChunkManager()->getUUID()));
}
class CollectionShardingRuntimeTestWithMockedLoader : public ShardServerTestFixture {
diff --git a/src/mongo/db/s/config/configsvr_reshard_collection_cmd.cpp b/src/mongo/db/s/config/configsvr_reshard_collection_cmd.cpp
index 49cc025db3d..f515a2ba7eb 100644
--- a/src/mongo/db/s/config/configsvr_reshard_collection_cmd.cpp
+++ b/src/mongo/db/s/config/configsvr_reshard_collection_cmd.cpp
@@ -179,8 +179,7 @@ public:
return boost::none;
}
- auto tempReshardingNss = constructTemporaryReshardingNss(
- nss.db(), getCollectionUUIDFromChunkManger(nss, cm));
+ auto tempReshardingNss = constructTemporaryReshardingNss(nss.db(), cm.getUUID());
if (auto zones = request().getZones()) {
@@ -194,7 +193,7 @@ public:
// Generate the resharding metadata for the ReshardingCoordinatorDocument.
auto reshardingUUID = UUID::gen();
- auto existingUUID = getCollectionUUIDFromChunkManger(ns(), cm);
+ auto existingUUID = cm.getUUID();
auto commonMetadata = CommonReshardingMetadata(std::move(reshardingUUID),
ns(),
std::move(existingUUID),
diff --git a/src/mongo/db/s/config/sharding_catalog_manager_collection_operations.cpp b/src/mongo/db/s/config/sharding_catalog_manager_collection_operations.cpp
index 2b8e5de957c..7933bf1b1a0 100644
--- a/src/mongo/db/s/config/sharding_catalog_manager_collection_operations.cpp
+++ b/src/mongo/db/s/config/sharding_catalog_manager_collection_operations.cpp
@@ -495,7 +495,7 @@ void ShardingCatalogManager::configureCollectionAutoSplit(
const auto update = updateCmd.obj();
const auto query = BSON(CollectionType::kNssFieldName
- << nss.ns() << CollectionType::kUuidFieldName << *uuid);
+ << nss.ns() << CollectionType::kUuidFieldName << uuid);
const auto res = writeToConfigDocumentInTxn(
opCtx,
CollectionType::ConfigNS,
diff --git a/src/mongo/db/s/merge_chunks_command.cpp b/src/mongo/db/s/merge_chunks_command.cpp
index c13ca498dac..27c9d20b63c 100644
--- a/src/mongo/db/s/merge_chunks_command.cpp
+++ b/src/mongo/db/s/merge_chunks_command.cpp
@@ -80,10 +80,8 @@ Shard::CommandResponse commitMergeOnConfigServer(OperationContext* opCtx,
const CollectionMetadata& metadata) {
auto const shardingState = ShardingState::get(opCtx);
const auto currentTime = VectorClock::get(opCtx)->getTime();
- auto collUUID = metadata.getUUID();
- invariant(collUUID);
- ConfigSvrMergeChunks request{nss, shardingState->shardId(), *collUUID, chunkRange};
+ ConfigSvrMergeChunks request{nss, shardingState->shardId(), metadata.getUUID(), chunkRange};
request.setValidAfter(currentTime.clusterTime().asTimestamp());
request.setWriteConcern(ShardingCatalogClient::kMajorityWriteConcern.toBSON());
diff --git a/src/mongo/db/s/metadata_manager.cpp b/src/mongo/db/s/metadata_manager.cpp
index 3a182d44539..54e3b398048 100644
--- a/src/mongo/db/s/metadata_manager.cpp
+++ b/src/mongo/db/s/metadata_manager.cpp
@@ -117,7 +117,7 @@ MetadataManager::MetadataManager(ServiceContext* serviceContext,
CollectionMetadata initialMetadata)
: _serviceContext(serviceContext),
_nss(std::move(nss)),
- _collectionUuid(*initialMetadata.getChunkManager()->getUUID()),
+ _collectionUuid(initialMetadata.getChunkManager()->getUUID()),
_executor(std::move(executor)) {
_metadata.emplace_back(std::make_shared<CollectionMetadataTracker>(std::move(initialMetadata)));
}
@@ -383,7 +383,7 @@ SharedSemiFuture<void> MetadataManager::_submitRangeForDeletion(
removeDocumentsInRange(_executor,
std::move(waitForActiveQueriesToComplete),
_nss,
- *_metadata.back()->metadata->getChunkManager()->getUUID(),
+ _metadata.back()->metadata->getChunkManager()->getUUID(),
_metadata.back()->metadata->getKeyPattern().getOwned(),
range,
std::move(migrationId),
diff --git a/src/mongo/db/s/metadata_manager_test.cpp b/src/mongo/db/s/metadata_manager_test.cpp
index ea78acc37ed..fab099ae7e5 100644
--- a/src/mongo/db/s/metadata_manager_test.cpp
+++ b/src/mongo/db/s/metadata_manager_test.cpp
@@ -125,7 +125,7 @@ protected:
if (SimpleBSONObjComparator::kInstance.evaluate(chunkToSplit.getMin() < minKey)) {
chunkVersion.incMajor();
- splitChunks.emplace_back(*collMetadata.getUUID(),
+ splitChunks.emplace_back(collMetadata.getUUID(),
ChunkRange(chunkToSplit.getMin(), minKey),
chunkVersion,
kOtherShard);
@@ -133,10 +133,10 @@ protected:
chunkVersion.incMajor();
splitChunks.emplace_back(
- *collMetadata.getUUID(), ChunkRange(minKey, maxKey), chunkVersion, kThisShard);
+ collMetadata.getUUID(), ChunkRange(minKey, maxKey), chunkVersion, kThisShard);
chunkVersion.incMajor();
- splitChunks.emplace_back(*collMetadata.getUUID(),
+ splitChunks.emplace_back(collMetadata.getUUID(),
ChunkRange(maxKey, chunkToSplit.getMax()),
chunkVersion,
kOtherShard);
@@ -171,8 +171,7 @@ protected:
boost::none,
boost::none,
true,
- {ChunkType(
- *metadata.getUUID(), ChunkRange(minKey, maxKey), chunkVersion, kOtherShard)});
+ {ChunkType(metadata.getUUID(), ChunkRange(minKey, maxKey), chunkVersion, kOtherShard)});
return CollectionMetadata(ChunkManager(cm->dbPrimary(),
cm->dbVersion(),
diff --git a/src/mongo/db/s/migration_source_manager.h b/src/mongo/db/s/migration_source_manager.h
index 17f235bedbe..fdd7fd2283f 100644
--- a/src/mongo/db/s/migration_source_manager.h
+++ b/src/mongo/db/s/migration_source_manager.h
@@ -243,8 +243,8 @@ private:
State _state{kCreated};
// The epoch of the collection being migrated and its UUID, as of the time the migration
- // started. Values are boost::optional up until the constructor runs, because UUID doesn't have
- // a default constructor.
+ // started. Values are boost::optional only up until the constructor runs, because UUID doesn't
+ // have a default constructor.
boost::optional<OID> _collectionEpoch;
boost::optional<UUID> _collectionUUID;
diff --git a/src/mongo/db/s/resharding/resharding_data_replication.cpp b/src/mongo/db/s/resharding/resharding_data_replication.cpp
index 0bcdcb4db8c..bec1e02dec5 100644
--- a/src/mongo/db/s/resharding/resharding_data_replication.cpp
+++ b/src/mongo/db/s/resharding/resharding_data_replication.cpp
@@ -426,7 +426,7 @@ std::vector<NamespaceString> ReshardingDataReplication::ensureStashCollectionsEx
for (const auto& donor : donorShards) {
stashCollections.emplace_back(ReshardingOplogApplier::ensureStashCollectionExists(
- opCtx, *sourceChunkMgr.getUUID(), donor.getShardId(), options));
+ opCtx, sourceChunkMgr.getUUID(), donor.getShardId(), options));
}
return stashCollections;
diff --git a/src/mongo/db/s/resharding/resharding_donor_recipient_common.cpp b/src/mongo/db/s/resharding/resharding_donor_recipient_common.cpp
index 853f71024b6..6e8fa8e6649 100644
--- a/src/mongo/db/s/resharding/resharding_donor_recipient_common.cpp
+++ b/src/mongo/db/s/resharding/resharding_donor_recipient_common.cpp
@@ -241,7 +241,7 @@ ReshardingDonorDocument constructDonorDocumentFromReshardingFields(
auto donorDoc = ReshardingDonorDocument{
std::move(donorCtx), reshardingFields.getDonorFields()->getRecipientShardIds()};
- auto sourceUUID = getCollectionUUIDFromChunkManger(nss, *metadata.getChunkManager());
+ auto sourceUUID = metadata.getChunkManager()->getUUID();
auto commonMetadata =
CommonReshardingMetadata(reshardingFields.getReshardingUUID(),
nss,
diff --git a/src/mongo/db/s/resharding_util.cpp b/src/mongo/db/s/resharding_util.cpp
index 247fd986682..8047169cfc5 100644
--- a/src/mongo/db/s/resharding_util.cpp
+++ b/src/mongo/db/s/resharding_util.cpp
@@ -109,15 +109,6 @@ RecipientShardEntry makeRecipientShard(ShardId shardId,
return RecipientShardEntry{std::move(shardId), std::move(recipientCtx)};
}
-UUID getCollectionUUIDFromChunkManger(const NamespaceString& originalNss, const ChunkManager& cm) {
- auto collectionUUID = cm.getUUID();
- uassert(ErrorCodes::InvalidUUID,
- "Cannot reshard collection {} due to missing UUID"_format(originalNss.ns()),
- collectionUUID);
-
- return collectionUUID.get();
-}
-
NamespaceString constructTemporaryReshardingNss(StringData db, const UUID& sourceUuid) {
return NamespaceString(db,
fmt::format("{}{}",
diff --git a/src/mongo/db/s/resharding_util.h b/src/mongo/db/s/resharding_util.h
index d38b2c8742c..44a8f91466d 100644
--- a/src/mongo/db/s/resharding_util.h
+++ b/src/mongo/db/s/resharding_util.h
@@ -216,13 +216,6 @@ RecipientShardEntry makeRecipientShard(ShardId shardId,
boost::optional<Status> abortReason = boost::none);
/**
- * Gets the UUID for 'nss' from the 'cm'
- *
- * Note: throws if the collection does not have a UUID.
- */
-UUID getCollectionUUIDFromChunkManger(const NamespaceString& nss, const ChunkManager& cm);
-
-/**
* Assembles the namespace string for the temporary resharding collection based on the source
* namespace components.
*
diff --git a/src/mongo/s/catalog_cache.cpp b/src/mongo/s/catalog_cache.cpp
index 9e3eea4a5a4..01e720628c9 100644
--- a/src/mongo/s/catalog_cache.cpp
+++ b/src/mongo/s/catalog_cache.cpp
@@ -727,7 +727,7 @@ CatalogCache::CollectionCache::LookupResult CatalogCache::CollectionCache::_look
}();
return RoutingTableHistory::makeNew(nss,
- collectionAndChunks.uuid,
+ *collectionAndChunks.uuid,
KeyPattern(collectionAndChunks.shardKeyPattern),
std::move(defaultCollator),
collectionAndChunks.shardKeyIsUnique,
diff --git a/src/mongo/s/catalog_cache_refresh_test.cpp b/src/mongo/s/catalog_cache_refresh_test.cpp
index 6af4c573955..37d28ef5f99 100644
--- a/src/mongo/s/catalog_cache_refresh_test.cpp
+++ b/src/mongo/s/catalog_cache_refresh_test.cpp
@@ -465,7 +465,7 @@ TEST_F(CatalogCacheRefreshTest, IncrementalLoadMissingChunkWithLowestVersion) {
auto initialRoutingInfo(makeChunkManager(kNss, shardKeyPattern, nullptr, true, {}));
const OID epoch = initialRoutingInfo.getVersion().epoch();
- const UUID uuid = *initialRoutingInfo.getUUID();
+ const UUID uuid = initialRoutingInfo.getUUID();
const auto timestamp = initialRoutingInfo.getVersion().getTimestamp();
ASSERT_EQ(1, initialRoutingInfo.numChunks());
@@ -523,7 +523,7 @@ TEST_F(CatalogCacheRefreshTest, IncrementalLoadMissingChunkWithHighestVersion) {
auto initialRoutingInfo(makeChunkManager(kNss, shardKeyPattern, nullptr, true, {}));
const OID epoch = initialRoutingInfo.getVersion().epoch();
- const UUID uuid = *initialRoutingInfo.getUUID();
+ const UUID uuid = initialRoutingInfo.getUUID();
const auto timestamp = initialRoutingInfo.getVersion().getTimestamp();
ASSERT_EQ(1, initialRoutingInfo.numChunks());
@@ -694,7 +694,7 @@ TEST_F(CatalogCacheRefreshTest, IncrementalLoadAfterCollectionEpochChange) {
ChunkVersion oldVersion = initialRoutingInfo.getVersion();
ChunkVersion newVersion(1, 0, OID::gen(), Timestamp(2));
- const UUID uuid = *initialRoutingInfo.getUUID();
+ const UUID uuid = initialRoutingInfo.getUUID();
// Return collection with a different epoch and a set of chunks, which represent a split
onFindCommand([&](const RemoteCommandRequest& request) {
@@ -811,7 +811,7 @@ TEST_F(CatalogCacheRefreshTest, IncrementalLoadAfterMoveWithReshardingFieldsAdde
ASSERT(boost::none == initialRoutingInfo.getReshardingFields());
ChunkVersion version = initialRoutingInfo.getVersion();
- const UUID uuid = *initialRoutingInfo.getUUID();
+ const UUID uuid = initialRoutingInfo.getUUID();
auto future = scheduleRoutingInfoIncrementalRefresh(kNss);
@@ -864,7 +864,7 @@ TEST_F(CatalogCacheRefreshTest, IncrementalLoadAfterMoveLastChunkWithReshardingF
// Return set of chunks, which represent a move
version.incMajor();
ChunkType chunk1(
- *initialRoutingInfo.getUUID(),
+ initialRoutingInfo.getUUID(),
{shardKeyPattern.getKeyPattern().globalMin(), shardKeyPattern.getKeyPattern().globalMax()},
version,
{"1"});
diff --git a/src/mongo/s/chunk_manager.cpp b/src/mongo/s/chunk_manager.cpp
index 1e954d001b9..09d0306bbc6 100644
--- a/src/mongo/s/chunk_manager.cpp
+++ b/src/mongo/s/chunk_manager.cpp
@@ -313,7 +313,7 @@ ShardVersionTargetingInfo::ShardVersionTargetingInfo(const OID& epoch, const Tim
RoutingTableHistory::RoutingTableHistory(
NamespaceString nss,
- boost::optional<UUID> uuid,
+ UUID uuid,
KeyPattern shardKeyPattern,
std::unique_ptr<CollatorInterface> defaultCollator,
bool unique,
@@ -323,8 +323,8 @@ RoutingTableHistory::RoutingTableHistory(
bool allowMigrations,
ChunkMap chunkMap)
: _nss(std::move(nss)),
- _uuid(uuid),
- _shardKeyPattern(shardKeyPattern),
+ _uuid(std::move(uuid)),
+ _shardKeyPattern(std::move(shardKeyPattern)),
_defaultCollator(std::move(defaultCollator)),
_unique(unique),
_timeseriesFields(std::move(timeseriesFields)),
@@ -407,8 +407,7 @@ void ChunkManager::getShardIdsForQuery(boost::intrusive_ptr<ExpressionContext> e
auto findCommand = std::make_unique<FindCommandRequest>(_rt->optRt->nss());
findCommand->setFilter(query.getOwned());
- if (auto uuid = getUUID())
- expCtx->uuid = uuid;
+ expCtx->uuid = getUUID();
if (!collation.isEmpty()) {
findCommand->setCollation(collation.getOwned());
@@ -765,7 +764,7 @@ std::string RoutingTableHistory::toString() const {
RoutingTableHistory RoutingTableHistory::makeNew(
NamespaceString nss,
- boost::optional<UUID> uuid,
+ UUID uuid,
KeyPattern shardKeyPattern,
std::unique_ptr<CollatorInterface> defaultCollator,
bool unique,
@@ -799,6 +798,7 @@ RoutingTableHistory RoutingTableHistory::makeUpdated(
boost::optional<uint64_t> maxChunkSizeBytes,
bool allowMigrations,
const std::vector<ChunkType>& changedChunks) const {
+
auto changedChunkInfos = flatten(changedChunks);
auto chunkMap = _chunkMap.createMerged(changedChunkInfos);
diff --git a/src/mongo/s/chunk_manager.h b/src/mongo/s/chunk_manager.h
index dca4d973ace..ef38af2edc4 100644
--- a/src/mongo/s/chunk_manager.h
+++ b/src/mongo/s/chunk_manager.h
@@ -170,7 +170,7 @@ public:
*/
static RoutingTableHistory makeNew(
NamespaceString nss,
- boost::optional<UUID>,
+ UUID uuid,
KeyPattern shardKeyPattern,
std::unique_ptr<CollatorInterface> defaultCollator,
bool unique,
@@ -286,11 +286,11 @@ public:
std::string toString() const;
- bool uuidMatches(UUID uuid) const {
- return _uuid && *_uuid == uuid;
+ bool uuidMatches(const UUID& uuid) const {
+ return _uuid == uuid;
}
- boost::optional<UUID> getUUID() const {
+ const UUID& getUUID() const {
return _uuid;
}
@@ -315,7 +315,7 @@ private:
friend class ChunkManager;
RoutingTableHistory(NamespaceString nss,
- boost::optional<UUID> uuid,
+ UUID uuid,
KeyPattern shardKeyPattern,
std::unique_ptr<CollatorInterface> defaultCollator,
bool unique,
@@ -330,8 +330,8 @@ private:
// Namespace to which this routing information corresponds
NamespaceString _nss;
- // The invariant UUID of the collection. This is optional in 3.6, except in change streams.
- boost::optional<UUID> _uuid;
+ // The UUID of the collection
+ UUID _uuid;
// The key pattern used to shard the collection
ShardKeyPattern _shardKeyPattern;
@@ -688,11 +688,11 @@ public:
return _rt->optRt->compatibleWith(*other._rt->optRt, shard);
}
- bool uuidMatches(UUID uuid) const {
+ bool uuidMatches(const UUID& uuid) const {
return _rt->optRt->uuidMatches(uuid);
}
- boost::optional<UUID> getUUID() const {
+ const UUID& getUUID() const {
return _rt->optRt->getUUID();
}
diff --git a/src/mongo/s/chunk_manager_refresh_bm.cpp b/src/mongo/s/chunk_manager_refresh_bm.cpp
index 4aec67285e1..cd166c1adb1 100644
--- a/src/mongo/s/chunk_manager_refresh_bm.cpp
+++ b/src/mongo/s/chunk_manager_refresh_bm.cpp
@@ -137,7 +137,7 @@ void BM_IncrementalRefreshOfPessimalBalancedDistribution(benchmark::State& state
auto metadata = makeChunkManagerWithPessimalBalancedDistribution(nShards, nChunks);
auto postMoveVersion = metadata.getChunkManager()->getVersion();
- auto const uuid = *metadata.getUUID();
+ const UUID uuid = metadata.getUUID();
std::vector<ChunkType> newChunks;
postMoveVersion.incMajor();
newChunks.emplace_back(uuid, getRangeForChunk(1, nChunks), postMoveVersion, ShardId("shard0"));
diff --git a/src/mongo/s/commands/cluster_move_chunk_cmd.cpp b/src/mongo/s/commands/cluster_move_chunk_cmd.cpp
index fa0fc7b9068..8c94e428b50 100644
--- a/src/mongo/s/commands/cluster_move_chunk_cmd.cpp
+++ b/src/mongo/s/commands/cluster_move_chunk_cmd.cpp
@@ -183,7 +183,7 @@ public:
uassertStatusOK(MigrationSecondaryThrottleOptions::createFromCommand(cmdObj));
ChunkType chunkType;
- chunkType.setCollectionUUID(*cm.getUUID());
+ chunkType.setCollectionUUID(cm.getUUID());
chunkType.setMin(chunk->getMin());
chunkType.setMax(chunk->getMax());
chunkType.setShard(chunk->getShardId());
diff --git a/src/mongo/s/query/cluster_aggregation_planner.cpp b/src/mongo/s/query/cluster_aggregation_planner.cpp
index e5f0c36e552..c9867f4eb78 100644
--- a/src/mongo/s/query/cluster_aggregation_planner.cpp
+++ b/src/mongo/s/query/cluster_aggregation_planner.cpp
@@ -788,7 +788,7 @@ std::pair<BSONObj, boost::optional<UUID>> getCollationAndUUID(
collectionIsNotSharded ? getUnshardedCollInfo(opCtx, cm->dbPrimary(), nss) : BSONObj();
// Return the collection UUID if available, or boost::none otherwise.
- const auto getUUID = [&]() -> auto {
+ const auto getUUID = [&]() -> boost::optional<UUID> {
if (collectionIsSharded) {
return cm->getUUID();
} else {
diff --git a/src/mongo/s/routing_table_history_test.cpp b/src/mongo/s/routing_table_history_test.cpp
index 676dc94d021..9651911ee64 100644
--- a/src/mongo/s/routing_table_history_test.cpp
+++ b/src/mongo/s/routing_table_history_test.cpp
@@ -68,7 +68,7 @@ RoutingTableHistory splitChunk(const RoutingTableHistory& rt,
for (const auto& range : newChunkRanges) {
// Chunks must be inserted ordered by version
curVersion.incMajor();
- newChunks.emplace_back(*rt.getUUID(), range, curVersion, kThisShard);
+ newChunks.emplace_back(rt.getUUID(), range, curVersion, kThisShard);
}
return rt.makeUpdated(