]> granicus.if.org Git - icinga2/commitdiff
Fix: First HARD state does not change retry_interval to check_interval
authorMichael Friedrich <michael.friedrich@netways.de>
Sat, 21 May 2016 16:58:19 +0000 (18:58 +0200)
committerMichael Friedrich <michael.friedrich@netways.de>
Sat, 21 May 2016 16:58:19 +0000 (18:58 +0200)
refs #11825

lib/icinga/checkable-check.cpp

index 4151e167ed907e1ec08bfc435da700ac62675878..7d129fdfc1c8a7f86373b038e743d0a2b96eb79c 100644 (file)
@@ -329,8 +329,14 @@ void Checkable::ProcessCheckResult(const CheckResult::Ptr& cr, const MessageOrig
                /* If there was a OK -> NOT-OK state change for actively scheduled checks,
                 * update the next check time using the retry_interval.
                 * Important: Add the cluster message origin. */
-               if (GetStateType() == StateTypeSoft)
+               if (GetStateType() == StateTypeSoft) {
                        UpdateNextCheck(origin);
+               } else if (hardChange) {
+                       /* A hard state change must enforce the check interval again.
+                        * UpdateNextCheck() will use the scheduling offset which generates
+                        * an incorrect check time from the previous retry interval. */
+                       SetNextCheck(Utility::GetTime() + GetCheckInterval(), false, origin);
+               }
        } else {
                /* Reschedule the next check for passive check results. The side effect of
                 * this is that for as long as we receive passive results for a service we