Fix: First HARD state does not change retry_interval to check_interval

refs #11825
This commit is contained in:
Michael Friedrich 2016-05-21 18:58:19 +02:00
parent 3f1a9f150b
commit d49b63d2ab
1 changed files with 7 additions and 1 deletions

View 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