summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-06-27 09:49:47 +0200
committerMartin Polden <mpolden@mpolden.no>2019-06-27 09:59:29 +0200
commitcf86c9add933a23176137af617f19be5e0508c2c (patch)
treef0ad9792105de290d962b378bb3b70e1daab4c59 /node-repository
parent0f7b172e464f4a89d22b12fe0e6ff9082e420b8c (diff)
Avoid reading all load balancers on prepare
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisioner.java17
2 files changed, 10 insertions, 9 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java
index fea30d3660c..bdc9991c1aa 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java
@@ -483,7 +483,7 @@ public class CuratorDatabaseClient {
Collections::unmodifiableMap));
}
- private Optional<LoadBalancer> readLoadBalancer(LoadBalancerId id) {
+ public Optional<LoadBalancer> readLoadBalancer(LoadBalancerId id) {
return read(loadBalancerPath(id), LoadBalancerSerializer::fromJson);
}
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 0828f3369a2..4077022c7cc 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
@@ -103,18 +103,19 @@ public class LoadBalancerProvisioner {
try (var loadBalancersLock = db.lockLoadBalancers()) {
var id = new LoadBalancerId(application, clusterId);
var now = nodeRepository.clock().instant();
- var loadBalancer = db.readLoadBalancers().get(id);
- if (loadBalancer == null && activate) return; // Nothing to activate as this load balancer was never prepared
+ var loadBalancer = db.readLoadBalancer(id);
+ if (loadBalancer.isEmpty() && activate) return; // Nothing to activate as this load balancer was never prepared
- var force = loadBalancer != null && loadBalancer.state() != LoadBalancer.State.active;
+ var force = loadBalancer.isPresent() && loadBalancer.get().state() != LoadBalancer.State.active;
var instance = create(application, clusterId, allocatedContainers(application, clusterId), force);
- if (loadBalancer == null) {
- loadBalancer = new LoadBalancer(id, instance, LoadBalancer.State.reserved, now);
+ LoadBalancer newLoadBalancer;
+ if (loadBalancer.isEmpty()) {
+ newLoadBalancer = new LoadBalancer(id, instance, LoadBalancer.State.reserved, now);
} else {
- var newState = activate ? LoadBalancer.State.active : loadBalancer.state();
- loadBalancer = loadBalancer.with(instance).with(newState, now);
+ var newState = activate ? LoadBalancer.State.active : loadBalancer.get().state();
+ newLoadBalancer = loadBalancer.get().with(instance).with(newState, now);
}
- db.writeLoadBalancer(loadBalancer);
+ db.writeLoadBalancer(newLoadBalancer);
}
}
}