From 6bce84a6c373670fc923624096524f9892f9b165 Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Mon, 5 Sep 2022 09:39:27 +0200 Subject: Remove support for 'setsystemstate2' RPC method in cluster controller --- .../core/DistributionBitCountTest.java | 2 +- .../vespa/clustercontroller/core/DummyVdsNode.java | 125 ++++----------------- .../core/DummyVdsNodeOptions.java | 18 --- .../core/FleetControllerTest.java | 26 ++--- .../core/GroupAutoTakedownLiveConfigTest.java | 2 +- .../NodeSlobrokConfigurationMembershipTest.java | 4 +- .../clustercontroller/core/RpcServerTest.java | 16 +-- .../core/RpcVersionAutoDowngradeTest.java | 46 -------- .../clustercontroller/core/StateChangeTest.java | 4 +- .../clustercontroller/core/StateGatherTest.java | 5 +- .../core/rpc/RPCCommunicatorTest.java | 27 ----- .../core/testutils/WaitCondition.java | 2 +- 12 files changed, 49 insertions(+), 228 deletions(-) delete mode 100644 clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNodeOptions.java delete mode 100644 clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcVersionAutoDowngradeTest.java (limited to 'clustercontroller-core/src/test/java/com/yahoo/vespa') diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DistributionBitCountTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DistributionBitCountTest.java index 0f2e2e23492..f7e376c419d 100644 --- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DistributionBitCountTest.java +++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DistributionBitCountTest.java @@ -26,7 +26,7 @@ public class DistributionBitCountTest extends FleetControllerTest { builder.setDistributionBits(17); setUpFleetController(false, builder); startingTest(testName); - List nodes = setUpVdsNodes(false, new DummyVdsNodeOptions(), true, configuredNodes); + List nodes = setUpVdsNodes(false, true, configuredNodes); for (DummyVdsNode node : nodes) { node.setNodeState(new NodeState(node.getType(), State.UP).setMinUsedBits(20)); node.connect(); diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNode.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNode.java index fbaf41fdd47..5981c2a1cf6 100644 --- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNode.java +++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNode.java @@ -33,8 +33,6 @@ import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; -import static ai.vespa.validation.Validation.requireAtLeast; - /** * * Used to fake a node in VDS, such that we can test the fleetcontroller without dummy interface for talking to @@ -53,8 +51,6 @@ public class DummyVdsNode { private Supervisor supervisor; private Acceptor acceptor; private Register register; - private final int stateCommunicationVersion; - private boolean negotiatedHandle = false; private final Timer timer; private boolean failSetSystemStateRequests = false; private boolean resetTimestampOnReconnect = false; @@ -120,7 +116,7 @@ public class DummyVdsNode { } }; - public DummyVdsNode(Timer timer, DummyVdsNodeOptions options, String[] slobrokConnectionSpecs, String clusterName, + public DummyVdsNode(Timer timer, String[] slobrokConnectionSpecs, String clusterName, NodeType nodeType, int index) throws Exception { this.timer = timer; this.slobrokConnectionSpecs = slobrokConnectionSpecs; @@ -128,7 +124,6 @@ public class DummyVdsNode { type = nodeType; this.index = index; this.nodeState = new NodeState(type, State.UP); - this.stateCommunicationVersion = requireAtLeast(options.stateCommunicationVersion, "state communication version cannot be less than 2", 2); messageResponder.start(); nodeState.setStartTimestamp(timer.getCurrentTimeInMillis() / 1000); } @@ -154,7 +149,6 @@ public class DummyVdsNode { slist.setup(slobrokConnectionSpecs); register = new Register(supervisor, slist, new Spec("localhost", acceptor.port()), new BackOff()); registerSlobrok(); - negotiatedHandle = false; return acceptor.port(); } @@ -197,8 +191,6 @@ public class DummyVdsNode { return new Node(type, index); } - public int getStateCommunicationVersion() { return stateCommunicationVersion; } - void waitForSystemStateVersion(int version, Duration timeout) { try { Instant endTime = Instant.now().plus(timeout); @@ -302,58 +294,32 @@ public class DummyVdsNode { m.returnDesc(0, "returnCode", "Returncode of request. Should be 0 = OK"); supervisor.addMethod(m); - m = new Method("setsystemstate", "s", "is", this::rpc_setSystemState); - m.methodDesc("Set system state of entire system"); - m.paramDesc(0, "systemState", "new systemstate"); - m.returnDesc(0, "returnCode", "Returncode of request. Should be 1 = OK"); - m.returnDesc(1, "returnMessage", "Textual error message if returncode is not ok."); + m = new Method("getnodestate3", "sii", "ss", this::rpc_getNodeState2); + m.methodDesc("Get nodeState of a node, answer when state changes from given state."); + m.paramDesc(0, "nodeStateIn", "The node state of the given node"); + m.paramDesc(1, "timeout", "Time timeout in milliseconds set by the state requester."); + m.returnDesc(0, "nodeStateOut", "The node state of the given node"); + m.returnDesc(1, "hostinfo", "Information on the host node is running on"); supervisor.addMethod(m); - if (stateCommunicationVersion > 0) { - m = new Method("getnodestate2", "si", "s", this::rpc_getNodeState2); - m.methodDesc("Get nodeState of a node, answer when state changes from given state."); - m.paramDesc(0, "nodeStateIn", "The node state of the given node"); - m.paramDesc(1, "timeout", "Time timeout in milliseconds set by the state requester."); - m.returnDesc(0, "nodeStateOut", "The node state of the given node"); - supervisor.addMethod(m); - - m = new Method("setsystemstate2", "s", "", this::rpc_setSystemState2); - m.methodDesc("Set system state of entire system"); - m.paramDesc(0, "systemState", "new systemstate"); - supervisor.addMethod(m); - - if (stateCommunicationVersion > 1) { - m = new Method("getnodestate3", "sii", "ss", this::rpc_getNodeState2); - m.methodDesc("Get nodeState of a node, answer when state changes from given state."); - m.paramDesc(0, "nodeStateIn", "The node state of the given node"); - m.paramDesc(1, "timeout", "Time timeout in milliseconds set by the state requester."); - m.returnDesc(0, "nodeStateOut", "The node state of the given node"); - m.returnDesc(1, "hostinfo", "Information on the host node is running on"); - supervisor.addMethod(m); - } - } - if (stateCommunicationVersion >= RPCCommunicator.SET_DISTRIBUTION_STATES_RPC_VERSION) { - m = new Method(RPCCommunicator.SET_DISTRIBUTION_STATES_RPC_METHOD_NAME, "bix", "", this::rpc_setDistributionStates); - m.methodDesc("Set distribution states for cluster and bucket spaces"); - m.paramDesc(0, "compressionType", "Compression type for payload"); - m.paramDesc(1, "uncompressedSize", "Uncompressed size of payload"); - m.paramDesc(2, "payload", "Slime format payload"); - supervisor.addMethod(m); - } - if (stateCommunicationVersion >= RPCCommunicator.ACTIVATE_CLUSTER_STATE_VERSION_RPC_VERSION) { - m = new Method(RPCCommunicator.ACTIVATE_CLUSTER_STATE_VERSION_RPC_METHOD_NAME, "i", "i", this::rpc_activateClusterStateVersion); - m.methodDesc("Activate a given cluster state version"); - m.paramDesc(0, "stateVersion", "Cluster state version to activate"); - m.returnDesc(0, "actualVersion", "Actual cluster state version on node"); - supervisor.addMethod(m); - } + m = new Method(RPCCommunicator.SET_DISTRIBUTION_STATES_RPC_METHOD_NAME, "bix", "", this::rpc_setDistributionStates); + m.methodDesc("Set distribution states for cluster and bucket spaces"); + m.paramDesc(0, "compressionType", "Compression type for payload"); + m.paramDesc(1, "uncompressedSize", "Uncompressed size of payload"); + m.paramDesc(2, "payload", "Slime format payload"); + supervisor.addMethod(m); + + m = new Method(RPCCommunicator.ACTIVATE_CLUSTER_STATE_VERSION_RPC_METHOD_NAME, "i", "i", this::rpc_activateClusterStateVersion); + m.methodDesc("Activate a given cluster state version"); + m.paramDesc(0, "stateVersion", "Cluster state version to activate"); + m.returnDesc(0, "actualVersion", "Actual cluster state version on node"); + supervisor.addMethod(m); } private void rpc_storageConnect(Request req) { synchronized(timer) { log.log(Level.FINEST, () -> "Dummy node " + this + " got old type handle connect message."); req.returnValues().add(new Int32Value(0)); - negotiatedHandle = true; } } @@ -437,56 +403,6 @@ public class DummyVdsNode { } } - private void rpc_setSystemState(Request req) { - try{ - if (shouldFailSetSystemStateRequests()) { - req.setError(ErrorCode.GENERAL_ERROR, "Dummy node configured to fail setSystemState() calls"); - return; - } - if (!negotiatedHandle) { - req.setError(75000, "Connection not bound to a handle"); - return; - } - ClusterState newState = new ClusterState(req.parameters().get(0).asString()); - synchronized(timer) { - updateStartTimestamps(newState); - clusterStateBundles.add(0, ClusterStateBundle.ofBaselineOnly(AnnotatedClusterState.withoutAnnotations(newState))); - timer.notifyAll(); - } - req.returnValues().add(new Int32Value(1)); - req.returnValues().add(new StringValue("OK")); - log.log(Level.FINE, () -> "Dummy node " + this + ": Got new system state (through old setsystemstate call) " + newState); - } catch (Exception e) { - log.log(Level.SEVERE, "Dummy node " + this + ": An error occurred when answering setsystemstate request: " + e.getMessage()); - e.printStackTrace(System.err); - req.returnValues().add(new Int32Value(ErrorCode.METHOD_FAILED)); - req.returnValues().add(new StringValue(e.getMessage())); - } - } - - private void rpc_setSystemState2(Request req) { - try{ - if (shouldFailSetSystemStateRequests()) { - req.setError(ErrorCode.GENERAL_ERROR, "Dummy node configured to fail setSystemState2() calls"); - return; - } - ClusterState newState = new ClusterState(req.parameters().get(0).asString()); - synchronized(timer) { - updateStartTimestamps(newState); - clusterStateBundles.add(0, ClusterStateBundle.ofBaselineOnly(AnnotatedClusterState.withoutAnnotations(newState))); - if (stateCommunicationVersion < RPCCommunicator.ACTIVATE_CLUSTER_STATE_VERSION_RPC_VERSION) { - activatedClusterStateVersion = newState.getVersion(); // Simulate node that does not know of activation - } - timer.notifyAll(); - } - log.log(Level.FINE, () -> "Dummy node " + this + ": Got new system state " + newState); - } catch (Exception e) { - log.log(Level.SEVERE, "Dummy node " + this + ": An error occurred when answering setsystemstate request: " + e.getMessage()); - e.printStackTrace(System.err); - req.setError(ErrorCode.METHOD_FAILED, e.getMessage()); - } - } - private void rpc_setDistributionStates(Request req) { try { if (shouldFailSetSystemStateRequests()) { @@ -497,9 +413,6 @@ public class DummyVdsNode { synchronized(timer) { updateStartTimestamps(stateBundle.getBaselineClusterState()); clusterStateBundles.add(0, stateBundle); - if (stateCommunicationVersion < RPCCommunicator.ACTIVATE_CLUSTER_STATE_VERSION_RPC_VERSION) { - activatedClusterStateVersion = stateBundle.getVersion(); // Simulate node that does not know of activation - } timer.notifyAll(); } log.log(Level.FINE, () -> "Dummy node " + this + ": Got new cluster state " + stateBundle); diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNodeOptions.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNodeOptions.java deleted file mode 100644 index d6b5e7fa5d2..00000000000 --- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNodeOptions.java +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.clustercontroller.core; - -import com.yahoo.vespa.clustercontroller.core.rpc.RPCCommunicator; - -/** - * Options for simulated content nodes that are registered in Slobrok and communicate - * over regular RPC. - */ -public class DummyVdsNodeOptions { - // Rpc method versions and which Vespa versions supports each version: - // 0 - 4.1 - // 1 - 4.2-5.0.10 - // 2 - 5.0.11+ - // 3 - 6.220+ - // 4 - 7.24+ - int stateCommunicationVersion = RPCCommunicator.ACTIVATE_CLUSTER_STATE_VERSION_RPC_VERSION; -} diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java index bf06474a3af..2a77b4c7636 100644 --- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java +++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java @@ -173,28 +173,28 @@ public abstract class FleetControllerTest implements Waiter { } protected void setUpVdsNodes(boolean useFakeTimer) throws Exception { - setUpVdsNodes(useFakeTimer, new DummyVdsNodeOptions(), false); + setUpVdsNodes(useFakeTimer, false); } - protected void setUpVdsNodes(boolean useFakeTimer, DummyVdsNodeOptions options, boolean startDisconnected) throws Exception { - setUpVdsNodes(useFakeTimer, options, startDisconnected, DEFAULT_NODE_COUNT); + protected void setUpVdsNodes(boolean useFakeTimer, boolean startDisconnected) throws Exception { + setUpVdsNodes(useFakeTimer, startDisconnected, DEFAULT_NODE_COUNT); } - protected void setUpVdsNodes(boolean useFakeTimer, DummyVdsNodeOptions options, boolean startDisconnected, int nodeCount) throws Exception { + protected void setUpVdsNodes(boolean useFakeTimer, boolean startDisconnected, int nodeCount) throws Exception { TreeSet nodeIndexes = new TreeSet<>(); for (int i = 0; i < nodeCount; ++i) nodeIndexes.add(this.nodes.size()/2 + i); // divide by 2 because there are 2 nodes (storage and distributor) per index - setUpVdsNodes(useFakeTimer, options, startDisconnected, nodeIndexes); + setUpVdsNodes(useFakeTimer, startDisconnected, nodeIndexes); } - protected void setUpVdsNodes(boolean useFakeTimer, DummyVdsNodeOptions nodeOptions, boolean startDisconnected, Set nodeIndexes) throws Exception { + protected void setUpVdsNodes(boolean useFakeTimer, boolean startDisconnected, Set nodeIndexes) throws Exception { for (int nodeIndex : nodeIndexes) { - nodes.add(createNode(useFakeTimer, nodeOptions, startDisconnected, DISTRIBUTOR, nodeIndex)); - nodes.add(createNode(useFakeTimer, nodeOptions, startDisconnected, STORAGE, nodeIndex)); + nodes.add(createNode(useFakeTimer, startDisconnected, DISTRIBUTOR, nodeIndex)); + nodes.add(createNode(useFakeTimer, startDisconnected, STORAGE, nodeIndex)); } } - private DummyVdsNode createNode(boolean useFakeTimer, DummyVdsNodeOptions nodeOptions, boolean startDisconnected, + private DummyVdsNode createNode(boolean useFakeTimer, boolean startDisconnected, NodeType nodeType, int nodeIndex) throws Exception { String[] connectionSpecs = getSlobrokConnectionSpecs(slobrok); - DummyVdsNode node = new DummyVdsNode(useFakeTimer ? timer : new RealTimer(), nodeOptions, connectionSpecs, + DummyVdsNode node = new DummyVdsNode(useFakeTimer ? timer : new RealTimer(), connectionSpecs, options.clusterName(), nodeType, nodeIndex); if ( ! startDisconnected) node.connect(); @@ -208,11 +208,11 @@ public abstract class FleetControllerTest implements Waiter { * As two dummy nodes are created for each configured node - one distributor and one storage node - * the returned list is twice as large as configuredNodes. */ - protected List setUpVdsNodes(boolean useFakeTimer, DummyVdsNodeOptions options, boolean startDisconnected, List configuredNodes) throws Exception { + protected List setUpVdsNodes(boolean useFakeTimer, boolean startDisconnected, List configuredNodes) throws Exception { nodes = new ArrayList<>(); for (ConfiguredNode configuredNode : configuredNodes) { - nodes.add(createNode(useFakeTimer, options, startDisconnected, DISTRIBUTOR, configuredNode.index())); - nodes.add(createNode(useFakeTimer, options, startDisconnected, STORAGE, configuredNode.index())); + nodes.add(createNode(useFakeTimer, startDisconnected, DISTRIBUTOR, configuredNode.index())); + nodes.add(createNode(useFakeTimer, startDisconnected, STORAGE, configuredNode.index())); } return nodes; } diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAutoTakedownLiveConfigTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAutoTakedownLiveConfigTest.java index 9a5be27da94..036d3edd2a8 100644 --- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAutoTakedownLiveConfigTest.java +++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAutoTakedownLiveConfigTest.java @@ -42,7 +42,7 @@ public class GroupAutoTakedownLiveConfigTest extends FleetControllerTest { private FleetControllerOptions setUp3x3ClusterWithMinNodeRatio(double minNodeRatio) throws Exception { FleetControllerOptions.Builder options = createOptions(DistributionBuilder.withGroups(3).eachWithNodeCount(3), minNodeRatio); setUpFleetController(true, options); - setUpVdsNodes(true, new DummyVdsNodeOptions(), false, 9); + setUpVdsNodes(true, false, 9); waitForState("version:\\d+ distributor:9 storage:9"); return options.build(); } diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeSlobrokConfigurationMembershipTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeSlobrokConfigurationMembershipTest.java index 9acaf46b144..a760adf3cf2 100644 --- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeSlobrokConfigurationMembershipTest.java +++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeSlobrokConfigurationMembershipTest.java @@ -24,7 +24,7 @@ public class NodeSlobrokConfigurationMembershipTest extends FleetControllerTest setUpFleetController(true, options); Set nodesWithStranger = new TreeSet<>(validIndices); nodesWithStranger.add(foreignNodeIndex); - setUpVdsNodes(true, new DummyVdsNodeOptions(), false, nodesWithStranger); + setUpVdsNodes(true, false, nodesWithStranger); return options.build(); } @@ -64,7 +64,7 @@ public class NodeSlobrokConfigurationMembershipTest extends FleetControllerTest Set configuredNodes = asConfiguredNodes(nodeIndices); FleetControllerOptions.Builder builder = optionsForConfiguredNodes(configuredNodes); options = setUpFleetController(true, builder); - setUpVdsNodes(true, new DummyVdsNodeOptions(), false, nodeIndices); + setUpVdsNodes(true, false, nodeIndices); waitForState("version:\\d+ distributor:4 storage:4"); diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcServerTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcServerTest.java index 63505bbd251..4b4cb348968 100644 --- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcServerTest.java +++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcServerTest.java @@ -263,7 +263,7 @@ public class RpcServerTest extends FleetControllerTest { .setMaxInitProgressTime(30000) .setStableStateTimePeriod(60000); setUpFleetController(true, builder); - setUpVdsNodes(true, new DummyVdsNodeOptions(), false, configuredNodes); + setUpVdsNodes(true, false, configuredNodes); waitForState("version:\\d+ distributor:5 storage:5 .4.s:r"); setWantedNodeState(State.DOWN, NodeType.DISTRIBUTOR, 2); @@ -297,7 +297,7 @@ public class RpcServerTest extends FleetControllerTest { .setMaxInitProgressTime(30000) .setStableStateTimePeriod(60000); setUpFleetController(true, builder); - setUpVdsNodes(true, new DummyVdsNodeOptions(), false, configuredNodes); + setUpVdsNodes(true, false, configuredNodes); waitForState("version:\\d+ distributor:5 storage:5"); } @@ -311,7 +311,7 @@ public class RpcServerTest extends FleetControllerTest { } { // Configuration change: Add 2 new nodes and retire the 5 existing ones - setUpVdsNodes(true, new DummyVdsNodeOptions(), false, 2); + setUpVdsNodes(true, false, 2); Set configuredNodes = new TreeSet<>(); for (int i = 0; i < 5; i++) configuredNodes.add(new ConfiguredNode(i, true)); @@ -379,7 +379,7 @@ public class RpcServerTest extends FleetControllerTest { .setStableStateTimePeriod(60000); options = builder.build(); setUpFleetController(true, builder); - setUpVdsNodes(true, new DummyVdsNodeOptions(), false, configuredNodes); + setUpVdsNodes(true, false, configuredNodes); waitForState("version:\\d+ distributor:5 storage:5"); } @@ -396,7 +396,7 @@ public class RpcServerTest extends FleetControllerTest { } { // Configuration change: Add 2 new nodes and retire the 5 existing ones - setUpVdsNodes(true, new DummyVdsNodeOptions(), false, 2); + setUpVdsNodes(true, false, 2); Set configuredNodes = new TreeSet<>(); for (int i = 0; i < 5; i++) configuredNodes.add(new ConfiguredNode(i, true)); @@ -453,7 +453,7 @@ public class RpcServerTest extends FleetControllerTest { FleetControllerOptions.Builder options = defaultOptions("mycluster", configuredNodes); //options.setStorageDistribution(new Distribution(getDistConfig(nodeIndexes))); setUpFleetController(true, options); - setUpVdsNodes(true, new DummyVdsNodeOptions(), false, nodeIndexes); + setUpVdsNodes(true, false, nodeIndexes); waitForState("version:\\d+ distributor:26 .0.s:d .1.s:d .2.s:d .3.s:d .5.s:d .7.s:d .8.s:d .11.s:d .12.s:d .13.s:d .15.s:d .17.s:d .18.s:d .19.s:d .20.s:d .24.s:d storage:26 .0.s:d .1.s:d .2.s:d .3.s:d .5.s:d .7.s:d .8.s:d .11.s:d .12.s:d .13.s:d .15.s:d .17.s:d .18.s:d .19.s:d .20.s:d .24.s:d"); int rpcPort = fleetController.getRpcPort(); @@ -541,7 +541,7 @@ public class RpcServerTest extends FleetControllerTest { startingTest("RpcServerTest::testGetNodeList"); setUpFleetController(true, defaultOptions("mycluster", 5)); final int nodeCount = 5; - setUpVdsNodes(true, new DummyVdsNodeOptions(), false, nodeCount); + setUpVdsNodes(true, false, nodeCount); waitForStableSystem(); assertTrue(nodes.get(0).isDistributor()); @@ -573,7 +573,7 @@ public class RpcServerTest extends FleetControllerTest { continue; } assertNotEquals("", rpc[i]); - Request req2 = new Request("getnodestate2"); + Request req2 = new Request("getnodestate3"); req2.parameters().add(new StringValue("unknown")); Target connection2 = supervisor.connect(new Spec(rpc[i])); connection2.invokeSync(req2, timeout()); diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcVersionAutoDowngradeTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcVersionAutoDowngradeTest.java deleted file mode 100644 index 3740c6de491..00000000000 --- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcVersionAutoDowngradeTest.java +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.clustercontroller.core; - -import com.yahoo.vdslib.distribution.ConfiguredNode; -import com.yahoo.vdslib.state.NodeState; -import com.yahoo.vdslib.state.State; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; - -import java.util.ArrayList; -import java.util.List; - -@ExtendWith(CleanupZookeeperLogsOnSuccess.class) -public class RpcVersionAutoDowngradeTest extends FleetControllerTest { - - private void setUpFakeCluster(int nodeRpcVersion) throws Exception { - List configuredNodes = new ArrayList<>(); - for (int i = 0 ; i < 10; i++) { - configuredNodes.add(new ConfiguredNode(i, false)); - } - FleetControllerOptions.Builder options = defaultOptions("mycluster", configuredNodes); - setUpFleetController(false, options); - DummyVdsNodeOptions nodeOptions = new DummyVdsNodeOptions(); - nodeOptions.stateCommunicationVersion = nodeRpcVersion; - List nodes = setUpVdsNodes(false, nodeOptions, true, configuredNodes); - for (DummyVdsNode node : nodes) { - node.setNodeState(new NodeState(node.getType(), State.UP).setMinUsedBits(20)); - node.connect(); - } - } - - @Test - void cluster_state_rpc_version_is_auto_downgraded_and_retried_for_older_nodes() throws Exception { - setUpFakeCluster(2); // HEAD is at v4 - waitForState("version:\\d+ distributor:10 storage:10"); - } - - @Test - void implicit_activation_for_nodes_that_return_not_found_for_version_activation_rpc() throws Exception { - setUpFakeCluster(3); // HEAD is at v4 - waitForState("version:\\d+ distributor:10 storage:10"); - } - - // TODO partial version setup for simulating upgrades - -} diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java index 7db8f47ce5b..5256c952d15 100644 --- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java +++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java @@ -958,7 +958,7 @@ public class StateChangeTest extends FleetControllerTest { builder.setMinTimeBeforeFirstSystemStateBroadcast(3 * 60 * 1000); setUpSystem(builder); boolean useFakeTimer = true; - setUpVdsNodes(useFakeTimer, new DummyVdsNodeOptions(), true); + setUpVdsNodes(useFakeTimer, true); // Leave one node down to avoid sending cluster state due to having seen all node states. for (int i = 0; i < nodes.size(); ++i) { if (i != 3) { @@ -1006,7 +1006,7 @@ public class StateChangeTest extends FleetControllerTest { boolean useFakeTimer = true; setUpSystem(builder); - setUpVdsNodes(useFakeTimer, new DummyVdsNodeOptions(), true); + setUpVdsNodes(useFakeTimer, true); for (DummyVdsNode node : nodes) { node.connect(); diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateGatherTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateGatherTest.java index 58df1c1f5eb..796204989b9 100644 --- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateGatherTest.java +++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateGatherTest.java @@ -37,9 +37,8 @@ public class StateGatherTest extends FleetControllerTest { .setNodeStateRequestTimeoutLatestPercentage(80); setUpFleetController(true, builder); String[] connectionSpecs = getSlobrokConnectionSpecs(slobrok); - DummyVdsNodeOptions dummyOptions = new DummyVdsNodeOptions(); - DummyVdsNode dnode = new DummyVdsNode(timer, dummyOptions, connectionSpecs, builder.clusterName(), NodeType.DISTRIBUTOR, 0); - DummyVdsNode snode = new DummyVdsNode(timer, dummyOptions, connectionSpecs, builder.clusterName(), NodeType.STORAGE, 0); + DummyVdsNode dnode = new DummyVdsNode(timer, connectionSpecs, builder.clusterName(), NodeType.DISTRIBUTOR, 0); + DummyVdsNode snode = new DummyVdsNode(timer, connectionSpecs, builder.clusterName(), NodeType.STORAGE, 0); dnode.connect(); snode.connect(); diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicatorTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicatorTest.java index 7e0b7f6d953..b533168e61a 100644 --- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicatorTest.java +++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicatorTest.java @@ -1,7 +1,6 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.clustercontroller.core.rpc; -import com.yahoo.jrt.ErrorCode; import com.yahoo.jrt.Request; import com.yahoo.jrt.RequestWaiter; import com.yahoo.jrt.Supervisor; @@ -158,32 +157,6 @@ public class RPCCommunicatorTest { assertEquals(receivedBundle, sentBundle); } - @Test - void set_distribution_states_v3_rpc_auto_downgrades_to_v2_on_unknown_method_error() { - var f = new Fixture(); - var cf = ClusterFixture.forFlatCluster(3).bringEntireClusterUp().assignDummyRpcAddresses(); - var sentBundle = ClusterStateBundleUtil.makeBundle("version:123 distributor:3 storage:3"); - f.communicator.setSystemState(sentBundle, cf.cluster().getNodeInfo(Node.ofStorage(1)), f.mockWaiter); - - RequestWaiter waiter = f.receivedWaiter.get(); - assertNotNull(waiter); - Request req = f.receivedRequest.get(); - assertNotNull(req); - - req.setError(ErrorCode.NO_SUCH_METHOD, "que?"); - waiter.handleRequestDone(req); - - // This would normally be done in processResponses(), but that code path is not invoked in this test. - cf.cluster().getNodeInfo(Node.ofStorage(1)).setClusterStateBundleVersionAcknowledged(123, false); - - f.receivedRequest.set(null); - // Now when we try again, we should have been downgraded to the legacy setsystemstate2 RPC - f.communicator.setSystemState(sentBundle, cf.cluster().getNodeInfo(Node.ofStorage(1)), f.mockWaiter); - req = f.receivedRequest.get(); - assertNotNull(req); - assertEquals(req.methodName(), RPCCommunicator.LEGACY_SET_SYSTEM_STATE2_RPC_METHOD_NAME); - } - @Test void activateClusterStateVersion_sends_version_activation_rpc() { var f = new Fixture(); diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/WaitCondition.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/WaitCondition.java index deccaf282d6..211d475de31 100644 --- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/WaitCondition.java +++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/WaitCondition.java @@ -128,7 +128,7 @@ public interface WaitCondition { if (!match) { return "Node " + node + " state mismatch.\n wanted: " + pattern + "\n is: " + node.getClusterStateBundle().toString(); } - if (node.getStateCommunicationVersion() > 0 && !node.hasPendingGetNodeStateRequest()) { + if (!node.hasPendingGetNodeStateRequest()) { return "Node " + node + " has not received another get node state request yet"; } } -- cgit v1.2.3