diff options
author | Randolph Tan <randolph@10gen.com> | 2022-04-22 18:04:05 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-04-22 18:44:58 +0000 |
commit | 7d4bbbd5a72317ce6fb680be52e95215e68e4c1f (patch) | |
tree | 1cf48aa1b151d2901efe306cdb11db40036e3f89 /src | |
parent | 5409de7a1771ce9e03700355a2d07e6a0045ff44 (diff) | |
download | mongo-7d4bbbd5a72317ce6fb680be52e95215e68e4c1f.tar.gz |
SERVER-65895 Also create applier metrics for donor shards with no progress document
Diffstat (limited to 'src')
-rw-r--r-- | src/mongo/db/s/resharding/resharding_recipient_service.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/mongo/db/s/resharding/resharding_recipient_service.cpp b/src/mongo/db/s/resharding/resharding_recipient_service.cpp index 67dd4a81ceb..01d313c73a5 100644 --- a/src/mongo/db/s/resharding/resharding_recipient_service.cpp +++ b/src/mongo/db/s/resharding/resharding_recipient_service.cpp @@ -558,6 +558,8 @@ ReshardingRecipientService::RecipientStateMachine::_makeDataReplication(Operatio donor.getShardId(), std::make_unique<ReshardingOplogApplierMetrics>(_metricsNew.get(), boost::none)); } + } else { + invariant(_applierMetricsMap.size() == _donorShards.size()); } return _dataReplicationFactory(opCtx, @@ -1120,7 +1122,8 @@ void ReshardingRecipientService::RecipientStateMachine::_restoreMetrics( reshardingOpCtxKilledWhileRestoringMetrics.execute( [&opCtx](const BSONObj& data) { opCtx->markKilled(); }); - std::vector<std::pair<ShardId, ReshardingOplogApplierProgress>> progressDocList; + std::vector<std::pair<ShardId, boost::optional<ReshardingOplogApplierProgress>>> + progressDocList; for (const auto& donor : _donorShards) { { AutoGetCollection oplogBufferColl( @@ -1154,6 +1157,8 @@ void ReshardingRecipientService::RecipientStateMachine::_restoreMetrics( progressDocList.emplace_back(donor.getShardId(), progressDoc); } } + } else { + progressDocList.emplace_back(donor.getShardId(), boost::none); } } } @@ -1164,7 +1169,14 @@ void ReshardingRecipientService::RecipientStateMachine::_restoreMetrics( const auto& shardId = shardIdDocPair.first; const auto& progressDoc = shardIdDocPair.second; - _metricsNew->accumulateFrom(progressDoc); + if (!progressDoc) { + _applierMetricsMap.emplace( + shardId, + std::make_unique<ReshardingOplogApplierMetrics>(_metricsNew.get(), boost::none)); + continue; + } + + _metricsNew->accumulateFrom(*progressDoc); auto applierMetrics = std::make_unique<ReshardingOplogApplierMetrics>(_metricsNew.get(), progressDoc); |