From: Gunnar Beutner Date: Wed, 24 Aug 2016 09:13:19 +0000 (+0200) Subject: Fix incorrect notifications for soft recoveries X-Git-Tag: v2.6.0~229 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=deb938d41258e3f30aacf453a0decb325adfb1b9;p=icinga2 Fix incorrect notifications for soft recoveries fixes #12529 --- diff --git a/lib/icinga/checkable-check.cpp b/lib/icinga/checkable-check.cpp index a064a80ae..00e48232b 100644 --- a/lib/icinga/checkable-check.cpp +++ b/lib/icinga/checkable-check.cpp @@ -183,7 +183,7 @@ void Checkable::ProcessCheckResult(const CheckResult::Ptr& cr, const MessageOrig if (IsStateOK(cr->GetState())) { SetStateType(StateTypeHard); // NOT-OK -> HARD OK - if (old_stateType == StateTypeHard && !IsStateOK(old_state)) + if (!IsStateOK(old_state)) recovery = true; ResetNotificationNumbers(); @@ -278,7 +278,7 @@ void Checkable::ProcessCheckResult(const CheckResult::Ptr& cr, const MessageOrig if (notification_reachable && !in_downtime && !IsAcknowledged()) { /* Send notifications whether when a hard state change occured. */ - if (hardChange) + if (hardChange && !(old_stateType == StateTypeSoft && IsStateOK(new_state))) send_notification = true; /* Or if the checkable is volatile and in a HARD state. */ else if (is_volatile && GetStateType() == StateTypeHard) @@ -383,17 +383,9 @@ void Checkable::ProcessCheckResult(const CheckResult::Ptr& cr, const MessageOrig NotifyFlapping(origin); } - if (recovery) { - /* Recovery notifications must be sent any time. - * Users who where notified about a problem before - * will be filtered when processing the notification. - */ + if (send_notification && !is_flapping) { if (!IsPaused()) - OnNotificationsRequested(this, NotificationRecovery, cr, "", "", MessageOrigin::Ptr()); - } else if (send_notification && !is_flapping) { - /* Problem notifications */ - if (!IsPaused()) - OnNotificationsRequested(this, NotificationProblem, cr, "", "", MessageOrigin::Ptr()); + OnNotificationsRequested(this, recovery ? NotificationRecovery : NotificationProblem, cr, "", "", MessageOrigin::Ptr()); } }