summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@verizonmedia.com>2021-01-08 12:06:08 +0100
committerHåkon Hallingstad <hakon@verizonmedia.com>2021-01-08 12:06:08 +0100
commita791dbc4d9fb43b98c3667f0b30fafe238bc56b8 (patch)
tree9eea611666d2173f7f0e9fdcfd0374ed6eb50fb5 /node-repository
parentd8fd5449d4e641dcea02368db8cf67253532981c (diff)
Rename to lockAndGet
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java20
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringUpgrader.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Activator.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java4
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDeployer.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InPlaceResizeProvisionTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java4
9 files changed, 20 insertions, 20 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
index 47f3b73024c..899e8c12c06 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
@@ -659,7 +659,7 @@ public class NodeRepository extends AbstractComponent {
illegal("Could not set " + node + " active. It has no allocation.");
// TODO: Work out a safe lock acquisition strategy for moves, e.g. migrate to lockNode.
- try (Mutex lock = lockOnly(node)) {
+ try (Mutex lock = lock(node)) {
if (toState == State.active) {
for (Node currentActive : getNodes(node.allocation().get().owner(), State.active)) {
if (node.allocation().get().membership().cluster().equals(currentActive.allocation().get().membership().cluster())
@@ -925,11 +925,11 @@ public class NodeRepository extends AbstractComponent {
public Mutex lockUnallocated() { return db.lockInactive(); }
/** Returns a lock, and an up to date node fetched under an appropriate lock, if it exists. */
- public Optional<NodeMutex> lockNode(Node node) {
+ public Optional<NodeMutex> lockAndGet(Node node) {
Node staleNode = node;
for (int i = 0; i < 4; ++i) {
- Mutex lock = lockOnly(staleNode);
+ Mutex lock = lock(staleNode);
Optional<Mutex> lockToClose = Optional.of(lock);
try {
Optional<Node> freshNode = getNode(staleNode.hostname(), staleNode.state());
@@ -956,21 +956,21 @@ public class NodeRepository extends AbstractComponent {
}
/** Returns a lock, and an up to date node fetched under an appropriate lock, if it exists. */
- public Optional<NodeMutex> lockNode(String hostname) {
- return getNode(hostname).flatMap(this::lockNode);
+ public Optional<NodeMutex> lockAndGet(String hostname) {
+ return getNode(hostname).flatMap(this::lockAndGet);
}
/** Returns a lock, and an up to date node fetched under an appropriate lock. */
- public NodeMutex lockRequiredNode(Node node) {
- return lockNode(node).orElseThrow(() -> new IllegalArgumentException("No such node: " + node.hostname()));
+ public NodeMutex lockAndGetRequired(Node node) {
+ return lockAndGet(node).orElseThrow(() -> new IllegalArgumentException("No such node: " + node.hostname()));
}
/** Returns a lock, and an up to date node fetched under an appropriate lock. */
- public NodeMutex lockRequiredNode(String hostname) {
- return lockNode(hostname).orElseThrow(() -> new IllegalArgumentException("No such node: " + hostname));
+ public NodeMutex lockAndGetRequired(String hostname) {
+ return lockAndGet(hostname).orElseThrow(() -> new IllegalArgumentException("No such node: " + hostname));
}
- private Mutex lockOnly(Node node) {
+ private Mutex lock(Node node) {
return node.allocation().isPresent() ? lock(node.allocation().get().owner()) : lockUnallocated();
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java
index b082b696ad4..66ddf7f9ffe 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java
@@ -193,7 +193,7 @@ class MaintenanceDeployment implements Closeable {
/** Returns true only if this operation changes the state of the wantToRetire flag */
private boolean markWantToRetire(Node node, boolean wantToRetire, Agent agent, NodeRepository nodeRepository) {
- Optional<NodeMutex> nodeMutex = nodeRepository.lockNode(node);
+ Optional<NodeMutex> nodeMutex = nodeRepository.lockAndGet(node);
if (nodeMutex.isEmpty()) return false;
try (var nodeLock = nodeMutex.get()) {
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringUpgrader.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringUpgrader.java
index c8f4fc14dea..68ac96fdf1d 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringUpgrader.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringUpgrader.java
@@ -62,7 +62,7 @@ public class RetiringUpgrader implements Upgrader {
/** Retire and deprovision given host and its children */
private void retire(Node host, Version target, Instant now, NodeList allNodes) {
if (!host.type().isHost()) throw new IllegalArgumentException("Cannot retire non-host " + host);
- Optional<NodeMutex> nodeMutex = nodeRepository.lockNode(host);
+ Optional<NodeMutex> nodeMutex = nodeRepository.lockAndGet(host);
if (nodeMutex.isEmpty()) return;
try (var lock = nodeMutex.get()) {
host = lock.node();
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Activator.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Activator.java
index 7d5d53c882e..2ec3912181b 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Activator.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Activator.java
@@ -131,7 +131,7 @@ class Activator {
if (parentNode.get().reservedTo().isEmpty()) continue;
// Above is an optimization to avoid unnecessary locking - now repeat all conditions under lock
- Optional<NodeMutex> parent = nodeRepository.lockNode(node.parentHostname().get());
+ Optional<NodeMutex> parent = nodeRepository.lockAndGet(node.parentHostname().get());
if (parent.isEmpty()) continue;
try (var lock = parent.get()) {
if (lock.node().reservedTo().isEmpty()) continue;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java
index 9f8ba7d84a3..b5454d97cfd 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java
@@ -160,7 +160,7 @@ public class NodesV2ApiHandler extends LoggingRequestHandler {
private HttpResponse handlePATCH(HttpRequest request) {
String path = request.getUri().getPath();
if (path.startsWith("/nodes/v2/node/")) {
- try (NodeMutex lock = nodeRepository.lockRequiredNode(nodeFromRequest(request))) {
+ try (NodeMutex lock = nodeRepository.lockAndGetRequired(nodeFromRequest(request))) {
var patchedNodes = new NodePatcher(nodeFlavors, request.getData(), lock.node(), () -> nodeRepository.list(lock),
nodeRepository.clock()).apply();
nodeRepository.write(patchedNodes, lock);
@@ -209,7 +209,7 @@ public class NodesV2ApiHandler extends LoggingRequestHandler {
}
private HttpResponse deleteNode(String hostname) {
- Optional<NodeMutex> nodeMutex = nodeRepository.lockNode(hostname);
+ Optional<NodeMutex> nodeMutex = nodeRepository.lockAndGet(hostname);
if (nodeMutex.isEmpty()) throw new NotFoundException("No node with hostname '" + hostname + "'");
try (var lock = nodeMutex.get()) {
if (lock.node().state() == Node.State.deprovisioned) {
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDeployer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDeployer.java
index 7cc170ce92b..9461cb00c5f 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDeployer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDeployer.java
@@ -196,7 +196,7 @@ public class MockDeployer implements Deployer {
lastDeployTimes.put(applicationId, clock.instant());
for (Node node : nodeRepository.list().owner(applicationId).state(Node.State.active).wantToRetire().asList()) {
- try (NodeMutex lock = nodeRepository.lockRequiredNode(node)) {
+ try (NodeMutex lock = nodeRepository.lockAndGetRequired(node)) {
nodeRepository.write(lock.node().retire(nodeRepository.clock().instant()), lock);
}
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java
index 668ff640304..bcf53a07490 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java
@@ -182,7 +182,7 @@ public class NodeRepositoryTest {
assertFalse(tester.nodeRepository().getNode("host1").get().history().hasEventAfter(History.Event.Type.deprovisioned, testStart));
// Set host 1 properties and deprovision it
- try (var lock = tester.nodeRepository().lockRequiredNode("host1")) {
+ try (var lock = tester.nodeRepository().lockAndGetRequired("host1")) {
Node host1 = lock.node().withWantToRetire(true, true, Agent.system, tester.nodeRepository().clock().instant());
host1 = host1.withFirmwareVerifiedAt(tester.clock().instant());
host1 = host1.with(host1.status().withIncreasedFailCount());
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InPlaceResizeProvisionTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InPlaceResizeProvisionTest.java
index f1a9ae7eae0..62b153c7e12 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InPlaceResizeProvisionTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InPlaceResizeProvisionTest.java
@@ -206,7 +206,7 @@ public class InPlaceResizeProvisionTest {
// ... same with setting a node to want to retire
Node nodeToWantoToRetire = listCluster(content1).not().retired().asList().get(0);
- try (NodeMutex lock = tester.nodeRepository().lockRequiredNode(nodeToWantoToRetire)) {
+ try (NodeMutex lock = tester.nodeRepository().lockAndGetRequired(nodeToWantoToRetire)) {
tester.nodeRepository().write(lock.node().withWantToRetire(true, Agent.system,
tester.clock().instant()), lock);
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
index 4adeab43842..ebd856e96a0 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
@@ -152,7 +152,7 @@ public class ProvisioningTester {
public List<Node> patchNodes(List<Node> nodes, UnaryOperator<Node> patcher) {
List<Node> updated = new ArrayList<>();
for (var node : nodes) {
- try (var lock = nodeRepository.lockRequiredNode(node)) {
+ try (var lock = nodeRepository.lockAndGetRequired(node)) {
node = patcher.apply(lock.node());
nodeRepository.write(node, lock);
updated.add(node);
@@ -186,7 +186,7 @@ public class ProvisioningTester {
// Add ip addresses and activate parent host if necessary
for (HostSpec prepared : preparedNodes) {
- try (var lock = nodeRepository.lockRequiredNode(prepared.hostname())) {
+ try (var lock = nodeRepository.lockAndGetRequired(prepared.hostname())) {
Node node = lock.node();
if (node.ipConfig().primary().isEmpty()) {
node = node.with(new IP.Config(Set.of("::" + 0 + ":0"), Set.of()));