summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-06-21 13:42:18 +0200
committerMartin Polden <mpolden@mpolden.no>2019-06-21 13:44:26 +0200
commit65a5316c0891059ec1dad5ad28f34265cceaaead (patch)
treedfb493885f5440d2b36bf6745c4cad4cfbefeb7a /node-repository
parentfe4a0938e061aca61f9308481fa1aa6a5e1b9f92 (diff)
Use common exception class for transient provisioning exceptions
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerServiceException.java17
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisioner.java9
2 files changed, 25 insertions, 1 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerServiceException.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerServiceException.java
new file mode 100644
index 00000000000..e5ab519ab94
--- /dev/null
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerServiceException.java
@@ -0,0 +1,17 @@
+// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.provision.lb;
+
+import com.yahoo.config.provision.TransientException;
+
+/**
+ * Transient exception thrown on behalf of a {@link LoadBalancerService}.
+ *
+ * @author mpolden
+ */
+public class LoadBalancerServiceException extends TransientException {
+
+ public LoadBalancerServiceException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+}
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 b74972458de..ca7ee1b13a1 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
@@ -14,6 +14,7 @@ import com.yahoo.vespa.hosted.provision.NodeRepository;
import com.yahoo.vespa.hosted.provision.lb.LoadBalancer;
import com.yahoo.vespa.hosted.provision.lb.LoadBalancerId;
import com.yahoo.vespa.hosted.provision.lb.LoadBalancerInstance;
+import com.yahoo.vespa.hosted.provision.lb.LoadBalancerServiceException;
import com.yahoo.vespa.hosted.provision.lb.LoadBalancerService;
import com.yahoo.vespa.hosted.provision.lb.Real;
import com.yahoo.vespa.hosted.provision.node.IP;
@@ -126,7 +127,13 @@ public class LoadBalancerProvisioner {
});
log.log(LogLevel.INFO, "Creating load balancer for " + cluster + " in " + application.toShortString() +
", targeting: " + nodes);
- return service.create(application, cluster, reals);
+ try {
+ return service.create(application, cluster, reals);
+ } catch (Exception e) {
+ throw new LoadBalancerServiceException("Failed to (re)configure load balancer for " + cluster + " in " +
+ application + ", targeting: " + nodes + ". The operation will be " +
+ "retried on next deployment", e);
+ }
}
/** Returns a list of active and reserved nodes of type container in given cluster */