From 86bbb79869859bcc892625b810ef315da876f448 Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Fri, 31 Jan 2020 11:49:47 +0100 Subject: [PATCH] Checkable#next_update: ignore re-scheduled #next_check if !#enable_active_checks refs #7790 --- lib/icinga/checkable.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/icinga/checkable.cpp b/lib/icinga/checkable.cpp index 3857c5a30..3ff54b267 100644 --- a/lib/icinga/checkable.cpp +++ b/lib/icinga/checkable.cpp @@ -192,14 +192,17 @@ bool Checkable::GetHandled() const Timestamp Checkable::GetNextUpdate() const { auto cr (GetLastCheckResult()); + double interval, latency; if (cr) { - return GetNextCheck() - + (GetProblem() && GetStateType() == StateTypeSoft ? GetRetryInterval() : GetCheckInterval()) - + 2 * (cr->GetExecutionEnd() - cr->GetScheduleStart()); + interval = GetProblem() && GetStateType() == StateTypeSoft ? GetRetryInterval() : GetCheckInterval(); + latency = cr->GetExecutionEnd() - cr->GetScheduleStart(); } else { - return GetNextCheck() + GetCheckInterval(); + interval = GetCheckInterval(); + latency = 0.0; } + + return (GetEnableActiveChecks() ? GetNextCheck() : (cr ? cr->GetExecutionEnd() : Application::GetMainTime()) + interval) + interval + 2 * latency; } void Checkable::NotifyFixedDowntimeStart(const Downtime::Ptr& downtime)