summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2022-10-04 13:28:38 +0200
committerMartin Polden <mpolden@mpolden.no>2022-10-04 13:29:58 +0200
commit5bac19e65472d0e1fdda602a2046bbaec6fe8ae7 (patch)
treeebd59d23e57d99073e024dd96c267ca07fdcb5d3 /node-repository
parentd2710033f002eb41b6efb781a5f83c852fa9f97d (diff)
Re-check flag while holding lock
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java5
1 files changed, 5 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 b193ec6620d..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,6 +158,11 @@ 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);