summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2022-10-04 13:58:51 +0200
committerGitHub <noreply@github.com>2022-10-04 13:58:51 +0200
commit69069193606d6640829ff37d29a641a4e88244c3 (patch)
tree31f09b0090146b6cdf6ccf9650699735c17f3454 /node-repository
parentaf93aef1cea65450f1ba87a4fb40f2b48c47bf8c (diff)
parent5bac19e65472d0e1fdda602a2046bbaec6fe8ae7 (diff)
Merge pull request #24299 from vespa-engine/mpolden/rebuild-improvements
Rebuild improvements
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java7
1 files changed, 7 insertions, 0 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java
index 5f43d80b87a..822ed338b56 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java
@@ -158,10 +158,17 @@ public class DynamicProvisioningMaintainer extends NodeRepositoryMaintainer {
for (var host : softRebuildingHosts) {
Optional<NodeMutex> optionalMutex = nodeRepository().nodes().lockAndGet(host, Optional.of(Duration.ofSeconds(10)));
try (NodeMutex mutex = optionalMutex.get()) {
+ // Re-check flag while holding lock
+ host = mutex.node();
+ if (!host.status().wantToRebuild()) {
+ continue;
+ }
Node updatedNode = hostProvisioner.replaceRootDisk(host);
if (!updatedNode.status().wantToRebuild()) {
nodeRepository().nodes().write(updatedNode, mutex);
}
+ } catch (RuntimeException e) {
+ log.log(Level.WARNING, "Failed to rebuild " + host.hostname() + ": " + Exceptions.toMessageString(e) + ", will retry in " + interval());
}
}
}