From fd5012f00f242d2611a9dd9b5dea2a2d6d982ed5 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Tue, 19 Nov 2019 15:35:39 +0100 Subject: Rely on markWantoToRetire to re-read node --- .../yahoo/vespa/hosted/provision/maintenance/Rebalancer.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'node-repository') diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Rebalancer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Rebalancer.java index 3b8a4694e4b..7160edb96f4 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Rebalancer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Rebalancer.java @@ -115,10 +115,9 @@ public class Rebalancer extends Maintainer { } /** Returns true only if this operation changes the state of the wantToRetire flag */ - private boolean markWantToRetire(Optional node, boolean wantToRetire) { - if (node.isEmpty()) return false; - try (Mutex lock = nodeRepository().lock(node.get())) { - Optional nodeToMove = nodeRepository().getNode(node.get().hostname()); + private boolean markWantToRetire(Node node, boolean wantToRetire) { + try (Mutex lock = nodeRepository().lock(node)) { + Optional nodeToMove = nodeRepository().getNode(node.hostname()); if (nodeToMove.isEmpty()) return false; if (nodeToMove.get().state() != Node.State.active) return false; @@ -140,7 +139,7 @@ public class Rebalancer extends Maintainer { try (MaintenanceDeployment deployment = new MaintenanceDeployment(application, deployer, nodeRepository())) { if ( ! deployment.isValid()) return false; - boolean couldMarkRetiredNow = markWantToRetire(Optional.of(move.node), true); + boolean couldMarkRetiredNow = markWantToRetire(move.node, true); if ( ! couldMarkRetiredNow) return false; Optional expectedNewNode = Optional.empty(); @@ -158,7 +157,7 @@ public class Rebalancer extends Maintainer { return true; } finally { - markWantToRetire(nodeRepository().getNode(move.node.hostname()), false); // Necessary if this failed, no-op otherwise + markWantToRetire(move.node, false); // Necessary if this failed, no-op otherwise if (expectedNewNode.isPresent()) { // Immediately clean up if we reserved the node but could not activate Optional reservedNewNode = nodeRepository().getNode(expectedNewNode.get().hostname(), Node.State.reserved); reservedNewNode.ifPresent(reserved -> nodeRepository().setDirty(reserved, Agent.system, "Expired by Rebalancer")); -- cgit v1.2.3