diff options
author | Martin Polden <mpolden@mpolden.no> | 2022-10-04 13:58:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-04 13:58:51 +0200 |
commit | 69069193606d6640829ff37d29a641a4e88244c3 (patch) | |
tree | 31f09b0090146b6cdf6ccf9650699735c17f3454 /node-repository | |
parent | af93aef1cea65450f1ba87a4fb40f2b48c47bf8c (diff) | |
parent | 5bac19e65472d0e1fdda602a2046bbaec6fe8ae7 (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.java | 7 |
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()); } } } |