diff options
Diffstat (limited to 'src/mongo/db/s/config/sharding_catalog_manager_shard_operations.cpp')
-rw-r--r-- | src/mongo/db/s/config/sharding_catalog_manager_shard_operations.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
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 4e737b23027..2501ef509fe 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 @@ -741,7 +741,7 @@ StatusWith<std::string> ShardingCatalogManager::addShard( return shardType.getName(); } -ShardDrainingStatus ShardingCatalogManager::removeShard(OperationContext* opCtx, +RemoveShardProgress ShardingCatalogManager::removeShard(OperationContext* opCtx, const ShardId& shardId) { const auto name = shardId.toString(); @@ -786,7 +786,8 @@ ShardDrainingStatus ShardingCatalogManager::removeShard(OperationContext* opCtx, shardRegistry->reload(opCtx); - return ShardDrainingStatus::STARTED; + return {RemoveShardProgress::STARTED, + boost::optional<RemoveShardProgress::DrainingShardUsage>(boost::none)}; } // Draining has already started, now figure out how many chunks and databases are still on the @@ -797,12 +798,18 @@ ShardDrainingStatus ShardingCatalogManager::removeShard(OperationContext* opCtx, const auto databaseCount = uassertStatusOK( _runCountCommandOnConfig(opCtx, DatabaseType::ConfigNS, BSON(DatabaseType::primary(name)))); + const auto jumboCount = uassertStatusOK(_runCountCommandOnConfig( + opCtx, ChunkType::ConfigNS, BSON(ChunkType::shard(name) << ChunkType::jumbo(true)))); + if (chunkCount > 0 || databaseCount > 0) { // Still more draining to do LOG(0) << "chunkCount: " << chunkCount; LOG(0) << "databaseCount: " << databaseCount; + LOG(0) << "jumboCount: " << jumboCount; - return ShardDrainingStatus::ONGOING; + return {RemoveShardProgress::ONGOING, + boost::optional<RemoveShardProgress::DrainingShardUsage>( + {chunkCount, databaseCount, jumboCount})}; } // Draining is done, now finish removing the shard. @@ -825,7 +832,8 @@ ShardDrainingStatus ShardingCatalogManager::removeShard(OperationContext* opCtx, ShardingLogging::get(opCtx)->logChange( opCtx, "removeShard", "", BSON("shard" << name), ShardingCatalogClient::kLocalWriteConcern); - return ShardDrainingStatus::COMPLETED; + return {RemoveShardProgress::COMPLETED, + boost::optional<RemoveShardProgress::DrainingShardUsage>(boost::none)}; } void ShardingCatalogManager::appendConnectionStats(executor::ConnectionPoolStats* stats) { |