diff options
author | Henning Baldersheim <balder@oath.com> | 2018-04-05 16:17:59 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@oath.com> | 2018-04-05 16:17:59 +0200 |
commit | e8f12762299de2e77b8d627803a2634d7ad005ca (patch) | |
tree | 1cdd3b4f6db06b23d9ebb46169193b642e3378ba /slobrok/src | |
parent | 34c9a3609d05b640e0595f71fbd5fa87792c688a (diff) |
Giving up if it fails constructing the StateServer for a long enough period.
Diffstat (limited to 'slobrok/src')
-rw-r--r-- | slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.cpp | 18 | ||||
-rw-r--r-- | slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.h | 1 |
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; |