From a3fcef7201b804437becb7773821bb1457a1c8ce Mon Sep 17 00:00:00 2001 From: HÃ¥kon Hallingstad Date: Mon, 13 Sep 2021 16:41:21 +0200 Subject: Add ServiceStatus.UNKNOWN --- .../provision/maintenance/MetricsReporter.java | 2 ++ .../provision/maintenance/NodeHealthTracker.java | 3 ++- .../provision/maintenance/NodeFailerTest.java | 28 +++++++++++++++------- 3 files changed, 23 insertions(+), 10 deletions(-) (limited to 'node-repository/src') 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 d8bbf305b57..c0b635cf764 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 @@ -248,6 +248,8 @@ public class MetricsReporter extends NodeRepositoryMaintainer { metric.set("someServicesDown", (numberOfServicesDown > 0 ? 1 : 0), context); + metric.set("numberOfServicesUnknown", servicesCount.getOrDefault(ServiceStatus.UNKNOWN, 0L), context); + boolean down = NodeHealthTracker.allDown(services); metric.set("nodeFailerBadNode", (down ? 1 : 0), context); diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeHealthTracker.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeHealthTracker.java index 37969a30b81..693d8b6be9c 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeHealthTracker.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeHealthTracker.java @@ -116,7 +116,8 @@ public class NodeHealthTracker extends NodeRepositoryMaintainer { .collect(Collectors.groupingBy(ServiceInstance::serviceStatus, counting())); return countsByStatus.getOrDefault(ServiceStatus.UP, 0L) <= 0L && - countsByStatus.getOrDefault(ServiceStatus.DOWN, 0L) > 0L; + countsByStatus.getOrDefault(ServiceStatus.DOWN, 0L) > 0L && + countsByStatus.getOrDefault(ServiceStatus.UNKNOWN, 0L) == 0L; } /** Get node by given hostname and application. The applicationLock must be held when calling this */ diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailerTest.java index 2bd0c91f4a1..ad887212a05 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailerTest.java @@ -672,14 +672,23 @@ public class NodeFailerTest { @Test public void testUpness() { - assertFalse(badNode(0, 0, 0)); - assertFalse(badNode(0, 0, 2)); - assertFalse(badNode(0, 3, 0)); - assertFalse(badNode(0, 3, 2)); - assertTrue(badNode(1, 0, 0)); - assertTrue(badNode(1, 0, 2)); - assertFalse(badNode(1, 3, 0)); - assertFalse(badNode(1, 3, 2)); + assertFalse(badNode(0, 0, 0, 0)); + assertFalse(badNode(0, 0, 0, 2)); + assertFalse(badNode(0, 3, 0, 0)); + assertFalse(badNode(0, 3, 0, 2)); + assertTrue(badNode(1, 0, 0, 0)); + assertTrue(badNode(1, 0, 0, 2)); + assertFalse(badNode(1, 3, 0, 0)); + assertFalse(badNode(1, 3, 0, 2)); + + assertFalse(badNode(0, 0, 1, 0)); + assertFalse(badNode(0, 0, 1, 2)); + assertFalse(badNode(0, 3, 1, 0)); + assertFalse(badNode(0, 3, 1, 2)); + assertFalse(badNode(1, 0, 1, 0)); + assertFalse(badNode(1, 0, 1, 2)); + assertFalse(badNode(1, 3, 1, 0)); + assertFalse(badNode(1, 3, 1, 2)); } private void addServiceInstances(List list, ServiceStatus status, int num) { @@ -690,10 +699,11 @@ public class NodeFailerTest { } } - private boolean badNode(int numDown, int numUp, int numNotChecked) { + private boolean badNode(int numDown, int numUp, int numUnknown, int numNotChecked) { List services = new ArrayList<>(); addServiceInstances(services, ServiceStatus.DOWN, numDown); addServiceInstances(services, ServiceStatus.UP, numUp); + addServiceInstances(services, ServiceStatus.UNKNOWN, numUnknown); addServiceInstances(services, ServiceStatus.NOT_CHECKED, numNotChecked); Collections.shuffle(services); -- cgit v1.2.3