summaryrefslogtreecommitdiffstats
path: root/slobrok
diff options
context:
space:
mode:
authorArne Juul <arnej@verizonmedia.com>2021-08-20 11:31:39 +0000
committerArne Juul <arnej@verizonmedia.com>2021-08-20 11:31:39 +0000
commit84b15f89859ff95b0475c8850131f6d400aa3597 (patch)
tree079c2ad9b3aa9ed59a163e70e553a6f413851279 /slobrok
parent8e7e1ecbd1117723d02b51df80861e3a05b4fb79 (diff)
now lookup never fails
Diffstat (limited to 'slobrok')
-rw-r--r--slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.cpp54
-rw-r--r--slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.h2
2 files changed, 27 insertions, 29 deletions
diff --git a/slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.cpp b/slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.cpp
index fe7c7dd2c36..5891f315bbd 100644
--- a/slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.cpp
+++ b/slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.cpp
@@ -38,7 +38,7 @@ LocalRpcMonitorMap::LocalRpcMonitorMap(FRT_Supervisor &supervisor,
LocalRpcMonitorMap::~LocalRpcMonitorMap() = default;
-LocalRpcMonitorMap::PerService *
+LocalRpcMonitorMap::PerService &
LocalRpcMonitorMap::lookup(const ServiceMapping &mapping) {
LOG(spam, "lookup %s->%s", mapping.name.c_str(), mapping.spec.c_str());
auto iter = _map.find(mapping.name);
@@ -53,7 +53,7 @@ LocalRpcMonitorMap::lookup(const ServiceMapping &mapping) {
iter->first.c_str(), psd.spec.c_str(),
psd.up ? "up" : "down",
psd.localOnly ? "local" : "global");
- return &psd;
+ return psd;
}
ServiceMapHistory & LocalRpcMonitorMap::history() {
@@ -155,38 +155,36 @@ void LocalRpcMonitorMap::doRemove(const ServiceMapping &mapping) {
}
void LocalRpcMonitorMap::down(const ServiceMapping& mapping) {
- if (auto *psd = lookup(mapping)) {
- LOG(debug, "failed: %s->%s", mapping.name.c_str(), psd->spec.c_str());
- if (psd->inflight) {
- auto target = std::move(psd->inflight);
- target->doneHandler(OkState(13, "failed check using listNames callback"));
- }
- if (psd->localOnly) {
- PerService removed = std::move(*psd);
- auto iter = _map.find(mapping.name);
- _mappingMonitor->stop(mapping);
- _map.erase(iter);
- if (removed.up) {
- _dispatcher.remove(mapping);
- }
- } else if (psd->up) {
- psd->up = false;
+ PerService &psd = lookup(mapping);
+ LOG(debug, "failed: %s->%s", mapping.name.c_str(), psd.spec.c_str());
+ if (psd.inflight) {
+ auto target = std::move(psd.inflight);
+ target->doneHandler(OkState(13, "failed check using listNames callback"));
+ }
+ if (psd.localOnly) {
+ PerService removed = std::move(psd);
+ auto iter = _map.find(mapping.name);
+ _mappingMonitor->stop(mapping);
+ _map.erase(iter);
+ if (removed.up) {
_dispatcher.remove(mapping);
}
+ } else if (psd.up) {
+ psd.up = false;
+ _dispatcher.remove(mapping);
}
}
void LocalRpcMonitorMap::up(const ServiceMapping& mapping) {
- if (auto *psd = lookup(mapping)) {
- LOG(debug, "ok: %s->%s", mapping.name.c_str(), psd->spec.c_str());
- if (psd->inflight) {
- auto target = std::move(psd->inflight);
- target->doneHandler(OkState());
- }
- if (! psd->up) {
- psd->up = true;
- _dispatcher.add(mapping);
- }
+ PerService &psd = lookup(mapping);
+ LOG(debug, "ok: %s->%s", mapping.name.c_str(), psd.spec.c_str());
+ if (psd.inflight) {
+ auto target = std::move(psd.inflight);
+ target->doneHandler(OkState());
+ }
+ if (! psd.up) {
+ psd.up = true;
+ _dispatcher.add(mapping);
}
}
diff --git a/slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.h b/slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.h
index a0971a8c80b..2b898425dee 100644
--- a/slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.h
+++ b/slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.h
@@ -101,7 +101,7 @@ private:
void doAdd(const ServiceMapping &mapping);
void doRemove(const ServiceMapping &mapping);
- PerService * lookup(const ServiceMapping &mapping);
+ PerService & lookup(const ServiceMapping &mapping);
public:
LocalRpcMonitorMap(FRT_Supervisor &supervisor,