diff options
Diffstat (limited to 'src/mongo/db/s/balancer/balancer.cpp')
-rw-r--r-- | src/mongo/db/s/balancer/balancer.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/mongo/db/s/balancer/balancer.cpp b/src/mongo/db/s/balancer/balancer.cpp index 1e80510985c..74e1a643016 100644 --- a/src/mongo/db/s/balancer/balancer.cpp +++ b/src/mongo/db/s/balancer/balancer.cpp @@ -156,17 +156,27 @@ void warnOnMultiVersion(const vector<ClusterStatistics::ShardStatistics>& cluste "shardVersions"_attr = shardVersions.done()); } -ReplicaSetAwareServiceRegistry::Registerer<Balancer> balancerRegisterer("Balancer"); +const auto _balancerDecoration = ServiceContext::declareDecoration<Balancer>(); + +const ReplicaSetAwareServiceRegistry::Registerer<Balancer> _balancerRegisterer("Balancer"); } // namespace +Balancer* Balancer::get(ServiceContext* serviceContext) { + return &_balancerDecoration(serviceContext); +} + +Balancer* Balancer::get(OperationContext* operationContext) { + return get(operationContext->getServiceContext()); +} + Balancer::Balancer() : _balancedLastTime(0), _random(std::random_device{}()), _clusterStats(std::make_unique<ClusterStatisticsImpl>(_random)), _chunkSelectionPolicy( std::make_unique<BalancerChunkSelectionPolicyImpl>(_clusterStats.get(), _random)), - _migrationManager(getServiceContext()) {} + _migrationManager(_balancerDecoration.owner(this)) {} Balancer::~Balancer() { |