From e8f12762299de2e77b8d627803a2634d7ad005ca Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Thu, 5 Apr 2018 16:17:59 +0200 Subject: Giving up if it fails constructing the StateServer for a long enough period. --- .../slobrok/server/reconfigurable_stateserver.cpp | 18 +++++++++++++----- .../vespa/slobrok/server/reconfigurable_stateserver.h | 1 - 2 files changed, 13 insertions(+), 6 deletions(-) (limited to 'slobrok/src') 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(_server); + _configFetcher->close(); } + void ReconfigurableStateServer::configure(std::unique_ptr config) { @@ -48,6 +46,16 @@ ReconfigurableStateServer::configure(std::unique_ptr(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 config) override; vespalib::HealthProducer & _health; -- cgit v1.2.3