diff options
author | Tor Brede Vekterli <vekterli@yahooinc.com> | 2022-04-27 14:52:49 +0000 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@yahooinc.com> | 2022-04-27 14:52:49 +0000 |
commit | c03fced358e1dbd3279fd38901bbe5c5641eae6a (patch) | |
tree | 848ac62454efcb4436a71917c814df1f02f2e4ae /slobrok | |
parent | a69561e12789d506c3b45f81ffda4baae05b3965 (diff) |
Initialize transitive ctor dependencies before use
Ensure that SBEnv fields that are accessed by RPCHooks ctor are
initialized before the RPCHooks field itself is created.
Diffstat (limited to 'slobrok')
-rw-r--r-- | slobrok/src/vespa/slobrok/server/sbenv.cpp | 11 | ||||
-rw-r--r-- | slobrok/src/vespa/slobrok/server/sbenv.h | 4 |
2 files changed, 8 insertions, 7 deletions
diff --git a/slobrok/src/vespa/slobrok/server/sbenv.cpp b/slobrok/src/vespa/slobrok/server/sbenv.cpp index de9e5a0025f..0a8b6c60864 100644 --- a/slobrok/src/vespa/slobrok/server/sbenv.cpp +++ b/slobrok/src/vespa/slobrok/server/sbenv.cpp @@ -105,15 +105,16 @@ SBEnv::SBEnv(const ConfigShim &shim) _shuttingDown(false), _partnerList(), _me(createSpec(_configShim.portNumber())), - _rpcHooks(*this), - _remotechecktask(std::make_unique<RemoteCheck>(getSupervisor()->GetScheduler(), _exchanger)), - _health(), - _metrics(_rpcHooks, *_transport), - _components(), _localRpcMonitorMap(getScheduler(), [this] (MappingMonitorOwner &owner) { return std::make_unique<RpcMappingMonitor>(*_supervisor, owner); }), + _globalVisibleHistory(), + _rpcHooks(*this), // Transitively references _localRpcMonitorMap and _globalVisibleHistory + _remotechecktask(std::make_unique<RemoteCheck>(getSupervisor()->GetScheduler(), _exchanger)), + _health(), + _metrics(_rpcHooks, *_transport), + _components(), _exchanger(*this) { srandom(time(nullptr) ^ getpid()); diff --git a/slobrok/src/vespa/slobrok/server/sbenv.h b/slobrok/src/vespa/slobrok/server/sbenv.h index 644344285ad..aac2d3a0d92 100644 --- a/slobrok/src/vespa/slobrok/server/sbenv.h +++ b/slobrok/src/vespa/slobrok/server/sbenv.h @@ -50,14 +50,14 @@ private: std::vector<std::string> _partnerList; std::string _me; + LocalRpcMonitorMap _localRpcMonitorMap; + ServiceMapHistory _globalVisibleHistory; RPCHooks _rpcHooks; std::unique_ptr<RemoteCheck> _remotechecktask; vespalib::SimpleHealthProducer _health; MetricsProducer _metrics; vespalib::SimpleComponentConfigProducer _components; - LocalRpcMonitorMap _localRpcMonitorMap; UnionServiceMap _consensusMap; - ServiceMapHistory _globalVisibleHistory; ExchangeManager _exchanger; |