]> granicus.if.org Git - icinga2/commitdiff
Fix race condition for concurrent_checks
authorGunnar Beutner <gunnar.beutner@netways.de>
Mon, 29 Aug 2016 12:12:29 +0000 (14:12 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Mon, 29 Aug 2016 12:12:29 +0000 (14:12 +0200)
fixes #11932

lib/checker/checkercomponent.cpp

index ac8da330adcedb499f1b8e03272af480f16fcf11..89cb45be95ce87434a531f60fb62ae45c34fdbd5 100644 (file)
@@ -193,6 +193,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();
@@ -221,6 +223,8 @@ void CheckerComponent::ExecuteCheckHelper(const Checkable::Ptr& checkable)
                Log(LogCritical, "checker", output);
        }
 
+       Checkable::DecreasePendingChecks();
+
        {
                boost::mutex::scoped_lock lock(m_Mutex);