summaryrefslogtreecommitdiffstats
path: root/clustercontroller-core
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@oath.com>2017-10-20 11:15:55 +0200
committerHåkon Hallingstad <hakon@oath.com>2017-10-20 11:15:55 +0200
commit47d9d31318d13869603660ac76a6dedf4f451943 (patch)
treea14c7423f2c4aab4096903e56dd3c0612fd74afc /clustercontroller-core
parentd82d7c04128c23bc6c3ec5b8e7e822315055ca29 (diff)
Ignore current wanted state when safely setting state to up
Diffstat (limited to 'clustercontroller-core')
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeStateChangeChecker.java8
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeStateChangeCheckerTest.java7
2 files changed, 5 insertions, 10 deletions
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeStateChangeChecker.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeStateChangeChecker.java
index 2125a18f0fe..c31a4976827 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeStateChangeChecker.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeStateChangeChecker.java
@@ -115,7 +115,7 @@ public class NodeStateChangeChecker {
switch (newState.getState()) {
case UP:
- return canSetStateUp(nodeInfo, oldState.getState());
+ return canSetStateUp(nodeInfo);
case MAINTENANCE:
return canSetStateMaintenanceTemporarily(node, clusterState);
case DOWN:
@@ -166,11 +166,7 @@ public class NodeStateChangeChecker {
return Result.allowSettingOfWantedState();
}
- private Result canSetStateUp(NodeInfo nodeInfo, State oldState) {
- if (oldState != State.MAINTENANCE) {
- return Result.createDisallowed("Refusing to set wanted state to up when it is currently in " + oldState);
- }
-
+ private Result canSetStateUp(NodeInfo nodeInfo) {
if (nodeInfo.getReportedState().getState() != State.UP) {
return Result.createDisallowed("Refuse to set wanted state to UP, " +
"since the reported state is not UP (" +
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 42c5ffa7dac..fc466664e56 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
@@ -211,17 +211,16 @@ public class NodeStateChangeCheckerTest {
}
@Test
- public void testCannotSetUpIfUnknownOldStateAndReportedIsDown() {
+ public void testCanSetUpEvenIfOldWantedStateIsDown() {
ContentCluster cluster = createCluster(createNodes(4));
NodeStateChangeChecker nodeStateChangeChecker = createChangeChecker(cluster);
- // Not setting nodes up -> all are down
+ setAllNodesUp(cluster, HostInfo.createHostInfo(createDistributorHostInfo(4, 3, 6)));
NodeStateChangeChecker.Result result = nodeStateChangeChecker.evaluateTransition(
nodeStorage, defaultAllUpClusterState(), SetUnitStateRequest.Condition.SAFE,
new NodeState(NodeType.STORAGE, State.DOWN), UP_NODE_STATE);
- assertFalse(result.settingWantedStateIsAllowed());
+ assertTrue(result.settingWantedStateIsAllowed());
assertFalse(result.wantedStateAlreadySet());
- assertThat(result.getReason(), is("Refusing to set wanted state to up when it is currently in Down"));
}
@Test