diff options
author | Martin Polden <mpolden@mpolden.no> | 2022-10-04 13:28:38 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2022-10-04 13:29:58 +0200 |
commit | 5bac19e65472d0e1fdda602a2046bbaec6fe8ae7 (patch) | |
tree | ebd59d23e57d99073e024dd96c267ca07fdcb5d3 /node-repository | |
parent | d2710033f002eb41b6efb781a5f83c852fa9f97d (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.java | 5 |
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); |