diff options
author | jonmv <venstad@gmail.com> | 2023-11-10 15:57:51 +0100 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2023-11-10 16:01:25 +0100 |
commit | 0683219b08f692a1c1e6648625cf28544215657a (patch) | |
tree | 50eaaa5456930c8748db3e8bb4e1034592181c59 /node-repository | |
parent | 70731c8d30e071cd3a7f64f51c7db3870747ab93 (diff) |
Check for equailty of cloud account instead
Diffstat (limited to 'node-repository')
-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); |