summaryrefslogtreecommitdiffstats
path: root/slobrok
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@yahooinc.com>2022-04-27 14:52:49 +0000
committerTor Brede Vekterli <vekterli@yahooinc.com>2022-04-27 14:52:49 +0000
commitc03fced358e1dbd3279fd38901bbe5c5641eae6a (patch)
tree848ac62454efcb4436a71917c814df1f02f2e4ae /slobrok
parenta69561e12789d506c3b45f81ffda4baae05b3965 (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.cpp11
-rw-r--r--slobrok/src/vespa/slobrok/server/sbenv.h4
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;