aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Marius Venstad <jonmv@users.noreply.github.com>2023-11-10 16:01:44 +0100
committerGitHub <noreply@github.com>2023-11-10 16:01:44 +0100
commit8435f3c414ccbc2dae11e69f7592f04f279144c5 (patch)
tree50eaaa5456930c8748db3e8bb4e1034592181c59
parent70731c8d30e071cd3a7f64f51c7db3870747ab93 (diff)
parent420ef8a588a95d15e16765bdf12ae8be746a4e20 (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.java6
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);