diff options
Diffstat (limited to 'logforwarder/src')
5 files changed, 25 insertions, 13 deletions
diff --git a/logforwarder/src/apps/vespa-logforwarder-start/cf-handler.cpp b/logforwarder/src/apps/vespa-logforwarder-start/cf-handler.cpp index df4c6ee7f57..c76012d146a 100644 --- a/logforwarder/src/apps/vespa-logforwarder-start/cf-handler.cpp +++ b/logforwarder/src/apps/vespa-logforwarder-start/cf-handler.cpp @@ -84,7 +84,7 @@ CfHandler::doConfigure() getenv("VESPA_INSTANCE") != NULL && getenv("VESPA_ENVIRONMENT") != NULL && getenv("VESPA_REGION") != NULL) - { + { path = cfFilePath(config.splunkHome, "inputs.conf"); tmpPath = path + ".new"; fp = fopen(tmpPath.c_str(), "w"); @@ -99,9 +99,9 @@ CfHandler::doConfigure() if (config.clientName.size() == 0 || config.deploymentServer.size() == 0) { - childHandler.stopChild(config.splunkHome); + _childHandler.stopChild(); } else { - childHandler.startChild(config.splunkHome); + _childHandler.startChild(config.splunkHome); } } @@ -113,6 +113,10 @@ CfHandler::check() } } +void CfHandler::stop() { + _childHandler.stopChild(); +} + constexpr std::chrono::milliseconds CONFIG_TIMEOUT_MS(30 * 1000); void diff --git a/logforwarder/src/apps/vespa-logforwarder-start/cf-handler.h b/logforwarder/src/apps/vespa-logforwarder-start/cf-handler.h index f5bd4866930..8e7196fb034 100644 --- a/logforwarder/src/apps/vespa-logforwarder-start/cf-handler.h +++ b/logforwarder/src/apps/vespa-logforwarder-start/cf-handler.h @@ -9,7 +9,7 @@ using cloud::config::LogforwarderConfig; class CfHandler { private: - ChildHandler childHandler; + ChildHandler _childHandler; config::ConfigSubscriber _subscriber; config::ConfigHandle<LogforwarderConfig>::UP _handle; void subscribe(const std::string & configId, std::chrono::milliseconds timeout); @@ -18,5 +18,6 @@ public: CfHandler(); virtual ~CfHandler(); void start(const char *configId); + void stop(); void check(); }; diff --git a/logforwarder/src/apps/vespa-logforwarder-start/child-handler.cpp b/logforwarder/src/apps/vespa-logforwarder-start/child-handler.cpp index 810491404dd..a478e0bbd01 100644 --- a/logforwarder/src/apps/vespa-logforwarder-start/child-handler.cpp +++ b/logforwarder/src/apps/vespa-logforwarder-start/child-handler.cpp @@ -76,21 +76,26 @@ runSplunk(const vespalib::string &prefix, std::vector<const char *> args) void ChildHandler::startChild(const vespalib::string &prefix) { - if (! _childRunning) { - // it is possible that splunk was already running anyway, so - // make sure we restart it to get new config activated: - runSplunk(prefix, {"stop"}); + if (_childRunning && prefix == _runningPrefix) { + runSplunk(prefix, {"restart"}); + } else { + if (_childRunning) { + runSplunk(_runningPrefix, {"stop"}); + } else { + // it is possible that splunk was already running anyway, so + // make sure we restart it to get new config activated: + runSplunk(prefix, {"stop"}); + } sleep(1); runSplunk(prefix, {"start", "--answer-yes", "--no-prompt", "--accept-license"}); _childRunning = true; - } else { - runSplunk(prefix, {"restart"}); + _runningPrefix = prefix; } } void -ChildHandler::stopChild(const vespalib::string &prefix) +ChildHandler::stopChild() { - runSplunk(prefix, {"stop"}); + runSplunk(_runningPrefix, {"stop"}); _childRunning = false; } diff --git a/logforwarder/src/apps/vespa-logforwarder-start/child-handler.h b/logforwarder/src/apps/vespa-logforwarder-start/child-handler.h index 2eb50ee8944..22396a0e448 100644 --- a/logforwarder/src/apps/vespa-logforwarder-start/child-handler.h +++ b/logforwarder/src/apps/vespa-logforwarder-start/child-handler.h @@ -6,8 +6,9 @@ class ChildHandler { private: bool _childRunning; + vespalib::string _runningPrefix; public: void startChild(const vespalib::string &prefix); - void stopChild(const vespalib::string &prefix); + void stopChild(); ChildHandler(); }; diff --git a/logforwarder/src/apps/vespa-logforwarder-start/main.cpp b/logforwarder/src/apps/vespa-logforwarder-start/main.cpp index c6bb8f8946d..33fe4489811 100644 --- a/logforwarder/src/apps/vespa-logforwarder-start/main.cpp +++ b/logforwarder/src/apps/vespa-logforwarder-start/main.cpp @@ -21,6 +21,7 @@ public: handler.check(); usleep(12500); // Avoid busy looping; } + handler.stop(); } }; |