diff options
author | Arne Juul <arnej@verizonmedia.com> | 2021-09-01 17:14:36 +0000 |
---|---|---|
committer | Arne Juul <arnej@verizonmedia.com> | 2021-09-02 07:53:04 +0000 |
commit | 59329d7f58dadd4b2817889d7062eabc5fd862db (patch) | |
tree | 8d7f7a1c01bc2606179b7e179e5082797dcd0fe8 /slobrok | |
parent | 37f520dd8ddff1394db733ea6fd726dad23f1cfe (diff) |
we want local add (aka register requests) to start health check at once
Diffstat (limited to 'slobrok')
5 files changed, 14 insertions, 10 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 70bbab37e3e..454d123eead 100644 --- a/slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.cpp +++ b/slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.cpp @@ -56,11 +56,11 @@ LocalRpcMonitorMap::lookup(const ServiceMapping &mapping) { return psd; } -void LocalRpcMonitorMap::addToMap(const ServiceMapping &mapping, PerService psd) { +void LocalRpcMonitorMap::addToMap(const ServiceMapping &mapping, PerService psd, bool hurry) { auto [ iter, was_inserted ] = _map.try_emplace(mapping.name, std::move(psd)); LOG_ASSERT(was_inserted); - _mappingMonitor->start(mapping); + _mappingMonitor->start(mapping, hurry); } LocalRpcMonitorMap::RemovedData @@ -102,7 +102,7 @@ void LocalRpcMonitorMap::addLocal(const ServiceMapping &mapping, inflight->doneHandler(OkState(FRTE_RPC_METHOD_FAILED, "conflict")); return; } - addToMap(mapping, localService(mapping, std::move(inflight))); + addToMap(mapping, localService(mapping, std::move(inflight)), true); } void LocalRpcMonitorMap::add(const ServiceMapping &mapping) { @@ -137,7 +137,7 @@ void LocalRpcMonitorMap::doAdd(const ServiceMapping &mapping) { _dispatcher.remove(removed.mapping); } } - addToMap(mapping, globalService(mapping)); + addToMap(mapping, globalService(mapping), false); } void LocalRpcMonitorMap::doRemove(const ServiceMapping &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 8df2ca882de..3b2c74648d2 100644 --- a/slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.h +++ b/slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.h @@ -103,7 +103,7 @@ private: PerService & lookup(const ServiceMapping &mapping); - void addToMap(const ServiceMapping &mapping, PerService psd); + void addToMap(const ServiceMapping &mapping, PerService psd, bool hurry); struct RemovedData { ServiceMapping mapping; diff --git a/slobrok/src/vespa/slobrok/server/mapping_monitor.h b/slobrok/src/vespa/slobrok/server/mapping_monitor.h index 035023f32fa..4ac89e7521a 100644 --- a/slobrok/src/vespa/slobrok/server/mapping_monitor.h +++ b/slobrok/src/vespa/slobrok/server/mapping_monitor.h @@ -17,7 +17,7 @@ protected: struct MappingMonitor { using UP = std::unique_ptr<MappingMonitor>; - virtual void start(const ServiceMapping& mapping) = 0; + virtual void start(const ServiceMapping& mapping, bool hurry) = 0; virtual void stop(const ServiceMapping& mapping) = 0; virtual ~MappingMonitor() = default; }; diff --git a/slobrok/src/vespa/slobrok/server/rpc_mapping_monitor.cpp b/slobrok/src/vespa/slobrok/server/rpc_mapping_monitor.cpp index 80c1a7d445a..39bd0f49cde 100644 --- a/slobrok/src/vespa/slobrok/server/rpc_mapping_monitor.cpp +++ b/slobrok/src/vespa/slobrok/server/rpc_mapping_monitor.cpp @@ -21,11 +21,15 @@ RpcMappingMonitor::RpcMappingMonitor(FRT_Supervisor &orb, MappingMonitorOwner &o RpcMappingMonitor::~RpcMappingMonitor() = default; -void RpcMappingMonitor::start(const ServiceMapping& mapping) { +void RpcMappingMonitor::start(const ServiceMapping& mapping, bool hurry) { LOG(spam, "start %s->%s", mapping.name.c_str(), mapping.spec.c_str()); LOG_ASSERT(_map.find(mapping) == _map.end()); - _map.emplace(mapping, - std::make_unique<ManagedRpcServer>(mapping.name, mapping.spec, *this)); + auto up = std::make_unique<ManagedRpcServer>(mapping.name, mapping.spec, *this); + auto & managed = *up; + _map.emplace(mapping, std::move(up)); + if (hurry) { + managed.healthCheck(); + } } void RpcMappingMonitor::stop(const ServiceMapping& mapping) { diff --git a/slobrok/src/vespa/slobrok/server/rpc_mapping_monitor.h b/slobrok/src/vespa/slobrok/server/rpc_mapping_monitor.h index 2f05a459729..a7ea5545bb1 100644 --- a/slobrok/src/vespa/slobrok/server/rpc_mapping_monitor.h +++ b/slobrok/src/vespa/slobrok/server/rpc_mapping_monitor.h @@ -49,7 +49,7 @@ public: RpcMappingMonitor(FRT_Supervisor &orb, MappingMonitorOwner &owner); ~RpcMappingMonitor(); - void start(const ServiceMapping& mapping) override; + void start(const ServiceMapping& mapping, bool hurry) override; void stop(const ServiceMapping& mapping) override; void notifyFailedRpcSrv(ManagedRpcServer *rpcsrv, std::string errmsg) override; |