diff options
author | Allison Easton <allison.easton@mongodb.com> | 2022-02-25 10:42:47 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-03-04 08:46:35 +0000 |
commit | 73e2bd2712700cf380b0c7f24ab0e56b80a7edc3 (patch) | |
tree | 4d696ed2d9c6266c0c592a4cbea5de29df8a17a8 | |
parent | fda83acf947afe31d3787ce07bf48b05e5e26d60 (diff) | |
download | mongo-73e2bd2712700cf380b0c7f24ab0e56b80a7edc3.tar.gz |
SERVER-63905 ConfigureCollectionBalancing command should refresh collection routing info
(cherry picked from commit f2fca650993b81e6083a51ae411c272074a82c38)
-rw-r--r-- | src/mongo/db/s/config/sharding_catalog_manager_collection_operations.cpp | 7 |
1 files 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 9130cf8da84..8aef3316483 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 @@ -610,7 +610,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<ShardId> shardsIds; @@ -640,7 +644,6 @@ void ShardingCatalogManager::configureCollectionBalancing( bumpCollectionMinorVersionInTxn(opCtx, nss, txnNumber); }); - const auto executor = Grid::get(opCtx)->getExecutorPool()->getFixedExecutor(); sharding_util::tellShardsToRefreshCollection( opCtx, |