From a2ee4e69cc539461b09071bb49e70c68fc910595 Mon Sep 17 00:00:00 2001 From: bjormel Date: Thu, 23 Nov 2023 10:25:07 +0000 Subject: exclusive nodes not counted as empty with child in any state --- .../yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java | 2 +- .../vespa/hosted/provision/maintenance/MetricsReporterTest.java | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'node-repository') diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java index 99d627e58b1..e5941bedfb8 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java @@ -403,7 +403,7 @@ public class MetricsReporter extends NodeRepositoryMaintainer { node.exclusiveToApplicationId().isPresent()) .matching(host -> host.history().hasEventBefore(History.Event.Type.activated, now.minus(minActivePeriod))) - .matching(host -> nodes.childrenOf(host).state(State.active).isEmpty()) + .matching(host -> nodes.childrenOf(host).isEmpty()) .size(); metric.set(ConfigServerMetrics.NODES_EMPTY_EXCLUSIVE.baseName(), emptyHosts, null); } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java index 691e67d945c..d4771594569 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java @@ -368,6 +368,12 @@ public class MetricsReporterTest { // Hosts are now in use metricsReporter.maintain(); assertEquals(0, metric.values.get("nodes.emptyExclusive").intValue()); + + // Fail one node, parent should not be considered empty as the FailedExpirer will remove the node + tester.fail(tester.getNodes(app, Node.State.active).stream().findFirst().get().hostname()); + metricsReporter.maintain(); + assertEquals(0, metric.values.get("nodes.emptyExclusive").intValue()); + } private Number getMetric(String name, TestMetric metric, Map dimensions) { -- cgit v1.2.3