Skip to content

Commit

Permalink
Merge pull request #10168 from Icinga/next-check-cluster-sync-issue-2.13
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 23, 2024
2 parents 377fd59 + f66f995 commit 14d4dd6
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 @@ -358,21 +358,28 @@ void Checkable::ProcessCheckResult(const CheckResult::Ptr& cr, const MessageOrig

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 14d4dd6

Please sign in to comment.