aboutsummaryrefslogtreecommitdiffstats
path: root/slobrok
diff options
context:
space:
mode:
authorArne Juul <arnej@verizonmedia.com>2021-09-01 17:14:36 +0000
committerArne Juul <arnej@verizonmedia.com>2021-09-02 07:53:04 +0000
commit59329d7f58dadd4b2817889d7062eabc5fd862db (patch)
tree8d7f7a1c01bc2606179b7e179e5082797dcd0fe8 /slobrok
parent37f520dd8ddff1394db733ea6fd726dad23f1cfe (diff)
we want local add (aka register requests) to start health check at once
Diffstat (limited to 'slobrok')
-rw-r--r--slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.cpp8
-rw-r--r--slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.h2
-rw-r--r--slobrok/src/vespa/slobrok/server/mapping_monitor.h2
-rw-r--r--slobrok/src/vespa/slobrok/server/rpc_mapping_monitor.cpp10
-rw-r--r--slobrok/src/vespa/slobrok/server/rpc_mapping_monitor.h2
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;