Don't log when running autocomplete

Logging breaks autocomplete, with this patch we should only log when
something is going terribly wrong and execution can't be guaranteed or
is destined to fail.
This commit depends on the previous one which is why it's not in its own
pull request.

fixes #6256
This commit is contained in:
Jean Flach 2018-05-23 14:23:48 +02:00
parent ed4e008e79
commit 4b17e739eb

View File

@ -156,7 +156,7 @@ static int Main()
Application::DeclareZonesDir(Application::GetSysconfDir() + "/icinga2/zones.d"); Application::DeclareZonesDir(Application::GetSysconfDir() + "/icinga2/zones.d");
#ifndef _WIN32 #ifndef _WIN32
if (!Utility::PathExists(Application::GetSysconfigFile())) { if (!autocomplete && !Utility::PathExists(Application::GetSysconfigFile())) {
Log(LogWarning, "icinga-app") Log(LogWarning, "icinga-app")
<< "Sysconfig file '" << Application::GetSysconfigFile() << "' cannot be read. Using default values."; << "Sysconfig file '" << Application::GetSysconfigFile() << "' cannot be read. Using default values.";
} }
@ -173,50 +173,52 @@ static int Main()
Application::DeclareRunAsUser(icingaUser); Application::DeclareRunAsUser(icingaUser);
Application::DeclareRunAsGroup(icingaGroup); Application::DeclareRunAsGroup(icingaGroup);
if (!autocomplete) {
#ifdef RLIMIT_NOFILE #ifdef RLIMIT_NOFILE
String rLimitFiles = Utility::GetFromEnvironment("ICINGA2_RLIMIT_FILES"); String rLimitFiles = Utility::GetFromEnvironment("ICINGA2_RLIMIT_FILES");
if (rLimitFiles.IsEmpty()) if (rLimitFiles.IsEmpty())
Application::DeclareRLimitFiles(Application::GetDefaultRLimitFiles()); Application::DeclareRLimitFiles(Application::GetDefaultRLimitFiles());
else { else {
try { try {
Application::DeclareRLimitFiles(Convert::ToLong(rLimitFiles)); Application::DeclareRLimitFiles(Convert::ToLong(rLimitFiles));
} catch (const std::invalid_argument& ex) { } catch (const std::invalid_argument& ex) {
std::cout std::cout
<< "Error setting \"ICINGA2_RLIMIT_FILES\": " << ex.what() << '\n'; << "Error setting \"ICINGA2_RLIMIT_FILES\": " << ex.what() << '\n';
return EXIT_FAILURE; return EXIT_FAILURE;
}
} }
}
#endif /* RLIMIT_NOFILE */ #endif /* RLIMIT_NOFILE */
#ifdef RLIMIT_NPROC #ifdef RLIMIT_NPROC
String rLimitProcesses = Utility::GetFromEnvironment("ICINGA2_RLIMIT_PROCESSES"); String rLimitProcesses = Utility::GetFromEnvironment("ICINGA2_RLIMIT_PROCESSES");
if (rLimitProcesses.IsEmpty()) if (rLimitProcesses.IsEmpty())
Application::DeclareRLimitProcesses(Application::GetDefaultRLimitProcesses()); Application::DeclareRLimitProcesses(Application::GetDefaultRLimitProcesses());
else { else {
try { try {
Application::DeclareRLimitProcesses(Convert::ToLong(rLimitProcesses)); Application::DeclareRLimitProcesses(Convert::ToLong(rLimitProcesses));
} catch (const std::invalid_argument& ex) { } catch (const std::invalid_argument& ex) {
std::cout std::cout
<< "Error setting \"ICINGA2_RLIMIT_PROCESSES\": " << ex.what() << '\n'; << "Error setting \"ICINGA2_RLIMIT_PROCESSES\": " << ex.what() << '\n';
return EXIT_FAILURE; return EXIT_FAILURE;
}
} }
}
#endif /* RLIMIT_NPROC */ #endif /* RLIMIT_NPROC */
#ifdef RLIMIT_STACK #ifdef RLIMIT_STACK
String rLimitStack = Utility::GetFromEnvironment("ICINGA2_RLIMIT_STACK"); String rLimitStack = Utility::GetFromEnvironment("ICINGA2_RLIMIT_STACK");
if (rLimitStack.IsEmpty()) if (rLimitStack.IsEmpty())
Application::DeclareRLimitStack(Application::GetDefaultRLimitStack()); Application::DeclareRLimitStack(Application::GetDefaultRLimitStack());
else { else {
try { try {
Application::DeclareRLimitStack(Convert::ToLong(rLimitStack)); Application::DeclareRLimitStack(Convert::ToLong(rLimitStack));
} catch (const std::invalid_argument& ex) { } catch (const std::invalid_argument& ex) {
std::cout std::cout
<< "Error setting \"ICINGA2_RLIMIT_STACK\": " << ex.what() << '\n'; << "Error setting \"ICINGA2_RLIMIT_STACK\": " << ex.what() << '\n';
return EXIT_FAILURE; return EXIT_FAILURE;
}
} }
}
#endif /* RLIMIT_STACK */ #endif /* RLIMIT_STACK */
}
Application::DeclareConcurrency(std::thread::hardware_concurrency()); Application::DeclareConcurrency(std::thread::hardware_concurrency());
Application::DeclareMaxConcurrentChecks(Application::GetDefaultMaxConcurrentChecks()); Application::DeclareMaxConcurrentChecks(Application::GetDefaultMaxConcurrentChecks());