Replace concurrent_checks in CheckerComponent by global MaxConcurrentChecks

refs #4841
This commit is contained in:
Noah Hilverling 2018-01-16 12:58:45 +01:00
parent e28277175b
commit 97bd91dda2
4 changed files with 55 additions and 1 deletions

View File

@ -161,6 +161,7 @@ static int Main()
Application::DeclareRLimitStack(Application::GetDefaultRLimitStack());
#endif /* __linux__ */
Application::DeclareConcurrency(std::thread::hardware_concurrency());
Application::DeclareMaxConcurrentChecks(Application::GetDefaultMaxConcurrentChecks());
ScriptGlobal::Set("AttachDebugger", false);

View File

@ -1552,6 +1552,48 @@ int Application::GetConcurrency()
return ScriptGlobal::Get("Concurrency", &defaultConcurrency);
}
/**
* Sets the max concurrent checks.
*
* @param maxChecks The new limit.
*/
void Application::SetMaxConcurrentChecks(int maxChecks)
{
ScriptGlobal::Set("MaxConcurrentChecks", maxChecks);
}
/**
* Sets the max concurrent checks.
*
* @param maxChecks The new limit.
*/
void Application::DeclareMaxConcurrentChecks(int maxChecks)
{
if (!ScriptGlobal::Exists("MaxConcurrentChecks"))
ScriptGlobal::Set("MaxConcurrentChecks", maxChecks);
}
/**
* Retrieves the max concurrent checks.
*
* @returns The max number of concurrent checks.
*/
int Application::GetMaxConcurrentChecks()
{
Value defaultMaxConcurrentChecks = GetDefaultMaxConcurrentChecks();
return ScriptGlobal::Get("MaxConcurrentChecks", &defaultMaxConcurrentChecks);
}
/**
* Retrieves the default value for max concurrent checks.
*
* @returns The default max number of concurrent checks.
*/
int Application::GetDefaultMaxConcurrentChecks()
{
return 512;
}
/**
* Returns the global thread pool.
*

View File

@ -146,6 +146,11 @@ public:
static int GetConcurrency();
static void DeclareConcurrency(int ncpus);
static int GetMaxConcurrentChecks();
static int GetDefaultMaxConcurrentChecks();
static void DeclareMaxConcurrentChecks(int maxChecks);
static void SetMaxConcurrentChecks(int maxChecks);
static ThreadPool& GetTP();
static String GetAppVersion();

View File

@ -27,8 +27,14 @@ namespace icinga
class CheckerComponent : ConfigObject
{
[config] int concurrent_checks {
get {{{
return Application::GetMaxConcurrentChecks();
}}}
set {{{
Application::SetMaxConcurrentChecks(value);
}}}
default {{{
return 512;
return Application::GetDefaultMaxConcurrentChecks();
}}}
};
};