Skip to content

Commit

Permalink
Merge pull request #10163 from Icinga/next-check-cluster-sync-issue-2.14
Browse files Browse the repository at this point in the history
Checkable: Don't recalculate `next_check` while processing remotely genrated check
  • Loading branch information
yhabteab committed Sep 20, 2024
2 parents 2d9917a + 200f198 commit 3b57e49
Showing 1 changed file with 21 additions and 14 deletions.
35 changes: 21 additions & 14 deletions lib/icinga/checkable-check.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -360,21 +360,28 @@ Checkable::ProcessingResult Checkable::ProcessCheckResult(const CheckResult::Ptr

bool is_flapping = IsFlapping();

if (cr->GetActive()) {
UpdateNextCheck(origin);
} 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
* won't execute any active checks. */
double offset;
double ttl = cr->GetTtl();

if (ttl > 0)
offset = ttl;
else
offset = GetCheckInterval();
// 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();
} 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
* won't execute any active checks. */
double offset;
double ttl = cr->GetTtl();

if (ttl > 0)
offset = ttl;
else
offset = GetCheckInterval();

SetNextCheck(Utility::GetTime() + offset, false, origin);
SetNextCheck(Utility::GetTime() + offset);
}
}

olock.Unlock();
Expand Down

0 comments on commit 3b57e49

Please sign in to comment.