Merge pull request #10163 from Icinga/next-check-cluster-sync-issue-2.14

Checkable: Don't recalculate `next_check` while processing remotely genrated check
This commit is contained in:
Yonas Habteab 2024-09-20 11:32:47 +02:00 committed by GitHub
commit 3b57e4915f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -360,8 +360,14 @@ Checkable::ProcessingResult Checkable::ProcessCheckResult(const CheckResult::Ptr
bool is_flapping = IsFlapping();
// Don't recompute the next check when the current check isn't generated by this endpoint. When the check is
// remotely generated we should've already received the "SetNextCheck" event before the "event::CheckResult"
// cluster event. Otherwise, the next check received before this check will be invalidated and cause the Checkable
// "next_check/next_update" in a HA setup to always be different from the other endpoint as the "m_SchedulingOffset"
// is randomly initialised on each node.
if (!origin) {
if (cr->GetActive()) {
UpdateNextCheck(origin);
UpdateNextCheck();
} else {
/* Reschedule the next check for external passive check results. The side effect of
* this is that for as long as we receive results for a service we
@ -374,7 +380,8 @@ Checkable::ProcessingResult Checkable::ProcessCheckResult(const CheckResult::Ptr
else
offset = GetCheckInterval();
SetNextCheck(Utility::GetTime() + offset, false, origin);
SetNextCheck(Utility::GetTime() + offset);
}
}
olock.Unlock();