From 69067887cb295671a21c359776e047e6e562af00 Mon Sep 17 00:00:00 2001 From: Vishnu Kaushik Date: Fri, 16 Oct 2020 14:18:16 +0000 Subject: SERVER-51389 std::move initial chunks and zones, pass ChunksAndZones by value instead of by reference --- src/mongo/db/s/config/configsvr_reshard_collection_cmd.cpp | 2 +- src/mongo/db/s/resharding/resharding_coordinator_service.cpp | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) 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 d24eaba115d..1f4e3fec8df 100644 --- a/src/mongo/db/s/config/configsvr_reshard_collection_cmd.cpp +++ b/src/mongo/db/s/config/configsvr_reshard_collection_cmd.cpp @@ -207,7 +207,7 @@ public: auto instance = ReshardingCoordinatorService::ReshardingCoordinator::getOrCreate( opCtx, service, coordinatorDoc.toBSON()); - instance->setInitialChunksAndZones(initialChunks, newZones); + instance->setInitialChunksAndZones(std::move(initialChunks), std::move(newZones)); // This promise will currently be falsely fulfilled by a call to interrupt() inside // the ReshardingCoordinatorService. This is to enable jsTests to pass while code diff --git a/src/mongo/db/s/resharding/resharding_coordinator_service.cpp b/src/mongo/db/s/resharding/resharding_coordinator_service.cpp index b0d30953211..9860c00e175 100644 --- a/src/mongo/db/s/resharding/resharding_coordinator_service.cpp +++ b/src/mongo/db/s/resharding/resharding_coordinator_service.cpp @@ -422,7 +422,8 @@ void persistInitialStateAndCatalogUpdates(OperationContext* opCtx, opCtx, coordinatorDoc, chunkVersion, collation, txnNumber); // Insert new initial chunk and tag documents - insertChunkAndTagDocsForTempNss(opCtx, initialChunks, newZones, txnNumber); + insertChunkAndTagDocsForTempNss( + opCtx, std::move(initialChunks), std::move(newZones), txnNumber); // Commit the transaction ShardingCatalogManager::get(opCtx)->commitTxnForConfigDocument(opCtx, txnNumber); @@ -623,9 +624,9 @@ ExecutorFuture ReshardingCoordinatorService::ReshardingCoordinator::_init( return _initialChunksAndZonesPromise.getFuture() .thenRunOn(**executor) - .then([this](const ChunksAndZones& initialChunksAndZones) { - auto initialChunks = initialChunksAndZones.initialChunks; - auto newZones = initialChunksAndZones.newZones; + .then([this](ChunksAndZones initialChunksAndZones) { + auto initialChunks = std::move(initialChunksAndZones.initialChunks); + auto newZones = std::move(initialChunksAndZones.newZones); // Create state document that will be written to disk and afterward set to the in-memory // _coordinatorDoc @@ -634,7 +635,7 @@ ExecutorFuture ReshardingCoordinatorService::ReshardingCoordinator::_init( auto opCtx = cc().makeOperationContext(); resharding::persistInitialStateAndCatalogUpdates( - opCtx.get(), updatedCoordinatorDoc, initialChunks, newZones); + opCtx.get(), updatedCoordinatorDoc, std::move(initialChunks), std::move(newZones)); invariant(_coordinatorDoc.getState() == CoordinatorStateEnum::kInitializing); _coordinatorDoc = updatedCoordinatorDoc; -- cgit v1.2.1