From: Gunnar Beutner Date: Mon, 29 Aug 2016 12:12:29 +0000 (+0200) Subject: Fix race condition for concurrent_checks X-Git-Tag: v2.5.4~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8f7b819c9d48ca1c490c87afd6541bf0b304370f;p=icinga2 Fix race condition for concurrent_checks fixes #11932 --- diff --git a/lib/checker/checkercomponent.cpp b/lib/checker/checkercomponent.cpp index 3f5d2d112..880ea06ba 100644 --- a/lib/checker/checkercomponent.cpp +++ b/lib/checker/checkercomponent.cpp @@ -194,6 +194,8 @@ void CheckerComponent::CheckThreadProc(void) Log(LogDebug, "CheckerComponent") << "Executing check for '" << checkable->GetName() << "'"; + Checkable::IncreasePendingChecks(); + Utility::QueueAsyncCallback(boost::bind(&CheckerComponent::ExecuteCheckHelper, CheckerComponent::Ptr(this), checkable)); lock.lock(); @@ -222,6 +224,8 @@ void CheckerComponent::ExecuteCheckHelper(const Checkable::Ptr& checkable) Log(LogCritical, "checker", output); } + Checkable::DecreasePendingChecks(); + { boost::mutex::scoped_lock lock(m_Mutex);