summaryrefslogtreecommitdiff
path: root/src/mongo/db/s/resharding
diff options
context:
space:
mode:
authorRandolph Tan <randolph@10gen.com>2022-04-22 18:04:05 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-04-22 18:44:58 +0000
commit7d4bbbd5a72317ce6fb680be52e95215e68e4c1f (patch)
tree1cf48aa1b151d2901efe306cdb11db40036e3f89 /src/mongo/db/s/resharding
parent5409de7a1771ce9e03700355a2d07e6a0045ff44 (diff)
downloadmongo-7d4bbbd5a72317ce6fb680be52e95215e68e4c1f.tar.gz
SERVER-65895 Also create applier metrics for donor shards with no progress document
Diffstat (limited to 'src/mongo/db/s/resharding')
-rw-r--r--src/mongo/db/s/resharding/resharding_recipient_service.cpp16
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);