diff options
author | Jon Marius Venstad <jonmv@users.noreply.github.com> | 2023-11-10 16:01:44 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-10 16:01:44 +0100 |
commit | 8435f3c414ccbc2dae11e69f7592f04f279144c5 (patch) | |
tree | 50eaaa5456930c8748db3e8bb4e1034592181c59 | |
parent | 70731c8d30e071cd3a7f64f51c7db3870747ab93 (diff) | |
parent | 420ef8a588a95d15e16765bdf12ae8be746a4e20 (diff) |
Merge pull request #29311 from vespa-engine/jonmv/use-preprovisioned-lbs
Check for equailty of cloud account instead
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisioner.java | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisioner.java index 968e963f1a8..04813b476ca 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisioner.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisioner.java @@ -280,16 +280,16 @@ public class LoadBalancerProvisioner { private Optional<LoadBalancerInstance> provisionFromPool(LoadBalancerSpec spec, NodeType type) { if (type != NodeType.tenant) return Optional.empty(); if ( ! spec.settings().isDefault()) return Optional.empty(); - if ( ! spec.cloudAccount().isUnspecified()) return Optional.empty(); if (preProvisionPoolSize.value() == 0) return Optional.empty(); try (Lock lock = db.lock(preProvisionOwner)) { long tail = db.readLoadBalancerPoolTail(); if (tail >= db.readLoadBalancerPoolHead()) return Optional.empty(); ClusterSpec.Id slot = slotId(tail); + Optional<LoadBalancer> candidate = db.readLoadBalancer(new LoadBalancerId(preProvisionOwner, slot)); + if (candidate.flatMap(LoadBalancer::instance).map(instance -> ! instance.cloudAccount().equals(spec.cloudAccount())).orElse(false)) return Optional.empty(); db.incrementLoadBalancerPoolTail(); // Acquire now; if we fail below, no one else will use the possibly inconsistent instance. - LoadBalancer chosen = db.readLoadBalancer(new LoadBalancerId(preProvisionOwner, slotId(tail))) - .orElseThrow(() -> new IllegalStateException("could not find load balancer " + slot + " in pre-provisioned pool")); + LoadBalancer chosen = candidate.orElseThrow(() -> new IllegalStateException("could not find load balancer " + slot + " in pre-provisioned pool")); if (chosen.state() != State.active || chosen.instance().isEmpty()) throw new IllegalStateException("expected active load balancer in pre-provisioned pool, but got " + chosen); service.reallocate(chosen.instance().get(), spec); |