aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@vespa.ai>2024-06-12 15:25:32 +0200
committerValerij Fredriksen <valerijf@vespa.ai>2024-06-12 15:25:32 +0200
commit49d22ac04dedff6640b27cfc30158a7f4f2ca861 (patch)
treeb9654d9a0735a3c6ab4d677c2f6f75c753e76035 /node-repository
parent153bcecb2181ccfba531ee3c348161f525fc484f (diff)
Define and catch ThrottleProvisioningException
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostDeprovisioner.java4
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ThrottleProvisioningException.java16
2 files changed, 20 insertions, 0 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostDeprovisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostDeprovisioner.java
index 4026a294111..8a532131d90 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostDeprovisioner.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostDeprovisioner.java
@@ -6,6 +6,7 @@ import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.NodeRepository;
import com.yahoo.vespa.hosted.provision.provisioning.HostProvisioner;
+import com.yahoo.vespa.hosted.provision.provisioning.ThrottleProvisioningException;
import java.time.Duration;
import java.util.logging.Level;
@@ -48,6 +49,9 @@ public class HostDeprovisioner extends NodeRepositoryMaintainer {
// if we want to support aborting deprovision if operator manually intervenes
if (hostProvisioner.deprovision(host))
nodeRepository().nodes().removeRecursively(host, true);
+ } catch (ThrottleProvisioningException e) {
+ log.log(Level.INFO, "Failed to deprovision " + host.hostname() + ", will retry in " + interval() + ": " + e.getMessage());
+ break;
} catch (RuntimeException e) {
failures++;
log.log(Level.WARNING, "Failed to deprovision " + host.hostname() + ", will retry in " + interval(), e);
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ThrottleProvisioningException.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ThrottleProvisioningException.java
new file mode 100644
index 00000000000..c41e5c94fee
--- /dev/null
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ThrottleProvisioningException.java
@@ -0,0 +1,16 @@
+// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.provision.provisioning;
+
+import com.yahoo.config.provision.TransientException;
+
+/**
+ * Thrown by {@link HostProvisioner} to indicate that (de)provisioning of a host has
+ * failed due request being throttled by the cloud provider.
+ *
+ * @author freva
+ */
+public class ThrottleProvisioningException extends TransientException {
+ public ThrottleProvisioningException(String message) {
+ super(message);
+ }
+}