summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHÃ¥kon Hallingstad <hakon.hallingstad@gmail.com>2024-02-13 10:18:22 +0100
committerGitHub <noreply@github.com>2024-02-13 10:18:22 +0100
commitfce871062ca09cd433eceb3d58b615350fe5afc3 (patch)
tree38b6137be5909ca466a593b983e0c9ae7036972c
parent2ce5384ed3b703047714ec42c57dc943fbc49fa7 (diff)
parent47d6a83c73f8d1698bdc76aca4f02557a2b64187 (diff)
Merge pull request #30252 from vespa-engine/freva/signal-deprovision
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