summaryrefslogtreecommitdiffstats
path: root/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java
diff options
context:
space:
mode:
Diffstat (limited to 'node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java23
1 files changed, 8 insertions, 15 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java
index 28cf15f7845..50933951a5f 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java
@@ -17,6 +17,7 @@ import com.yahoo.vespa.hosted.provision.NoSuchNodeException;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.NodeMutex;
+import com.yahoo.vespa.hosted.provision.applications.Applications;
import com.yahoo.vespa.hosted.provision.maintenance.NodeFailer;
import com.yahoo.vespa.hosted.provision.node.filter.NodeFilter;
import com.yahoo.vespa.hosted.provision.persistence.CuratorDatabaseClient;
@@ -61,12 +62,14 @@ public class Nodes {
private final Zone zone;
private final Clock clock;
private final Orchestrator orchestrator;
+ private final Applications applications;
- public Nodes(CuratorDatabaseClient db, Zone zone, Clock clock, Orchestrator orchestrator) {
+ public Nodes(CuratorDatabaseClient db, Zone zone, Clock clock, Orchestrator orchestrator, Applications applications) {
this.zone = zone;
this.clock = clock;
this.db = db;
this.orchestrator = orchestrator;
+ this.applications = applications;
}
/** Read and write all nodes to make sure they are stored in the latest version of the serialized format */
@@ -229,7 +232,7 @@ public class Nodes {
* @param reusable move the node directly to {@link Node.State#dirty} after removal
*/
public void setRemovable(ApplicationId application, List<Node> nodes, boolean reusable) {
- try (Mutex lock = lock(application)) {
+ try (Mutex lock = applications.lock(application)) {
List<Node> removableNodes = nodes.stream()
.map(node -> node.with(node.allocation().get().removable(true, reusable)))
.toList();
@@ -723,7 +726,7 @@ public class Nodes {
}
}
for (Map.Entry<ApplicationId, List<Node>> applicationNodes : allocatedNodes.entrySet()) {
- try (Mutex lock = lock(applicationNodes.getKey())) {
+ try (Mutex lock = applications.lock(applicationNodes.getKey())) {
for (Node node : applicationNodes.getValue()) {
Optional<Node> currentNode = db.readNode(node.hostname()); // Re-read while holding lock
if (currentNode.isEmpty()) continue;
@@ -759,17 +762,6 @@ public class Nodes {
}
}
- /** Create a lock which provides exclusive rights to making changes to the given application */
- // TODO: Move to Applications
- public Mutex lock(ApplicationId application) {
- return db.lock(application);
- }
-
- /** Create a lock with a timeout which provides exclusive rights to making changes to the given application */
- public Mutex lock(ApplicationId application, Duration timeout) {
- return db.lock(application, timeout);
- }
-
/** Create a lock which provides exclusive rights to modifying unallocated nodes */
public Mutex lockUnallocated() { return db.lockInactive(); }
@@ -852,7 +844,8 @@ public class Nodes {
case proxyhost -> Optional.of(InfrastructureApplication.PROXY_HOST.id());
};
if (application.isPresent())
- return timeout.map(t -> lock(application.get(), t)).orElseGet(() -> lock(application.get()));
+ return timeout.map(t -> applications.lock(application.get(), t))
+ .orElseGet(() -> applications.lock(application.get()));
else
return timeout.map(db::lockInactive).orElseGet(db::lockInactive);
}