|
@@ -72,7 +72,8 @@ public class FailedShardsRoutingTests extends ESAllocationTestCase {
|
|
|
RoutingTable routingTable = RoutingTable.builder()
|
|
|
.addAsNew(metaData.index("test"))
|
|
|
.build();
|
|
|
- ClusterState clusterState = ClusterState.builder(CLUSTER_NAME_SETTING.getDefault(Settings.EMPTY)).metaData(metaData).routingTable(routingTable).build();
|
|
|
+ ClusterState clusterState = ClusterState.builder(CLUSTER_NAME_SETTING.getDefault(Settings.EMPTY))
|
|
|
+ .metaData(metaData).routingTable(routingTable).build();
|
|
|
|
|
|
logger.info("--> adding 2 nodes on same rack and do rerouting");
|
|
|
clusterState = ClusterState.builder(clusterState).nodes(DiscoveryNodes.builder()
|
|
@@ -109,23 +110,24 @@ public class FailedShardsRoutingTests extends ESAllocationTestCase {
|
|
|
String origReplicaNodeId = clusterState.routingTable().index("test").shard(0).replicaShards().get(0).currentNodeId();
|
|
|
|
|
|
logger.info("--> moving primary shard to node3");
|
|
|
- AllocationService.CommandsResult commandsResult = allocation.reroute(clusterState, new AllocationCommands(
|
|
|
- new MoveAllocationCommand("test", 0, clusterState.routingTable().index("test").shard(0).primaryShard().currentNodeId(), "node3")),
|
|
|
- false, false);
|
|
|
+ AllocationService.CommandsResult commandsResult = allocation.reroute(clusterState, new AllocationCommands(new MoveAllocationCommand(
|
|
|
+ "test", 0, clusterState.routingTable().index("test").shard(0).primaryShard().currentNodeId(), "node3")), false, false);
|
|
|
assertThat(commandsResult.getClusterState(), not(equalTo(clusterState)));
|
|
|
clusterState = commandsResult.getClusterState();
|
|
|
assertThat(clusterState.getRoutingNodes().node(origPrimaryNodeId).iterator().next().state(), equalTo(RELOCATING));
|
|
|
assertThat(clusterState.getRoutingNodes().node("node3").iterator().next().state(), equalTo(INITIALIZING));
|
|
|
|
|
|
logger.info("--> fail primary shard recovering instance on node3 being initialized");
|
|
|
- clusterState = allocation.applyFailedShard(clusterState, clusterState.getRoutingNodes().node("node3").iterator().next(), randomBoolean());
|
|
|
+ clusterState = allocation.applyFailedShard(clusterState,
|
|
|
+ clusterState.getRoutingNodes().node("node3").iterator().next(), randomBoolean());
|
|
|
|
|
|
assertThat(clusterState.getRoutingNodes().node(origPrimaryNodeId).iterator().next().state(), equalTo(STARTED));
|
|
|
assertThat(clusterState.getRoutingNodes().node("node3").size(), equalTo(0));
|
|
|
|
|
|
logger.info("--> moving primary shard to node3");
|
|
|
commandsResult = allocation.reroute(clusterState, new AllocationCommands(
|
|
|
- new MoveAllocationCommand("test", 0, clusterState.routingTable().index("test").shard(0).primaryShard().currentNodeId(), "node3")),
|
|
|
+ new MoveAllocationCommand("test", 0,
|
|
|
+ clusterState.routingTable().index("test").shard(0).primaryShard().currentNodeId(), "node3")),
|
|
|
false, false);
|
|
|
assertThat(commandsResult.getClusterState(), not(equalTo(clusterState)));
|
|
|
clusterState = commandsResult.getClusterState();
|
|
@@ -133,12 +135,14 @@ public class FailedShardsRoutingTests extends ESAllocationTestCase {
|
|
|
assertThat(clusterState.getRoutingNodes().node("node3").iterator().next().state(), equalTo(INITIALIZING));
|
|
|
|
|
|
logger.info("--> fail primary shard recovering instance on node1 being relocated");
|
|
|
- clusterState = allocation.applyFailedShard(clusterState, clusterState.getRoutingNodes().node(origPrimaryNodeId).iterator().next(), randomBoolean());
|
|
|
+ clusterState = allocation.applyFailedShard(clusterState,
|
|
|
+ clusterState.getRoutingNodes().node(origPrimaryNodeId).iterator().next(), randomBoolean());
|
|
|
|
|
|
// check promotion of replica to primary
|
|
|
assertThat(clusterState.getRoutingNodes().node(origReplicaNodeId).iterator().next().state(), equalTo(STARTED));
|
|
|
assertThat(clusterState.routingTable().index("test").shard(0).primaryShard().currentNodeId(), equalTo(origReplicaNodeId));
|
|
|
- assertThat(clusterState.routingTable().index("test").shard(0).replicaShards().get(0).currentNodeId(), anyOf(equalTo(origPrimaryNodeId), equalTo("node3")));
|
|
|
+ assertThat(clusterState.routingTable().index("test").shard(0).replicaShards().get(0).currentNodeId(),
|
|
|
+ anyOf(equalTo(origPrimaryNodeId), equalTo("node3")));
|
|
|
}
|
|
|
|
|
|
public void testFailPrimaryStartedCheckReplicaElected() {
|
|
@@ -157,10 +161,12 @@ public class FailedShardsRoutingTests extends ESAllocationTestCase {
|
|
|
.addAsNew(metaData.index("test"))
|
|
|
.build();
|
|
|
|
|
|
- ClusterState clusterState = ClusterState.builder(CLUSTER_NAME_SETTING.getDefault(Settings.EMPTY)).metaData(metaData).routingTable(initialRoutingTable).build();
|
|
|
+ ClusterState clusterState = ClusterState.builder(CLUSTER_NAME_SETTING.getDefault(Settings.EMPTY))
|
|
|
+ .metaData(metaData).routingTable(initialRoutingTable).build();
|
|
|
|
|
|
logger.info("Adding two nodes and performing rerouting");
|
|
|
- clusterState = ClusterState.builder(clusterState).nodes(DiscoveryNodes.builder().add(newNode("node1")).add(newNode("node2"))).build();
|
|
|
+ clusterState = ClusterState.builder(clusterState).nodes(DiscoveryNodes.builder()
|
|
|
+ .add(newNode("node1")).add(newNode("node2"))).build();
|
|
|
clusterState = strategy.reroute(clusterState, "reroute");
|
|
|
|
|
|
logger.info("Start the shards (primaries)");
|
|
@@ -176,10 +182,12 @@ public class FailedShardsRoutingTests extends ESAllocationTestCase {
|
|
|
assertThat(clusterState.routingTable().index("test").shard(i).size(), equalTo(2));
|
|
|
assertThat(clusterState.routingTable().index("test").shard(i).size(), equalTo(2));
|
|
|
assertThat(clusterState.routingTable().index("test").shard(i).primaryShard().state(), equalTo(STARTED));
|
|
|
- assertThat(clusterState.routingTable().index("test").shard(i).primaryShard().currentNodeId(), anyOf(equalTo("node1"), equalTo("node2")));
|
|
|
+ assertThat(clusterState.routingTable().index("test").shard(i).primaryShard().currentNodeId(),
|
|
|
+ anyOf(equalTo("node1"), equalTo("node2")));
|
|
|
assertThat(clusterState.routingTable().index("test").shard(i).replicaShards().size(), equalTo(1));
|
|
|
assertThat(clusterState.routingTable().index("test").shard(i).replicaShards().get(0).state(), equalTo(INITIALIZING));
|
|
|
- assertThat(clusterState.routingTable().index("test").shard(i).replicaShards().get(0).currentNodeId(), anyOf(equalTo("node2"), equalTo("node1")));
|
|
|
+ assertThat(clusterState.routingTable().index("test").shard(i).replicaShards().get(0).currentNodeId(),
|
|
|
+ anyOf(equalTo("node2"), equalTo("node1")));
|
|
|
}
|
|
|
|
|
|
logger.info("Start the shards (backups)");
|
|
@@ -193,10 +201,12 @@ public class FailedShardsRoutingTests extends ESAllocationTestCase {
|
|
|
assertThat(clusterState.routingTable().index("test").shard(i).size(), equalTo(2));
|
|
|
assertThat(clusterState.routingTable().index("test").shard(i).size(), equalTo(2));
|
|
|
assertThat(clusterState.routingTable().index("test").shard(i).primaryShard().state(), equalTo(STARTED));
|
|
|
- assertThat(clusterState.routingTable().index("test").shard(i).primaryShard().currentNodeId(), anyOf(equalTo("node1"), equalTo("node2")));
|
|
|
+ assertThat(clusterState.routingTable().index("test").shard(i).primaryShard().currentNodeId(),
|
|
|
+ anyOf(equalTo("node1"), equalTo("node2")));
|
|
|
assertThat(clusterState.routingTable().index("test").shard(i).replicaShards().size(), equalTo(1));
|
|
|
assertThat(clusterState.routingTable().index("test").shard(i).replicaShards().get(0).state(), equalTo(STARTED));
|
|
|
- assertThat(clusterState.routingTable().index("test").shard(i).replicaShards().get(0).currentNodeId(), anyOf(equalTo("node2"), equalTo("node1")));
|
|
|
+ assertThat(clusterState.routingTable().index("test").shard(i).replicaShards().get(0).currentNodeId(),
|
|
|
+ anyOf(equalTo("node2"), equalTo("node1")));
|
|
|
}
|
|
|
|
|
|
logger.info("fail the primary shard, will have no place to be rerouted to (single node), so stays unassigned");
|
|
@@ -207,9 +217,11 @@ public class FailedShardsRoutingTests extends ESAllocationTestCase {
|
|
|
|
|
|
assertThat(clusterState.routingTable().index("test").shard(0).size(), equalTo(2));
|
|
|
assertThat(clusterState.routingTable().index("test").shard(0).size(), equalTo(2));
|
|
|
- assertThat(clusterState.routingTable().index("test").shard(0).primaryShard().currentNodeId(), not(equalTo(shardToFail.currentNodeId())));
|
|
|
+ assertThat(clusterState.routingTable().index("test").shard(0).primaryShard().currentNodeId(),
|
|
|
+ not(equalTo(shardToFail.currentNodeId())));
|
|
|
assertThat(clusterState.routingTable().index("test").shard(0).primaryShard().state(), equalTo(STARTED));
|
|
|
- assertThat(clusterState.routingTable().index("test").shard(0).primaryShard().currentNodeId(), anyOf(equalTo("node1"), equalTo("node2")));
|
|
|
+ assertThat(clusterState.routingTable().index("test").shard(0).primaryShard().currentNodeId(),
|
|
|
+ anyOf(equalTo("node1"), equalTo("node2")));
|
|
|
assertThat(clusterState.routingTable().index("test").shard(0).replicaShards().size(), equalTo(1));
|
|
|
assertThat(clusterState.routingTable().index("test").shard(0).replicaShards().get(0).state(), equalTo(UNASSIGNED));
|
|
|
}
|
|
@@ -230,7 +242,8 @@ public class FailedShardsRoutingTests extends ESAllocationTestCase {
|
|
|
.addAsNew(metaData.index("test"))
|
|
|
.build();
|
|
|
|
|
|
- ClusterState clusterState = ClusterState.builder(CLUSTER_NAME_SETTING.getDefault(Settings.EMPTY)).metaData(metaData).routingTable(initialRoutingTable).build();
|
|
|
+ ClusterState clusterState = ClusterState.builder(CLUSTER_NAME_SETTING
|
|
|
+ .getDefault(Settings.EMPTY)).metaData(metaData).routingTable(initialRoutingTable).build();
|
|
|
|
|
|
logger.info("Adding single node and performing rerouting");
|
|
|
clusterState = ClusterState.builder(clusterState).nodes(DiscoveryNodes.builder().add(newNode("node1"))).build();
|
|
@@ -274,14 +287,16 @@ public class FailedShardsRoutingTests extends ESAllocationTestCase {
|
|
|
logger.info("Building initial routing table");
|
|
|
int numberOfReplicas = scaledRandomIntBetween(2, 10);
|
|
|
MetaData metaData = MetaData.builder()
|
|
|
- .put(IndexMetaData.builder("test").settings(settings(Version.CURRENT)).numberOfShards(1).numberOfReplicas(numberOfReplicas))
|
|
|
+ .put(IndexMetaData.builder("test").settings(settings(Version.CURRENT))
|
|
|
+ .numberOfShards(1).numberOfReplicas(numberOfReplicas))
|
|
|
.build();
|
|
|
|
|
|
RoutingTable initialRoutingTable = RoutingTable.builder()
|
|
|
.addAsNew(metaData.index("test"))
|
|
|
.build();
|
|
|
|
|
|
- ClusterState clusterState = ClusterState.builder(CLUSTER_NAME_SETTING.getDefault(Settings.EMPTY)).metaData(metaData).routingTable(initialRoutingTable).build();
|
|
|
+ ClusterState clusterState = ClusterState.builder(CLUSTER_NAME_SETTING.getDefault(Settings.EMPTY))
|
|
|
+ .metaData(metaData).routingTable(initialRoutingTable).build();
|
|
|
|
|
|
logger.info("Adding {} nodes and performing rerouting", numberOfReplicas + 1);
|
|
|
DiscoveryNodes.Builder nodeBuilder = DiscoveryNodes.builder();
|
|
@@ -344,10 +359,12 @@ public class FailedShardsRoutingTests extends ESAllocationTestCase {
|
|
|
.addAsNew(metaData.index("test"))
|
|
|
.build();
|
|
|
|
|
|
- ClusterState clusterState = ClusterState.builder(CLUSTER_NAME_SETTING.getDefault(Settings.EMPTY)).metaData(metaData).routingTable(initialRoutingTable).build();
|
|
|
+ ClusterState clusterState = ClusterState.builder(CLUSTER_NAME_SETTING.getDefault(Settings.EMPTY))
|
|
|
+ .metaData(metaData).routingTable(initialRoutingTable).build();
|
|
|
|
|
|
logger.info("Adding two nodes and performing rerouting");
|
|
|
- clusterState = ClusterState.builder(clusterState).nodes(DiscoveryNodes.builder().add(newNode("node1")).add(newNode("node2"))).build();
|
|
|
+ clusterState = ClusterState.builder(clusterState).nodes(DiscoveryNodes.builder()
|
|
|
+ .add(newNode("node1")).add(newNode("node2"))).build();
|
|
|
ClusterState newState = strategy.reroute(clusterState, "reroute");
|
|
|
assertThat(newState, not(clusterState));
|
|
|
clusterState = newState;
|
|
@@ -399,10 +416,12 @@ public class FailedShardsRoutingTests extends ESAllocationTestCase {
|
|
|
.addAsNew(metaData.index("test"))
|
|
|
.build();
|
|
|
|
|
|
- ClusterState clusterState = ClusterState.builder(CLUSTER_NAME_SETTING.getDefault(Settings.EMPTY)).metaData(metaData).routingTable(initialRoutingTable).build();
|
|
|
+ ClusterState clusterState = ClusterState.builder(CLUSTER_NAME_SETTING.getDefault(Settings.EMPTY))
|
|
|
+ .metaData(metaData).routingTable(initialRoutingTable).build();
|
|
|
|
|
|
logger.info("Adding two nodes and performing rerouting");
|
|
|
- clusterState = ClusterState.builder(clusterState).nodes(DiscoveryNodes.builder().add(newNode("node1")).add(newNode("node2"))).build();
|
|
|
+ clusterState = ClusterState.builder(clusterState).nodes(DiscoveryNodes.builder()
|
|
|
+ .add(newNode("node1")).add(newNode("node2"))).build();
|
|
|
clusterState = strategy.reroute(clusterState, "reroute");
|
|
|
|
|
|
logger.info("Start the shards (primaries)");
|
|
@@ -416,10 +435,12 @@ public class FailedShardsRoutingTests extends ESAllocationTestCase {
|
|
|
assertThat(clusterState.routingTable().index("test").shard(i).size(), equalTo(2));
|
|
|
assertThat(clusterState.routingTable().index("test").shard(i).shards().size(), equalTo(2));
|
|
|
assertThat(clusterState.routingTable().index("test").shard(i).primaryShard().state(), equalTo(STARTED));
|
|
|
- assertThat(clusterState.routingTable().index("test").shard(i).primaryShard().currentNodeId(), anyOf(equalTo("node1"), equalTo("node2")));
|
|
|
+ assertThat(clusterState.routingTable().index("test").shard(i).primaryShard().currentNodeId(),
|
|
|
+ anyOf(equalTo("node1"), equalTo("node2")));
|
|
|
assertThat(clusterState.routingTable().index("test").shard(i).replicaShards().size(), equalTo(1));
|
|
|
assertThat(clusterState.routingTable().index("test").shard(i).replicaShards().get(0).state(), equalTo(INITIALIZING));
|
|
|
- assertThat(clusterState.routingTable().index("test").shard(i).replicaShards().get(0).currentNodeId(), anyOf(equalTo("node2"), equalTo("node1")));
|
|
|
+ assertThat(clusterState.routingTable().index("test").shard(i).replicaShards().get(0).currentNodeId(),
|
|
|
+ anyOf(equalTo("node2"), equalTo("node1")));
|
|
|
}
|
|
|
|
|
|
logger.info("Start the shards (backups)");
|
|
@@ -433,14 +454,17 @@ public class FailedShardsRoutingTests extends ESAllocationTestCase {
|
|
|
assertThat(clusterState.routingTable().index("test").shard(i).size(), equalTo(2));
|
|
|
assertThat(clusterState.routingTable().index("test").shard(i).shards().size(), equalTo(2));
|
|
|
assertThat(clusterState.routingTable().index("test").shard(i).primaryShard().state(), equalTo(STARTED));
|
|
|
- assertThat(clusterState.routingTable().index("test").shard(i).primaryShard().currentNodeId(), anyOf(equalTo("node1"), equalTo("node2")));
|
|
|
+ assertThat(clusterState.routingTable().index("test").shard(i).primaryShard().currentNodeId(),
|
|
|
+ anyOf(equalTo("node1"), equalTo("node2")));
|
|
|
assertThat(clusterState.routingTable().index("test").shard(i).replicaShards().size(), equalTo(1));
|
|
|
assertThat(clusterState.routingTable().index("test").shard(i).replicaShards().get(0).state(), equalTo(STARTED));
|
|
|
- assertThat(clusterState.routingTable().index("test").shard(i).replicaShards().get(0).currentNodeId(), anyOf(equalTo("node2"), equalTo("node1")));
|
|
|
+ assertThat(clusterState.routingTable().index("test").shard(i).replicaShards().get(0).currentNodeId(),
|
|
|
+ anyOf(equalTo("node2"), equalTo("node1")));
|
|
|
}
|
|
|
|
|
|
logger.info("Adding third node and reroute");
|
|
|
- clusterState = ClusterState.builder(clusterState).nodes(DiscoveryNodes.builder(clusterState.nodes()).add(newNode("node3"))).build();
|
|
|
+ clusterState = ClusterState.builder(clusterState).nodes(DiscoveryNodes.builder(clusterState.nodes())
|
|
|
+ .add(newNode("node3"))).build();
|
|
|
newState = strategy.reroute(clusterState, "reroute");
|
|
|
assertThat(newState, not(equalTo(clusterState)));
|
|
|
clusterState = newState;
|
|
@@ -489,7 +513,8 @@ public class FailedShardsRoutingTests extends ESAllocationTestCase {
|
|
|
ShardId shardId = new ShardId(metaData.index("test").getIndex(), 0);
|
|
|
|
|
|
// add 4 nodes
|
|
|
- clusterState = ClusterState.builder(clusterState).nodes(DiscoveryNodes.builder().add(newNode("node1")).add(newNode("node2")).add(newNode("node3")).add(newNode("node4"))).build();
|
|
|
+ clusterState = ClusterState.builder(clusterState).nodes(DiscoveryNodes.builder()
|
|
|
+ .add(newNode("node1")).add(newNode("node2")).add(newNode("node3")).add(newNode("node4"))).build();
|
|
|
clusterState = ClusterState.builder(clusterState).routingTable(allocation.reroute(clusterState, "reroute").routingTable()).build();
|
|
|
assertThat(clusterState.getRoutingNodes().shardsWithState(INITIALIZING).size(), equalTo(1));
|
|
|
assertThat(clusterState.getRoutingNodes().shardsWithState(UNASSIGNED).size(), equalTo(2));
|
|
@@ -532,10 +557,12 @@ public class FailedShardsRoutingTests extends ESAllocationTestCase {
|
|
|
.addAsNew(metaData.index("test"))
|
|
|
.build();
|
|
|
|
|
|
- ClusterState clusterState = ClusterState.builder(CLUSTER_NAME_SETTING.getDefault(Settings.EMPTY)).metaData(metaData).routingTable(routingTable).build();
|
|
|
+ ClusterState clusterState = ClusterState.builder(CLUSTER_NAME_SETTING.getDefault(Settings.EMPTY))
|
|
|
+ .metaData(metaData).routingTable(routingTable).build();
|
|
|
|
|
|
// add 4 nodes
|
|
|
- clusterState = ClusterState.builder(clusterState).nodes(DiscoveryNodes.builder().add(newNode("node1")).add(newNode("node2")).add(newNode("node3")).add(newNode("node4"))).build();
|
|
|
+ clusterState = ClusterState.builder(clusterState).nodes(DiscoveryNodes.builder().add(newNode("node1"))
|
|
|
+ .add(newNode("node2")).add(newNode("node3")).add(newNode("node4"))).build();
|
|
|
clusterState = allocation.reroute(clusterState, "reroute");
|
|
|
assertThat(clusterState.getRoutingNodes().shardsWithState(INITIALIZING).size(), equalTo(1));
|
|
|
assertThat(clusterState.getRoutingNodes().shardsWithState(UNASSIGNED).size(), equalTo(2));
|
|
@@ -545,7 +572,8 @@ public class FailedShardsRoutingTests extends ESAllocationTestCase {
|
|
|
assertThat(clusterState.getRoutingNodes().shardsWithState(INITIALIZING).size(), equalTo(2));
|
|
|
|
|
|
// start another replica shard, while keep one initializing
|
|
|
- clusterState = allocation.applyStartedShards(clusterState, Collections.singletonList(clusterState.getRoutingNodes().shardsWithState(INITIALIZING).get(0)));
|
|
|
+ clusterState = allocation.applyStartedShards(clusterState,
|
|
|
+ Collections.singletonList(clusterState.getRoutingNodes().shardsWithState(INITIALIZING).get(0)));
|
|
|
assertThat(clusterState.getRoutingNodes().shardsWithState(STARTED).size(), equalTo(2));
|
|
|
assertThat(clusterState.getRoutingNodes().shardsWithState(INITIALIZING).size(), equalTo(1));
|
|
|
|
|
@@ -579,7 +607,8 @@ public class FailedShardsRoutingTests extends ESAllocationTestCase {
|
|
|
DiscoveryNodes.builder()
|
|
|
.add(newNode("node1-5.x", Version.fromId(5060099))))
|
|
|
.build();
|
|
|
- clusterState = ClusterState.builder(clusterState).routingTable(allocation.reroute(clusterState, "reroute").routingTable()).build();
|
|
|
+ clusterState = ClusterState.builder(clusterState)
|
|
|
+ .routingTable(allocation.reroute(clusterState, "reroute").routingTable()).build();
|
|
|
assertThat(clusterState.getRoutingNodes().shardsWithState(INITIALIZING).size(), equalTo(1));
|
|
|
assertThat(clusterState.getRoutingNodes().shardsWithState(UNASSIGNED).size(), equalTo(3));
|
|
|
|
|
@@ -641,8 +670,8 @@ public class FailedShardsRoutingTests extends ESAllocationTestCase {
|
|
|
continue;
|
|
|
}
|
|
|
Version nodeVer = cursor.value.getVersion();
|
|
|
- assertTrue("expected node [" + cursor.value.getId() + "] with version " + nodeVer + " to be before " + replicaNodeVersion,
|
|
|
- replicaNodeVersion.onOrAfter(nodeVer));
|
|
|
+ assertTrue("expected node [" + cursor.value.getId() + "] with version " + nodeVer
|
|
|
+ + " to be before " + replicaNodeVersion, replicaNodeVersion.onOrAfter(nodeVer));
|
|
|
}
|
|
|
|
|
|
startedReplica = clusterState.getRoutingNodes().activeReplicaWithHighestVersion(shardId);
|
|
@@ -671,8 +700,8 @@ public class FailedShardsRoutingTests extends ESAllocationTestCase {
|
|
|
continue;
|
|
|
}
|
|
|
Version nodeVer = cursor.value.getVersion();
|
|
|
- assertTrue("expected node [" + cursor.value.getId() + "] with version " + nodeVer + " to be before " + replicaNodeVersion,
|
|
|
- replicaNodeVersion.onOrAfter(nodeVer));
|
|
|
+ assertTrue("expected node [" + cursor.value.getId() + "] with version "
|
|
|
+ + nodeVer + " to be before " + replicaNodeVersion, replicaNodeVersion.onOrAfter(nodeVer));
|
|
|
}
|
|
|
}
|
|
|
}
|