summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@vespa.ai>2024-02-13 09:31:32 +0100
committerValerij Fredriksen <valerijf@vespa.ai>2024-02-13 09:31:32 +0100
commit47d6a83c73f8d1698bdc76aca4f02557a2b64187 (patch)
tree0093dfb9a8c86637799a674654b14087f573922b
parent379ef849bc37c1b0509bb28d4c9162557bdb5ffd (diff)
Return whether deprovisioning has completed
-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/HostProvisioner.java4
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java3
3 files changed, 7 insertions, 4 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 0a33252303a..4026a294111 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
@@ -46,8 +46,8 @@ public class HostDeprovisioner extends NodeRepositoryMaintainer {
// holding it over longer periods
// * We are about to remove these hosts anyway, so only reason we'd want to hold the lock is
// if we want to support aborting deprovision if operator manually intervenes
- hostProvisioner.deprovision(host);
- nodeRepository().nodes().removeRecursively(host, true);
+ if (hostProvisioner.deprovision(host))
+ nodeRepository().nodes().removeRecursively(host, true);
} 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/HostProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostProvisioner.java
index 4214f543c60..02b40284548 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostProvisioner.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostProvisioner.java
@@ -76,8 +76,10 @@ public interface HostProvisioner {
* Therefore, this method should probably only be called for hosts that have no children.
*
* @param host host to deprovision.
+ * @return true if the was successfully deprovisioned, false if the deprovisioning is still in progress. This method
+ * should be called again later until it returns true.
*/
- void deprovision(Node host);
+ boolean deprovision(Node host);
/** Replace the root (OS) disk of hosts. Implementations of this are expected to be idempotent.
*
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java
index 73985075319..6a48323cea4 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java
@@ -119,10 +119,11 @@ public class MockHostProvisioner implements HostProvisioner {
}
@Override
- public void deprovision(Node host) {
+ public boolean deprovision(Node host) {
if (behaviour(Behaviour.failDeprovisioning)) throw new FatalProvisioningException("Failed to deprovision node");
provisionedHosts.removeIf(provisionedHost -> provisionedHost.hostHostname().equals(host.hostname()));
deprovisionedHosts++;
+ return true;
}
@Override