]> granicus.if.org Git - icinga2/commitdiff
Update next check before processing any result triggering status updates.
authorMichael Friedrich <Michael.Friedrich@netways.de>
Sun, 9 Mar 2014 17:06:24 +0000 (18:06 +0100)
committerMichael Friedrich <Michael.Friedrich@netways.de>
Sun, 9 Mar 2014 17:06:24 +0000 (18:06 +0100)
Fixes #5733

lib/db_ido/dbobject.cpp
lib/icinga/service-check.cpp

index b1c3e103181c871b0dd0212e5d82e8e2ec787334..c39d607a576db48d5aa8970a11278f5010ca86a2 100644 (file)
@@ -40,6 +40,7 @@ DbObject::DbObject(const shared_ptr<DbType>& type, const String& name1, const St
 
 void DbObject::StaticInitialize(void)
 {
+       /* triggered in ProcessCheckResult(), requires UpdateNextCheck() to be called before */
        DynamicObject::OnStateChanged.connect(boost::bind(&DbObject::StateChangedHandler, _1));
 }
 
index dbff5908d8297191c89949b92708747f06da7ed0..ca9f4795b75a7d6b7784f000e6106e066126027d 100644 (file)
@@ -405,6 +405,8 @@ void Service::ProcessCheckResult(const CheckResult::Ptr& cr, const String& autho
 //                     "% current: " + Convert::ToString(GetFlappingCurrent()) + "%.");
 
        OnNewCheckResult(GetSelf(), cr, authority);
+
+       /* signal status updates to for example db_ido */
        OnStateChanged(GetSelf());
 
        if (hardChange)
@@ -536,11 +538,12 @@ void Service::ExecuteCheck(void)
                        result->SetExecutionEnd(after_check);
        }
 
+       /* update next check before processing any result */
+       UpdateNextCheck();
+
        if (result)
                ProcessCheckResult(result);
 
-       UpdateNextCheck();
-
        {
                ObjectLock olock(this);
                m_CheckRunning = false;