From b1e3a8a4366b43ec5783f5bf31cbcd30d3524e5e Mon Sep 17 00:00:00 2001 From: Yonas Habteab Date: Tue, 23 Sep 2025 18:47:20 +0200 Subject: [PATCH] Let Icinga DB & IDO subscribe to `OnNextCheckChanged` signal It also removes the extra `SendNextUpdate()` call from the `NewCheckResultHandler` handler in Icinga DB, since it's subscribed to the `NextCheckChanged` event anyway and that event is always emitted before the `NewCheckResult` event gets triggered. This call became redundant. --- lib/db_ido/dbevents.cpp | 2 +- lib/icingadb/icingadb-objects.cpp | 7 +++---- lib/icingadb/icingadb.hpp | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/db_ido/dbevents.cpp b/lib/db_ido/dbevents.cpp index cf80a0226..11a83d2c1 100644 --- a/lib/db_ido/dbevents.cpp +++ b/lib/db_ido/dbevents.cpp @@ -40,7 +40,7 @@ void DbEvents::StaticInitialize() DbEvents::RemoveAcknowledgement(checkable); }); - Checkable::OnNextCheckUpdated.connect([](const Checkable::Ptr& checkable) { NextCheckUpdatedHandler(checkable); }); + Checkable::OnNextCheckChanged.connect([](const Checkable::Ptr& checkable, const Value&) { NextCheckUpdatedHandler(checkable); }); Checkable::OnFlappingChanged.connect([](const Checkable::Ptr& checkable, const Value&) { FlappingChangedHandler(checkable); }); Checkable::OnNotificationSentToAllUsers.connect([](const Notification::Ptr& notification, const Checkable::Ptr& checkable, const std::set&, const NotificationType&, const CheckResult::Ptr&, const String&, const String&, diff --git a/lib/icingadb/icingadb-objects.cpp b/lib/icingadb/icingadb-objects.cpp index a8c2ed0b2..390d30063 100644 --- a/lib/icingadb/icingadb-objects.cpp +++ b/lib/icingadb/icingadb-objects.cpp @@ -135,8 +135,8 @@ void IcingaDB::ConfigStaticInitialize() IcingaDB::NewCheckResultHandler(checkable); }); - Checkable::OnNextCheckUpdated.connect([](const Checkable::Ptr& checkable) { - IcingaDB::NextCheckUpdatedHandler(checkable); + Checkable::OnNextCheckChanged.connect([](const Checkable::Ptr& checkable, const Value&) { + IcingaDB::NextCheckChangedHandler(checkable); }); Service::OnHostProblemChanged.connect([](const Service::Ptr& service, const CheckResult::Ptr&, const MessageOrigin::Ptr&) { @@ -3206,11 +3206,10 @@ void IcingaDB::NewCheckResultHandler(const Checkable::Ptr& checkable) { for (auto& rw : ConfigType::GetObjectsByType()) { rw->UpdateState(checkable, StateUpdate::Volatile); - rw->SendNextUpdate(checkable); } } -void IcingaDB::NextCheckUpdatedHandler(const Checkable::Ptr& checkable) +void IcingaDB::NextCheckChangedHandler(const Checkable::Ptr& checkable) { for (auto& rw : ConfigType::GetObjectsByType()) { rw->UpdateState(checkable, StateUpdate::Volatile); diff --git a/lib/icingadb/icingadb.hpp b/lib/icingadb/icingadb.hpp index 33b6414c8..778a13b23 100644 --- a/lib/icingadb/icingadb.hpp +++ b/lib/icingadb/icingadb.hpp @@ -202,7 +202,7 @@ private: static void CommentRemovedHandler(const Comment::Ptr& comment); static void FlappingChangeHandler(const Checkable::Ptr& checkable, double changeTime); static void NewCheckResultHandler(const Checkable::Ptr& checkable); - static void NextCheckUpdatedHandler(const Checkable::Ptr& checkable); + static void NextCheckChangedHandler(const Checkable::Ptr& checkable); static void DependencyGroupChildRegisteredHandler(const Checkable::Ptr& child, const DependencyGroup::Ptr& dependencyGroup); static void DependencyGroupChildRemovedHandler(const DependencyGroup::Ptr& dependencyGroup, const std::vector& dependencies, bool removeGroup); static void HostProblemChangedHandler(const Service::Ptr& service);