From e5b499bbdbcec9eaa6cb90db3ddcbb8618e00e5e Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Wed, 15 Jan 2025 10:34:13 +0100 Subject: [PATCH] UnreachableParent: Eliminate duplicate nodes Nodes might be referenced by multiple independent paths, which might lead to the same root problem multiple times. --- library/Icingadb/Model/UnreachableParent.php | 3 +++ .../Model/UnreachableParent/ResultSet.php | 23 +++++++++++++++++++ .../Icingadb/Widget/Detail/ObjectDetail.php | 1 - 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 library/Icingadb/Model/UnreachableParent/ResultSet.php diff --git a/library/Icingadb/Model/UnreachableParent.php b/library/Icingadb/Model/UnreachableParent.php index cf78d39a..7b3e3f45 100644 --- a/library/Icingadb/Model/UnreachableParent.php +++ b/library/Icingadb/Model/UnreachableParent.php @@ -5,6 +5,7 @@ namespace Icinga\Module\Icingadb\Model; use Icinga\Module\Icingadb\Model\Behavior\ReRoute; +use Icinga\Module\Icingadb\Model\UnreachableParent\ResultSet; use InvalidArgumentException; use ipl\Orm\Behavior\Binary; use ipl\Orm\Behaviors; @@ -112,6 +113,8 @@ class UnreachableParent extends DependencyNode ) )); + $query->setResultSetClass(ResultSet::class); + return $query; } diff --git a/library/Icingadb/Model/UnreachableParent/ResultSet.php b/library/Icingadb/Model/UnreachableParent/ResultSet.php new file mode 100644 index 00000000..d564b4e8 --- /dev/null +++ b/library/Icingadb/Model/UnreachableParent/ResultSet.php @@ -0,0 +1,23 @@ +id])) { + continue; + } + + $knownIds[$value->id] = true; + + yield $value; + } + } +} diff --git a/library/Icingadb/Widget/Detail/ObjectDetail.php b/library/Icingadb/Widget/Detail/ObjectDetail.php index 5b657425..c4e0a689 100644 --- a/library/Icingadb/Widget/Detail/ObjectDetail.php +++ b/library/Icingadb/Widget/Detail/ObjectDetail.php @@ -655,7 +655,6 @@ class ObjectDetail extends BaseHtmlElement 'service.host', 'service.host.state' ]) - ->setResultSetClass(VolatileStateResults::class) ->orderBy([ 'host.state.severity', 'host.state.last_state_change',