[icinga-checkins] icinga.org: icinga2/master: Fix: Volatile check results for OK-> OK transitions are logged into DB IDO statehistory

git at icinga.org git at icinga.org
Sat May 21 13:41:56 CEST 2016


Module: icinga2
Branch: master
Commit: b4843dc81b40c3236766db2dc7a74df139976769
URL:    https://git.icinga.org/?p=icinga2.git;a=commit;h=b4843dc81b40c3236766db2dc7a74df139976769

Author: Michael Friedrich <michael.friedrich at netways.de>
Date:   Sat May 21 13:41:43 2016 +0200

Fix: Volatile check results for OK->OK transitions are logged into DB IDO statehistory

fixes #11823

---

 lib/icinga/checkable-check.cpp |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/lib/icinga/checkable-check.cpp b/lib/icinga/checkable-check.cpp
index 165fd56..d4cad90 100644
--- a/lib/icinga/checkable-check.cpp
+++ b/lib/icinga/checkable-check.cpp
@@ -355,7 +355,8 @@ void Checkable::ProcessCheckResult(const CheckResult::Ptr& cr, const MessageOrig
 	String old_state_str = (service ? Service::StateToString(old_state) : Host::StateToString(Host::CalculateState(old_state)));
 	String new_state_str = (service ? Service::StateToString(new_state) : Host::StateToString(Host::CalculateState(new_state)));
 
-	if (hardChange || is_volatile) {
+	/* Whether a hard state change or a volatile state change except OK -> OK happened. */
+	if (hardChange || is_volatile && !(IsStateOK(old_state) && IsStateOK(new_state))) {
 		OnStateChange(this, cr, StateTypeHard, origin);
 		Log(LogNotice, "Checkable")
 		    << "State Change: Checkable " << GetName() << " hard state change from " << old_state_str << " to " << new_state_str << " detected." << (is_volatile ? " Checkable is volatile." : "");
@@ -365,7 +366,8 @@ void Checkable::ProcessCheckResult(const CheckResult::Ptr& cr, const MessageOrig
 		    << "State Change: Checkable " << GetName() << " soft state change from " << old_state_str << " to " << new_state_str << " detected.";
 	}
 
-	if (GetStateType() == StateTypeSoft || hardChange || recovery || is_volatile)
+	if (GetStateType() == StateTypeSoft || hardChange || recovery ||
+	    is_volatile && !(IsStateOK(old_state) && IsStateOK(new_state)))
 		ExecuteEventHandler();
 
 	if (send_downtime_notification)



More information about the icinga-checkins mailing list