From: Gunnar Beutner Date: Mon, 8 Aug 2016 09:02:08 +0000 (+0200) Subject: Fix incorrect behavior for max_check_attempts X-Git-Tag: v2.5.0~127 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=597dc0dea26dc037584b1da9d982947ec59b4ad5;p=icinga2 Fix incorrect behavior for max_check_attempts fixes #11898 --- diff --git a/lib/icinga/checkable-check.cpp b/lib/icinga/checkable-check.cpp index a56554f63..299e9f216 100644 --- a/lib/icinga/checkable-check.cpp +++ b/lib/icinga/checkable-check.cpp @@ -177,9 +177,7 @@ void Checkable::ProcessCheckResult(const CheckResult::Ptr& cr, const MessageOrig std::set children = GetChildren(); - if (!old_cr) { - SetStateType(StateTypeSoft); - } else if (IsStateOK(cr->GetState())) { + if (IsStateOK(cr->GetState())) { SetStateType(StateTypeHard); // NOT-OK -> HARD OK if (!IsStateOK(old_state)) @@ -192,7 +190,7 @@ void Checkable::ProcessCheckResult(const CheckResult::Ptr& cr, const MessageOrig if (!children.empty()) OnReachabilityChanged(this, cr, children, origin); } else { - if (old_attempt >= GetMaxCheckAttempts()) { + if (old_attempt + 1 >= GetMaxCheckAttempts()) { SetStateType(StateTypeHard); } else if (old_stateType == StateTypeSoft && !IsStateOK(old_state)) { SetStateType(StateTypeSoft); @@ -284,9 +282,6 @@ void Checkable::ProcessCheckResult(const CheckResult::Ptr& cr, const MessageOrig send_notification = true; } - if (!old_cr) - send_notification = false; /* Don't send notifications for the initial state change */ - if (IsStateOK(old_state) && old_stateType == StateTypeSoft) send_notification = false; /* Don't send notifications for SOFT-OK -> HARD-OK. */