diff options
author | Jon Bratseth <bratseth@vespa.ai> | 2023-07-12 11:22:24 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@vespa.ai> | 2023-07-12 11:22:24 +0200 |
commit | 63dc331187f9d0f2a3570552edaff2c6e3536bcf (patch) | |
tree | 336299d67b1e1bf576d53b870e44f5e52fd8749f /node-repository/src | |
parent | db3d8de32915fa6a5ab75ca3f29bf579ede09bcc (diff) |
Simplify
Diffstat (limited to 'node-repository/src')
3 files changed, 11 insertions, 15 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java index 307ff937ddf..ff24175f2a0 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java @@ -35,10 +35,12 @@ public class GroupPreparer { private final NodeRepository nodeRepository; private final Optional<HostProvisioner> hostProvisioner; + private final Optional<LoadBalancerProvisioner> loadBalancerProvisioner; - public GroupPreparer(NodeRepository nodeRepository, Optional<HostProvisioner> hostProvisioner) { + public GroupPreparer(NodeRepository nodeRepository, Optional<HostProvisioner> hostProvisioner, Optional<LoadBalancerProvisioner> loadBalancerProvisioner) { this.nodeRepository = nodeRepository; this.hostProvisioner = hostProvisioner; + this.loadBalancerProvisioner = loadBalancerProvisioner; } /** @@ -56,9 +58,11 @@ public class GroupPreparer { public List<Node> prepare(ApplicationId application, ClusterSpec cluster, NodeSpec requested, LockedNodeList allNodes) { log.log(Level.FINE, () -> "Preparing " + cluster.type().name() + " " + cluster.id() + " with requested resources " + requested.resources().orElse(NodeResources.unspecified())); + + loadBalancerProvisioner.ifPresent(provisioner -> provisioner.prepare(application, cluster, requested)); + // Try preparing in memory without global unallocated lock. Most of the time there should be no changes, // and we can return nodes previously allocated. - NodeIndices indices = new NodeIndices(cluster.id(), allNodes); NodeAllocation probeAllocation = prepareAllocation(application, cluster, requested, indices::probeNext, allNodes); if (probeAllocation.fulfilledAndNoChanges()) { @@ -128,7 +132,8 @@ public class GroupPreparer { } if (! allocation.fulfilled() && requested.canFail()) - throw new NodeAllocationException(allocation.allocationFailureDetails(), true); + throw new NodeAllocationException("Could not satisfy " + requested + " in " + application + " " + cluster + + allocation.allocationFailureDetails(), true); // Carry out and return allocation List<Node> acceptedNodes = allocation.finalNodes(); diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java index 45dd12c7bde..5de0911b2f9 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java @@ -455,7 +455,7 @@ class NodeAllocation { reasons.add("insufficient real resources on hosts"); if (reasons.isEmpty()) return ""; - return "Not enough suitable nodes available due to " + String.join(", ", reasons); + return ": Not enough suitable nodes available due to " + String.join(", ", reasons); } private static Integer parseIndex(String hostname) { diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java index 6ea59edc37d..5a33f2f2bb9 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java @@ -21,12 +21,10 @@ import java.util.Optional; class Preparer { private final GroupPreparer groupPreparer; - private final Optional<LoadBalancerProvisioner> loadBalancerProvisioner; public Preparer(NodeRepository nodeRepository, Optional<HostProvisioner> hostProvisioner, Optional<LoadBalancerProvisioner> loadBalancerProvisioner) { - this.loadBalancerProvisioner = loadBalancerProvisioner; - this.groupPreparer = new GroupPreparer(nodeRepository, hostProvisioner); + this.groupPreparer = new GroupPreparer(nodeRepository, hostProvisioner, loadBalancerProvisioner); } /** @@ -38,14 +36,7 @@ class Preparer { // but it may not change the set of active nodes, as the active nodes must stay in sync with the // active config model which is changed on activate public List<Node> prepare(ApplicationId application, ClusterSpec cluster, NodeSpec requested) { - try { - loadBalancerProvisioner.ifPresent(provisioner -> provisioner.prepare(application, cluster, requested)); - return groupPreparer.prepare(application, cluster, requested, groupPreparer.createUnlockedNodeList()); - } - catch (NodeAllocationException e) { - throw new NodeAllocationException("Could not satisfy " + requested + " in " + application + " " + cluster, e, - e.retryable()); - } + return groupPreparer.prepare(application, cluster, requested, groupPreparer.createUnlockedNodeList()); } } |