diff options
Diffstat (limited to 'logforwarder/src/apps/vespa-otelcol-start/child-handler.cpp')
-rw-r--r-- | logforwarder/src/apps/vespa-otelcol-start/child-handler.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/logforwarder/src/apps/vespa-otelcol-start/child-handler.cpp b/logforwarder/src/apps/vespa-otelcol-start/child-handler.cpp index 4c5882b9710..a69f090e4df 100644 --- a/logforwarder/src/apps/vespa-otelcol-start/child-handler.cpp +++ b/logforwarder/src/apps/vespa-otelcol-start/child-handler.cpp @@ -58,10 +58,18 @@ void ChildHandler::startChild(const std::string &progPath, const std::string &cf return; } if (child == 0) { - std::string cfArg1{"--config=file:" "/etc/otelcol/gw-config.yaml"}; - std::string cfArg2{"--config=file:" + cfPath}; - const char *cargv[] = { progPath.c_str(), cfArg1.c_str(), cfArg2.c_str(), nullptr }; - execv(progPath.c_str(), const_cast<char **>(cargv)); + std::string cfgPrefix{"--config=file:"}; + const char *gwCfg = "/etc/otelcol/gw-config.yaml"; + std::string cfArg1{cfgPrefix + gwCfg}; + std::string cfArg2{cfgPrefix + cfPath}; + if (access(gwCfg, R_OK) == 0) { + const char *cargv[] = { progPath.c_str(), cfArg1.c_str(), cfArg2.c_str(), nullptr }; + execv(progPath.c_str(), const_cast<char **>(cargv)); + } else { + fprintf(stderr, "info\tMissing config file: %s (running without it)\n", gwCfg); + const char *cargv[] = { progPath.c_str(), cfArg2.c_str(), nullptr }; + execv(progPath.c_str(), const_cast<char **>(cargv)); + } // if execv fails: perror(progPath.c_str()); std::_Exit(1); |