diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-09-29 12:40:24 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-09-29 12:40:24 +0200 |
commit | 258781c41e178a66e144226f678a294f8ae28e00 (patch) | |
tree | 501138466a157682b53ac4ba7b807ce9d011249a /node-repository | |
parent | a17b4180447a046643f7bd893307c5b5739789b7 (diff) |
Parent is optional
Diffstat (limited to 'node-repository')
3 files changed, 12 insertions, 12 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodesAndHosts.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodesAndHosts.java index dd9c7021b9e..5cf9d297c15 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodesAndHosts.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodesAndHosts.java @@ -5,9 +5,10 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; /** - * Wraps a NodeList and builds a host -> children mapping for faster access + * Wraps a NodeList and builds a host to children mapping for faster access * as that is done very frequently. * * @author baldersheim @@ -38,11 +39,11 @@ public class NodesAndHosts<NL extends NodeList> { return hostAndNodes != null ? NodeList.copyOf(hostAndNodes.children) : NodeList.of(); } - public Node parentOf(Node node) { - if (node.parentHostname().isEmpty()) return null; + public Optional<Node> parentOf(Node node) { + if (node.parentHostname().isEmpty()) return Optional.empty(); HostAndNodes hostAndNodes = host2Nodes.get(node.parentHostname().get()); - return hostAndNodes != null ? hostAndNodes.host : null; + return hostAndNodes != null ? Optional.ofNullable(hostAndNodes.host) : Optional.empty(); } private static class HostAndNodes { diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMover.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMover.java index fef6713b072..a3dff2f8290 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMover.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMover.java @@ -77,7 +77,7 @@ public abstract class NodeMover<MOVE> extends NodeRepositoryMaintainer { if (spares.contains(toHost.node)) continue; // Do not offer spares as a valid move as they are reserved for replacement of failed nodes if ( ! toHost.hasCapacity(node.resources())) continue; - MOVE suggestedMove = suggestedMove(node, allNodes.parentOf(node), toHost.node, allNodes); + MOVE suggestedMove = suggestedMove(node, allNodes.parentOf(node).get(), toHost.node, allNodes); bestMove = bestMoveOf(bestMove, suggestedMove); } } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java index 64d0fd9942f..e506216f13d 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java @@ -179,8 +179,9 @@ public class NodePrioritizer { /** Create a candidate from given pre-existing node */ private NodeCandidate candidateFrom(Node node, boolean isSurplus) { - Node parent = allNodes.parentOf(node); - if (parent != null) { + Optional<Node> optionalParent = allNodes.parentOf(node); + if (optionalParent.isPresent()) { + Node parent = optionalParent.get(); return NodeCandidate.createChild(node, capacity.availableCapacityOf(parent), parent, @@ -192,8 +193,7 @@ public class NodePrioritizer { capacity.availableCapacityOf(parent), topologyChange, currentClusterSize)); - } - else { + } else { return NodeCandidate.createStandalone(node, isSurplus, false); } } @@ -216,9 +216,8 @@ public class NodePrioritizer { */ private boolean canStillAllocate(Node node) { if (node.type() != NodeType.tenant || node.parentHostname().isEmpty()) return true; - Node parent = allNodes.parentOf(node); - if (parent == null) return false; - return Nodes.canAllocateTenantNodeTo(parent, dynamicProvisioning); + Optional<Node> parent = allNodes.parentOf(node); + return parent.isPresent() ? Nodes.canAllocateTenantNodeTo(parent.get(), dynamicProvisioning) : null; } } |