summaryrefslogtreecommitdiffstats
path: root/slobrok
diff options
context:
space:
mode:
authorArne Juul <arnej@verizonmedia.com>2021-08-16 06:21:05 +0000
committerArne Juul <arnej@verizonmedia.com>2021-08-16 06:22:20 +0000
commit2bddc841afefd89d3de25d83f6b97b465923e455 (patch)
treef8b3257333986e13c04ab216439298f490763f65 /slobrok
parentf9d92a66b4181633a811b178b2a2f8497798d7bc (diff)
add consensus map and wire its inputs
Diffstat (limited to 'slobrok')
-rw-r--r--slobrok/src/vespa/slobrok/server/exchange_manager.cpp2
-rw-r--r--slobrok/src/vespa/slobrok/server/sbenv.cpp1
-rw-r--r--slobrok/src/vespa/slobrok/server/sbenv.h6
3 files changed, 9 insertions, 0 deletions
diff --git a/slobrok/src/vespa/slobrok/server/exchange_manager.cpp b/slobrok/src/vespa/slobrok/server/exchange_manager.cpp
index 632c823a2c1..7e693a9ea3d 100644
--- a/slobrok/src/vespa/slobrok/server/exchange_manager.cpp
+++ b/slobrok/src/vespa/slobrok/server/exchange_manager.cpp
@@ -39,6 +39,7 @@ ExchangeManager::addPartner(const std::string & name, const std::string & spec)
auto [ it, wasNew ] = _partners.emplace(name, std::make_unique<RemoteSlobrok>(name, spec, *this));
LOG_ASSERT(wasNew);
RemoteSlobrok & partner = *it->second;
+ partner.remoteMap().registerListener(_env.consensusMap());
partner.tryConnect();
return OkState();
}
@@ -51,6 +52,7 @@ ExchangeManager::removePartner(const std::string & name)
LOG_ASSERT(oldremote);
_partners.erase(name);
oldremote->shutdown();
+ oldremote->remoteMap().unregisterListener(_env.consensusMap());
}
std::vector<std::string>
diff --git a/slobrok/src/vespa/slobrok/server/sbenv.cpp b/slobrok/src/vespa/slobrok/server/sbenv.cpp
index 6bf5bbd985d..bf7466bb397 100644
--- a/slobrok/src/vespa/slobrok/server/sbenv.cpp
+++ b/slobrok/src/vespa/slobrok/server/sbenv.cpp
@@ -118,6 +118,7 @@ SBEnv::SBEnv(const ConfigShim &shim)
srandom(time(nullptr) ^ getpid());
_rpcsrvmap.proxy().registerListener(_globalVisibleHistory);
_rpcsrvmap.proxy().registerListener(_localRpcMonitorMap);
+ _localRpcMonitorMap.dispatcher().registerListener(_consensusMap);
_rpcHooks.initRPC(getSupervisor());
}
diff --git a/slobrok/src/vespa/slobrok/server/sbenv.h b/slobrok/src/vespa/slobrok/server/sbenv.h
index 853e72e83c5..18ac40c2ba7 100644
--- a/slobrok/src/vespa/slobrok/server/sbenv.h
+++ b/slobrok/src/vespa/slobrok/server/sbenv.h
@@ -10,6 +10,7 @@
#include "ok_state.h"
#include "local_rpc_monitor_map.h"
#include "metrics_producer.h"
+#include "union_service_map.h"
#include <vespa/config-slobroks.h>
#include <vespa/slobrok/cfg.h>
#include <vespa/vespalib/net/simple_health_producer.h>
@@ -56,6 +57,7 @@ private:
MetricsProducer _metrics;
vespalib::SimpleComponentConfigProducer _components;
LocalRpcMonitorMap _localRpcMonitorMap;
+ UnionServiceMap _consensusMap;
ServiceMapHistory _globalVisibleHistory;
public:
@@ -82,6 +84,10 @@ public:
return _localRpcMonitorMap.history();
}
+ UnionServiceMap& consensusMap() {
+ return _consensusMap;
+ }
+
const std::string & mySpec() const { return _me; }
bool isSuspended() const { return false; }