From: Gunnar Beutner Date: Tue, 22 Jul 2014 12:13:21 +0000 (+0200) Subject: Make sure that event handlers are run for hard recoveries X-Git-Tag: v2.0.2~54 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2d6ed4c9bef7408d525bcd45ff0f4780e6a8018d;p=icinga2 Make sure that event handlers are run for hard recoveries fixes #6686 --- diff --git a/lib/icinga/checkable-check.cpp b/lib/icinga/checkable-check.cpp index 4efc0faa6..7ec2393c0 100644 --- a/lib/icinga/checkable-check.cpp +++ b/lib/icinga/checkable-check.cpp @@ -250,7 +250,7 @@ void Checkable::ProcessCheckResult(const CheckResult::Ptr& cr, const MessageOrig ServiceState old_state = GetStateRaw(); StateType old_stateType = GetStateType(); long old_attempt = GetCheckAttempt(); - bool recovery; + bool recovery = false; if (old_cr && cr->GetExecutionStart() < old_cr->GetExecutionStart()) return; @@ -264,7 +264,6 @@ void Checkable::ProcessCheckResult(const CheckResult::Ptr& cr, const MessageOrig long attempt = 1; if (!old_cr) { - recovery = false; SetStateType(StateTypeHard); } else if (cr->GetState() == ServiceOK) { if (old_state == ServiceOK && old_stateType == StateTypeSoft) { @@ -272,6 +271,9 @@ void Checkable::ProcessCheckResult(const CheckResult::Ptr& cr, const MessageOrig recovery = true; } + if (old_state != ServiceOK) + recovery = true; // NOT OK -> SOFT/HARD OK + ResetNotificationNumbers(); SetLastStateOK(Utility::GetTime()); } else { @@ -284,8 +286,6 @@ void Checkable::ProcessCheckResult(const CheckResult::Ptr& cr, const MessageOrig attempt = old_attempt; } - recovery = false; - switch (cr->GetState()) { case ServiceOK: /* Nothing to do here. */