diff options
author | Valerij Fredriksen <valerijf@yahooinc.com> | 2023-06-21 14:40:03 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@yahooinc.com> | 2023-06-21 14:46:28 +0200 |
commit | 7bff70a7cf3def1ff089ee448c95ce3151e59fb9 (patch) | |
tree | 289f6885e1a377f2e9493ff7196ad087f5029b9c /node-repository | |
parent | bfcbaf4deea360bb073b7562b2e3c6bd26378f10 (diff) |
Read nodes with unallocated lock
Diffstat (limited to 'node-repository')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostResumeProvisioner.java | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostResumeProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostResumeProvisioner.java index 26b83b37b9c..07d92ae3eeb 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostResumeProvisioner.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostResumeProvisioner.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.hosted.provision.maintenance; import com.yahoo.config.provision.NodeType; import com.yahoo.jdisc.Metric; +import com.yahoo.transaction.Mutex; import com.yahoo.vespa.hosted.provision.Node; import com.yahoo.vespa.hosted.provision.NodeList; import com.yahoo.vespa.hosted.provision.NodeRepository; @@ -37,7 +38,14 @@ public class HostResumeProvisioner extends NodeRepositoryMaintainer { @Override protected double maintain() { - NodeList allNodes = nodeRepository().nodes().list(); + NodeList allNodes; + // Host and child nodes are written in separate transactions, but both are written while holding the + // unallocated lock. Hold the unallocated lock while reading nodes to ensure we get all the children + // of newly provisioned hosts. + try (Mutex ignored = nodeRepository().nodes().lockUnallocated()) { + allNodes = nodeRepository().nodes().list(); + } + NodeList hosts = allNodes.state(Node.State.provisioned).nodeType(NodeType.host, NodeType.confighost, NodeType.controllerhost); int failures = 0; for (Node host : hosts) { |