diff options
author | Arne Juul <arnej@verizonmedia.com> | 2021-08-20 11:31:39 +0000 |
---|---|---|
committer | Arne Juul <arnej@verizonmedia.com> | 2021-08-20 11:31:39 +0000 |
commit | 84b15f89859ff95b0475c8850131f6d400aa3597 (patch) | |
tree | 079c2ad9b3aa9ed59a163e70e553a6f413851279 /slobrok/src | |
parent | 8e7e1ecbd1117723d02b51df80861e3a05b4fb79 (diff) |
now lookup never fails
Diffstat (limited to 'slobrok/src')
-rw-r--r-- | slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.cpp | 54 | ||||
-rw-r--r-- | slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.h | 2 |
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, |