aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2023-04-10 13:03:27 +0200
committerHarald Musum <musum@yahooinc.com>2023-04-10 13:03:27 +0200
commit1e54445b9fcfc31cfdbd421575f7d49fd51e1c56 (patch)
tree3bb81761d11c7fcaa3001d20f0c2b6ecb1bfe706
parent05b4c5f5b2192657f6c1ecd29e04593abfa4ea6f (diff)
Restore isControlledShutdown and simplify tests a bit
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateChangeHandler.java12
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeStateChangeCheckerTest.java27
2 files changed, 21 insertions, 18 deletions
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateChangeHandler.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateChangeHandler.java
index a9325788cb6..28149477e36 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateChangeHandler.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateChangeHandler.java
@@ -9,7 +9,7 @@ import com.yahoo.vdslib.state.NodeType;
import com.yahoo.vdslib.state.State;
import com.yahoo.vespa.clustercontroller.core.database.DatabaseHandler;
import com.yahoo.vespa.clustercontroller.core.listeners.NodeListener;
-
+import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
@@ -355,10 +355,12 @@ public class StateChangeHandler {
return false;
}
- private boolean isNotControlledShutdown(NodeState state) {
- return (state.getState() != STOPPING
- || (!state.getDescription().contains("Received signal 15 (SIGTERM - Termination signal)")
- && !state.getDescription().contains("controlled shutdown")));
+ private boolean isNotControlledShutdown(NodeState state) { return ! isControlledShutdown(state); }
+
+ private boolean isControlledShutdown(NodeState state) {
+ return state.getState() == State.STOPPING
+ && List.of("Received signal 15 (SIGTERM - Termination signal)", "controlled shutdown")
+ .contains(state.getDescription());
}
/**
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeStateChangeCheckerTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeStateChangeCheckerTest.java
index 58f9b563288..0a3d3bde937 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeStateChangeCheckerTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeStateChangeCheckerTest.java
@@ -58,7 +58,10 @@ public class NodeStateChangeCheckerTest {
}
private static ClusterState defaultAllUpClusterState(int nodeCount) {
- return clusterState(String.format("version:%d distributor:" + nodeCount + " storage:" + nodeCount, currentClusterStateVersion));
+ return clusterState(String.format("version:%d distributor:%d storage:%d",
+ currentClusterStateVersion,
+ nodeCount ,
+ nodeCount));
}
private NodeStateChangeChecker createChangeChecker(ContentCluster cluster) {
@@ -263,7 +266,7 @@ public class NodeStateChangeCheckerTest {
void testSafeMaintenanceDisallowedWhenOtherDistributorInFlatClusterIsSuspended() {
// Nodes 0-3, distributor 0 being down with "Orchestrator" description.
ContentCluster cluster = createCluster(4);
- setDistributorNodeWantedState(cluster, 0, new NodeState(DISTRIBUTOR, DOWN), "Orchestrator");
+ setDistributorNodeWantedState(cluster, 0, DOWN, "Orchestrator");
var nodeStateChangeChecker = createChangeChecker(cluster);
ClusterState clusterStateWith0InMaintenance = clusterState(String.format(
"version:%d distributor:4 .0.s:d storage:4",
@@ -283,7 +286,7 @@ public class NodeStateChangeCheckerTest {
// Nodes 0-3, distributor 0 being in maintenance with "Orchestrator" description.
// 2 groups: nodes 0-1 is group 0, 2-3 is group 1.
ContentCluster cluster = createCluster(4, 2);
- setDistributorNodeWantedState(cluster, 0, new NodeState(DISTRIBUTOR, DOWN), "Orchestrator");
+ setDistributorNodeWantedState(cluster, 0, DOWN, "Orchestrator");
var nodeStateChangeChecker = new NodeStateChangeChecker(cluster, false);
ClusterState clusterStateWith0InMaintenance = clusterState(String.format(
"version:%d distributor:4 .0.s:d storage:4",
@@ -315,7 +318,7 @@ public class NodeStateChangeCheckerTest {
// Nodes 0-3, storage node 0 being in maintenance with "Orchestrator" description.
// 2 groups: nodes 0-1 is group 0, 2-3 is group 1.
ContentCluster cluster = createCluster(4, 2);
- setStorageNodeWantedState(cluster, 0, new NodeState(STORAGE, MAINTENANCE), "Orchestrator");
+ setStorageNodeWantedState(cluster, 0, MAINTENANCE, "Orchestrator");
var nodeStateChangeChecker = new NodeStateChangeChecker(cluster, false);
ClusterState clusterStateWith0InMaintenance = clusterState(String.format(
"version:%d distributor:4 storage:4 .0.s:m",
@@ -863,19 +866,17 @@ public class NodeStateChangeCheckerTest {
}
private void setStorageNodeWantedStateToMaintenance(ContentCluster cluster, int nodeIndex) {
- setStorageNodeWantedStateToMaintenance(cluster, nodeIndex, "Orchestrator");
+ cluster.clusterInfo().getStorageNodeInfo(nodeIndex).setWantedState(MAINTENANCE_NODE_STATE.setDescription("Orchestrator"));
}
- private void setStorageNodeWantedStateToMaintenance(ContentCluster cluster, int nodeIndex, String description) {
- cluster.clusterInfo().getStorageNodeInfo(nodeIndex).setWantedState(MAINTENANCE_NODE_STATE.setDescription(description));
+ private void setStorageNodeWantedState(ContentCluster cluster, int nodeIndex, State state, String description) {
+ NodeState nodeState = new NodeState(STORAGE, state);
+ cluster.clusterInfo().getStorageNodeInfo(nodeIndex).setWantedState(nodeState.setDescription(description));
}
- private void setStorageNodeWantedState(ContentCluster cluster, int nodeIndex, NodeState state, String description) {
- cluster.clusterInfo().getStorageNodeInfo(nodeIndex).setWantedState(state.setDescription(description));
- }
-
- private void setDistributorNodeWantedState(ContentCluster cluster, int nodeIndex, NodeState state, String description) {
- cluster.clusterInfo().getDistributorNodeInfo(nodeIndex).setWantedState(state.setDescription(description));
+ private void setDistributorNodeWantedState(ContentCluster cluster, int nodeIndex, State state, String description) {
+ NodeState nodeState = new NodeState(DISTRIBUTOR, state);
+ cluster.clusterInfo().getDistributorNodeInfo(nodeIndex).setWantedState(nodeState.setDescription(description));
}
}