From: Michael Friedrich Date: Sun, 9 Mar 2014 17:06:24 +0000 (+0100) Subject: Update next check before processing any result triggering status updates. X-Git-Tag: v0.0.8~17 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4a077c9ceb9ae093efd651f406b307bd39d02a42;p=icinga2 Update next check before processing any result triggering status updates. Fixes #5733 --- diff --git a/lib/db_ido/dbobject.cpp b/lib/db_ido/dbobject.cpp index b1c3e1031..c39d607a5 100644 --- a/lib/db_ido/dbobject.cpp +++ b/lib/db_ido/dbobject.cpp @@ -40,6 +40,7 @@ DbObject::DbObject(const shared_ptr& 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)); } diff --git a/lib/icinga/service-check.cpp b/lib/icinga/service-check.cpp index dbff5908d..ca9f4795b 100644 --- a/lib/icinga/service-check.cpp +++ b/lib/icinga/service-check.cpp @@ -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;