From f2fca650993b81e6083a51ae411c272074a82c38 Mon Sep 17 00:00:00 2001 From: Allison Easton Date: Fri, 25 Feb 2022 10:42:47 +0000 Subject: SERVER-63905 ConfigureCollectionBalancing command should refresh collection routing info --- .../db/s/config/sharding_catalog_manager_collection_operations.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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 fb34606a968..aafe803ef45 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 @@ -609,7 +609,11 @@ void ShardingCatalogManager::configureCollectionBalancing( return; } - const auto cm = Grid::get(opCtx)->catalogCache()->getShardedCollectionRoutingInfo(opCtx, nss); + // Take _kChunkOpLock in exclusive mode to prevent concurrent chunk splits, merges, and + // migrations + Lock::ExclusiveLock lk(opCtx, opCtx->lockState(), _kChunkOpLock); + const auto cm = uassertStatusOK( + Grid::get(opCtx)->catalogCache()->getShardedCollectionRoutingInfoWithRefresh(opCtx, nss)); const auto uuid = cm.getUUID(); std::set shardsIds; @@ -639,7 +643,6 @@ void ShardingCatalogManager::configureCollectionBalancing( bumpCollectionMinorVersionInTxn(opCtx, nss, txnNumber); }); - const auto executor = Grid::get(opCtx)->getExecutorPool()->getFixedExecutor(); sharding_util::tellShardsToRefreshCollection( opCtx, -- cgit v1.2.1