summaryrefslogtreecommitdiffstats
path: root/logforwarder
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahooinc.com>2021-12-17 07:56:49 +0000
committerArne H Juul <arnej@yahooinc.com>2021-12-17 07:56:49 +0000
commit8a4d1c484e09a697dc7a4ac4441268d197bde3a2 (patch)
treed226698c61c9199c010dd99986c8c98835707b74 /logforwarder
parent2eaa27f75d37737eaac6e14a2ac68d94646eb209 (diff)
try to stop child when stopping
Diffstat (limited to 'logforwarder')
-rw-r--r--logforwarder/src/apps/vespa-logforwarder-start/cf-handler.cpp10
-rw-r--r--logforwarder/src/apps/vespa-logforwarder-start/cf-handler.h3
-rw-r--r--logforwarder/src/apps/vespa-logforwarder-start/child-handler.cpp21
-rw-r--r--logforwarder/src/apps/vespa-logforwarder-start/child-handler.h3
-rw-r--r--logforwarder/src/apps/vespa-logforwarder-start/main.cpp1
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();
}
};