summaryrefslogtreecommitdiffstats
path: root/slobrok
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@oath.com>2018-04-05 16:17:59 +0200
committerHenning Baldersheim <balder@oath.com>2018-04-05 16:17:59 +0200
commite8f12762299de2e77b8d627803a2634d7ad005ca (patch)
tree1cdd3b4f6db06b23d9ebb46169193b642e3378ba /slobrok
parent34c9a3609d05b640e0595f71fbd5fa87792c688a (diff)
Giving up if it fails constructing the StateServer for a long enough period.
Diffstat (limited to 'slobrok')
-rw-r--r--slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.cpp18
-rw-r--r--slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.h1
2 files changed, 13 insertions, 6 deletions
diff --git a/slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.cpp b/slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.cpp
index ade9794d2cb..ca6dcad1932 100644
--- a/slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.cpp
+++ b/slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.cpp
@@ -28,13 +28,11 @@ ReconfigurableStateServer::ReconfigurableStateServer(const config::ConfigUri & c
_configFetcher->start();
}
-ReconfigurableStateServer::~ReconfigurableStateServer() = default;
-
-bool
-ReconfigurableStateServer::isServerUp() const
+ReconfigurableStateServer::~ReconfigurableStateServer()
{
- return static_cast<bool>(_server);
+ _configFetcher->close();
}
+
void
ReconfigurableStateServer::configure(std::unique_ptr<vespa::config::StateserverConfig> config)
{
@@ -48,6 +46,16 @@ ReconfigurableStateServer::configure(std::unique_ptr<vespa::config::StateserverC
std::this_thread::sleep_for(retryTime * 1s);
}
}
+ if (!_server) {
+ try {
+ _server = std::make_unique<vespalib::StateServer>(config->httpport, _health, _metrics, _components);
+ } catch (vespalib::PortListenException & e) {
+ LOG(error, "Failed listening to network port(%d) with protocol(%s): '%s', giving up and restarting.",
+ e.get_port(), e.get_protocol().c_str(), e.what());
+ std::quick_exit(17);
+ }
+ }
+
}
}
diff --git a/slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.h b/slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.h
index 92646e1972a..a8747d09bfd 100644
--- a/slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.h
+++ b/slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.h
@@ -19,7 +19,6 @@ public:
vespalib::MetricsProducer & metrics,
vespalib::ComponentConfigProducer & component);
~ReconfigurableStateServer();
- bool isServerUp() const;
private:
void configure(std::unique_ptr<vespa::config::StateserverConfig> config) override;
vespalib::HealthProducer & _health;