diff options
author | Tor Brede Vekterli <vekterli@verizonmedia.com> | 2021-01-29 14:52:41 +0100 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@verizonmedia.com> | 2021-01-29 14:53:21 +0100 |
commit | 49ef57e331dc179ef8da20eb1277f95efcb45aae (patch) | |
tree | 6b11dd0a54511a9dc8b222d4c9743b265f810216 /clustercontroller-core/src/main | |
parent | 1341628ee1587fb39703a4fb6e3443286435dca0 (diff) |
Support optional resource usage name field
If present, will be reported alongside the resource type in the
feed block description string.
Diffstat (limited to 'clustercontroller-core/src/main')
2 files changed, 19 insertions, 6 deletions
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ResourceExhaustionCalculator.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ResourceExhaustionCalculator.java index 80b8a6110f1..c91c5dbeb8d 100644 --- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ResourceExhaustionCalculator.java +++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ResourceExhaustionCalculator.java @@ -37,9 +37,7 @@ public class ResourceExhaustionCalculator { int maxDescriptions = 3; String description = exhaustions.stream() .limit(maxDescriptions) - .map(n -> String.format("%s on node %s (%.3g > %.3g)", - n.resourceType, n.node.getIndex(), - n.resourceUsage.getUsage(), n.limit)) + .map(ResourceExhaustionCalculator::formatNodeResourceExhaustion) .collect(Collectors.joining(", ")); if (exhaustions.size() > maxDescriptions) { description += String.format(" (... and %d more)", exhaustions.size() - maxDescriptions); @@ -47,6 +45,14 @@ public class ResourceExhaustionCalculator { return ClusterStateBundle.FeedBlock.blockedWithDescription(description); } + private static String formatNodeResourceExhaustion(NodeResourceExhaustion n) { + return String.format("%s%s on node %s (%.3g > %.3g)", + n.resourceType, + (n.resourceUsage.getName() != null ? ":" + n.resourceUsage.getName() : ""), + n.node.getIndex(), + n.resourceUsage.getUsage(), n.limit); + } + public List<NodeResourceExhaustion> resourceExhaustionsFromHostInfo(Node node, HostInfo hostInfo) { List<NodeResourceExhaustion> exceedingLimit = null; for (var usage : hostInfo.getContentNode().getResourceUsage().entrySet()) { diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/ResourceUsage.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/ResourceUsage.java index e47ec5452a4..876bf9480a6 100644 --- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/ResourceUsage.java +++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/ResourceUsage.java @@ -11,9 +11,12 @@ import java.util.Objects; */ public class ResourceUsage { private final Double usage; + private final String name; - public ResourceUsage(@JsonProperty("usage") Double usage) { + public ResourceUsage(@JsonProperty("usage") Double usage, + @JsonProperty("name") String name) { this.usage = usage; + this.name = name; } /** Resource usage in [0, 1] */ @@ -21,16 +24,20 @@ public class ResourceUsage { return usage; } + public String getName() { + return name; + } + @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; ResourceUsage that = (ResourceUsage) o; - return Objects.equals(usage, that.usage); + return Objects.equals(usage, that.usage) && Objects.equals(name, that.name); } @Override public int hashCode() { - return Objects.hash(usage); + return Objects.hash(usage, name); } } |