Use VotingConfiguration#of where possible (#54507)

This resolves a longstanding TODO in the cluster coordination subsystem.

Relates #32006
This commit is contained in:
David Turner 2020-03-31 19:05:47 +01:00
parent 325b8ec0ce
commit 5e3b6ab82b
6 changed files with 66 additions and 74 deletions

View File

@ -385,7 +385,6 @@ public class CoordinationMetadata implements Writeable, ToXContentFragment {
}
public static VotingConfiguration of(DiscoveryNode... nodes) {
// this could be used in many more places - TODO use this where appropriate
return new VotingConfiguration(Arrays.stream(nodes).map(DiscoveryNode::getId).collect(Collectors.toSet()));
}
}

View File

@ -31,7 +31,6 @@ import org.elasticsearch.cluster.node.DiscoveryNodes;
import org.elasticsearch.common.UUIDs;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.common.util.set.Sets;
import org.elasticsearch.test.ESTestCase;
import org.elasticsearch.test.EqualsHashCodeTestUtils;
import org.junit.Before;
@ -88,7 +87,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testSetInitialState() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
assertTrue(state1.getLastAcceptedConfiguration().hasQuorum(Collections.singleton(node1.getId())));
assertTrue(state1.getLastCommittedConfiguration().hasQuorum(Collections.singleton(node1.getId())));
@ -97,7 +96,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testSetInitialStateWhenAlreadySet() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
assertTrue(state1.getLastAcceptedConfiguration().hasQuorum(Collections.singleton(node1.getId())));
assertTrue(state1.getLastCommittedConfiguration().hasQuorum(Collections.singleton(node1.getId())));
@ -123,7 +122,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testStartJoinAfterBootstrap() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
assertTrue(state1.getLastAcceptedConfiguration().hasQuorum(Collections.singleton(node1.getId())));
assertTrue(state1.getLastCommittedConfiguration().hasQuorum(Collections.singleton(node1.getId())));
@ -172,7 +171,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testJoinWithBadCurrentTerm() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
@ -185,7 +184,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testJoinWithHigherAcceptedTerm() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
@ -203,7 +202,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testJoinWithSameAcceptedTermButHigherVersion() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
@ -221,7 +220,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testJoinWithLowerLastAcceptedTermWinsElection() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
@ -243,7 +242,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testJoinWithSameLastAcceptedTermButLowerOrSameVersionWinsElection() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
@ -264,7 +263,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testJoinDoesNotWinElection() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
@ -283,8 +282,8 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testJoinDoesNotWinElectionWhenOnlyCommittedConfigQuorum() {
VotingConfiguration configNode1 = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration configNode2 = new VotingConfiguration(Collections.singleton(node2.getId()));
VotingConfiguration configNode1 = VotingConfiguration.of(node1);
VotingConfiguration configNode2 = VotingConfiguration.of(node2);
ClusterState state1 = clusterState(0L, 0L, node1, configNode1, configNode2, 42L);
cs1.setInitialState(state1);
@ -297,8 +296,8 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testJoinDoesNotWinElectionWhenOnlyLastAcceptedConfigQuorum() {
VotingConfiguration configNode1 = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration configNode2 = new VotingConfiguration(Collections.singleton(node2.getId()));
VotingConfiguration configNode1 = VotingConfiguration.of(node1);
VotingConfiguration configNode2 = VotingConfiguration.of(node2);
ClusterState state1 = clusterState(0L, 0L, node1, configNode2, configNode1, 42L);
cs1.setInitialState(state1);
@ -311,7 +310,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testHandleClientValue() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
@ -324,7 +323,7 @@ public class CoordinationStateTests extends ESTestCase {
assertTrue(cs1.handleJoin(v2));
assertTrue(cs1.containsJoin(v2));
VotingConfiguration newConfig = new VotingConfiguration(Collections.singleton(node2.getId()));
VotingConfiguration newConfig = VotingConfiguration.of(node2);
ClusterState state2 = clusterState(startJoinRequest1.getTerm(), 2L, node1, initialConfig, newConfig, 42L);
PublishRequest publishRequest = cs1.handleClientValue(state2);
@ -337,7 +336,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testHandleClientValueWhenElectionNotWon() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
if (randomBoolean()) {
cs1.setInitialState(state1);
@ -347,7 +346,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testHandleClientValueDuringOngoingPublication() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
@ -364,7 +363,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testHandleClientValueWithBadTerm() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(3, 5));
@ -381,7 +380,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testHandleClientValueWithOldVersion() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
@ -395,7 +394,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testHandleClientValueWithDifferentReconfigurationWhileAlreadyReconfiguring() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
@ -405,18 +404,18 @@ public class CoordinationStateTests extends ESTestCase {
assertTrue(cs1.electionWon());
assertTrue(cs1.handleJoin(v2));
VotingConfiguration newConfig1 = new VotingConfiguration(Collections.singleton(node2.getId()));
VotingConfiguration newConfig1 = VotingConfiguration.of(node2);
ClusterState state2 = clusterState(startJoinRequest1.getTerm(), 2L, node1, initialConfig, newConfig1, 42L);
PublishRequest publishRequest = cs1.handleClientValue(state2);
cs1.handlePublishRequest(publishRequest);
VotingConfiguration newConfig2 = new VotingConfiguration(Collections.singleton(node3.getId()));
VotingConfiguration newConfig2 = VotingConfiguration.of(node3);
ClusterState state3 = clusterState(startJoinRequest1.getTerm(), 3L, node1, initialConfig, newConfig2, 42L);
assertThat(expectThrows(CoordinationStateRejectedException.class, () -> cs1.handleClientValue(state3)).getMessage(),
containsString("only allow reconfiguration while not already reconfiguring"));
}
public void testHandleClientValueWithSameReconfigurationWhileAlreadyReconfiguring() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
@ -426,7 +425,7 @@ public class CoordinationStateTests extends ESTestCase {
assertTrue(cs1.electionWon());
assertTrue(cs1.handleJoin(v2));
VotingConfiguration newConfig1 = new VotingConfiguration(Collections.singleton(node2.getId()));
VotingConfiguration newConfig1 = VotingConfiguration.of(node2);
ClusterState state2 = clusterState(startJoinRequest1.getTerm(), 2L, node1, initialConfig, newConfig1, 42L);
PublishRequest publishRequest = cs1.handleClientValue(state2);
cs1.handlePublishRequest(publishRequest);
@ -436,7 +435,7 @@ public class CoordinationStateTests extends ESTestCase {
public void testHandleClientValueWithIllegalCommittedConfigurationChange() {
assumeTrue("test only works with assertions enabled", Assertions.ENABLED);
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
@ -446,14 +445,14 @@ public class CoordinationStateTests extends ESTestCase {
assertTrue(cs1.electionWon());
assertTrue(cs1.handleJoin(v2));
VotingConfiguration newConfig = new VotingConfiguration(Collections.singleton(node2.getId()));
VotingConfiguration newConfig = VotingConfiguration.of(node2);
ClusterState state2 = clusterState(startJoinRequest1.getTerm(), 2L, node1, newConfig, newConfig, 42L);
assertThat(expectThrows(AssertionError.class, () -> cs1.handleClientValue(state2)).getMessage(),
containsString("last committed configuration should not change"));
}
public void testHandleClientValueWithConfigurationChangeButNoJoinQuorum() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
@ -461,14 +460,14 @@ public class CoordinationStateTests extends ESTestCase {
assertTrue(cs1.handleJoin(v1));
assertTrue(cs1.electionWon());
VotingConfiguration newConfig = new VotingConfiguration(Collections.singleton(node2.getId()));
VotingConfiguration newConfig = VotingConfiguration.of(node2);
ClusterState state2 = clusterState(startJoinRequest1.getTerm(), 2L, node1, initialConfig, newConfig, 42L);
assertThat(expectThrows(CoordinationStateRejectedException.class, () -> cs1.handleClientValue(state2)).getMessage(),
containsString("only allow reconfiguration if joinVotes have quorum for new config"));
}
public void testHandlePublishRequest() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
@ -489,7 +488,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testHandlePublishRequestWithBadTerm() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
@ -509,7 +508,7 @@ public class CoordinationStateTests extends ESTestCase {
// scenario when handling a publish request from a master that we already received a newer state from
public void testHandlePublishRequestWithSameTermButOlderOrSameVersion() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
@ -529,7 +528,7 @@ public class CoordinationStateTests extends ESTestCase {
// scenario when handling a publish request from a fresh master
public void testHandlePublishRequestWithTermHigherThanLastAcceptedTerm() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
ClusterState state1 = clusterState(startJoinRequest1.getTerm(), randomLongBetween(2, 10), node1, initialConfig, initialConfig, 42L);
cs2.handleStartJoin(startJoinRequest1);
@ -542,7 +541,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testHandlePublishResponseWithCommit() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
@ -560,7 +559,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testHandlePublishResponseWhenSteppedDownAsLeader() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
@ -578,8 +577,8 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testHandlePublishResponseWithoutPublishConfigQuorum() {
VotingConfiguration configNode1 = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration configNode2 = new VotingConfiguration(Collections.singleton(node2.getId()));
VotingConfiguration configNode1 = VotingConfiguration.of(node1);
VotingConfiguration configNode2 = VotingConfiguration.of(node2);
ClusterState state1 = clusterState(0L, 0L, node1, configNode1, configNode1, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
@ -596,8 +595,8 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testHandlePublishResponseWithoutCommitedConfigQuorum() {
VotingConfiguration configNode1 = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration configNode2 = new VotingConfiguration(Collections.singleton(node2.getId()));
VotingConfiguration configNode1 = VotingConfiguration.of(node1);
VotingConfiguration configNode2 = VotingConfiguration.of(node2);
ClusterState state1 = clusterState(0L, 0L, node1, configNode1, configNode1, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
@ -614,7 +613,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testHandlePublishResponseWithoutCommit() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
@ -629,7 +628,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testHandlePublishResponseWithBadTerm() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
@ -648,7 +647,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testHandlePublishResponseWithVersionMismatch() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
@ -663,7 +662,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testHandleCommit() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
@ -672,7 +671,7 @@ public class CoordinationStateTests extends ESTestCase {
assertTrue(cs1.electionWon());
Join v2 = cs2.handleStartJoin(startJoinRequest1);
assertTrue(cs1.handleJoin(v2));
VotingConfiguration newConfig = new VotingConfiguration(Collections.singleton(node2.getId()));
VotingConfiguration newConfig = VotingConfiguration.of(node2);
ClusterState state2 = clusterState(startJoinRequest1.getTerm(), 2L, node1, initialConfig, newConfig, 7L);
PublishRequest publishRequest = cs1.handleClientValue(state2);
PublishResponse publishResponse = cs1.handlePublishRequest(publishRequest);
@ -685,7 +684,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testHandleCommitWithBadCurrentTerm() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
@ -705,7 +704,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testHandleCommitWithBadLastAcceptedTerm() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
@ -718,7 +717,7 @@ public class CoordinationStateTests extends ESTestCase {
}
public void testHandleCommitWithBadVersion() {
VotingConfiguration initialConfig = new VotingConfiguration(Collections.singleton(node1.getId()));
VotingConfiguration initialConfig = VotingConfiguration.of(node1);
ClusterState state1 = clusterState(0L, 0L, node1, initialConfig, initialConfig, 42L);
cs1.setInitialState(state1);
StartJoinRequest startJoinRequest1 = new StartJoinRequest(node1, randomLongBetween(1, 5));
@ -750,9 +749,9 @@ public class CoordinationStateTests extends ESTestCase {
assertTrue(voteCollection.containsVoteFor(node1));
assertTrue(voteCollection.containsVoteFor(node2));
assertFalse(voteCollection.containsVoteFor(node3));
assertTrue(voteCollection.isQuorum(new VotingConfiguration(Sets.newHashSet(node1.getId(), node2.getId()))));
assertTrue(voteCollection.isQuorum(new VotingConfiguration(Sets.newHashSet(node1.getId()))));
assertFalse(voteCollection.isQuorum(new VotingConfiguration(Sets.newHashSet(node3.getId()))));
assertTrue(voteCollection.isQuorum(VotingConfiguration.of(node1, node2)));
assertTrue(voteCollection.isQuorum(VotingConfiguration.of(node1)));
assertFalse(voteCollection.isQuorum(VotingConfiguration.of(node3)));
EqualsHashCodeTestUtils.CopyFunction<CoordinationState.VoteCollection> copyFunction =
vc -> {

View File

@ -48,7 +48,6 @@ import org.elasticsearch.test.MockLogAppender;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@ -775,8 +774,7 @@ public class CoordinatorTests extends AbstractCoordinatorTestCase {
assertThat(exceptionMessage, containsString(coordinator.getLocalNode().toString()));
// This is VERY BAD: setting a _different_ initial configuration. Yet it works if the first attempt will never be a quorum.
assertTrue(coordinator.setInitialConfiguration(
new VotingConfiguration(Collections.singleton(coordinator.getLocalNode().getId()))));
assertTrue(coordinator.setInitialConfiguration(VotingConfiguration.of(coordinator.getLocalNode())));
cluster.stabilise();
}
}

View File

@ -276,7 +276,7 @@ public class NodeJoinTests extends ESTestCase {
long initialTerm = randomLongBetween(1, 10);
long initialVersion = randomLongBetween(1, 10);
setupFakeMasterServiceAndCoordinator(initialTerm, initialState(node0, initialTerm, initialVersion,
new VotingConfiguration(Collections.singleton(randomFrom(node0, node1).getId()))));
VotingConfiguration.of(randomFrom(node0, node1))));
assertFalse(isLocalNodeElectedMaster());
assertNull(coordinator.getStateForMasterService().nodes().getMasterNodeId());
long newTerm = initialTerm + randomLongBetween(1, 10);
@ -296,7 +296,7 @@ public class NodeJoinTests extends ESTestCase {
long initialTerm = randomLongBetween(1, 10);
long initialVersion = randomLongBetween(1, 10);
setupFakeMasterServiceAndCoordinator(initialTerm, initialState(node0, initialTerm, initialVersion,
new VotingConfiguration(Collections.singleton(node1.getId()))));
VotingConfiguration.of(node1)));
assertFalse(isLocalNodeElectedMaster());
long newTerm = initialTerm + randomLongBetween(1, 10);
long higherVersion = initialVersion + randomLongBetween(1, 10);
@ -312,7 +312,7 @@ public class NodeJoinTests extends ESTestCase {
long initialTerm = randomLongBetween(1, 10);
long initialVersion = randomLongBetween(1, 10);
setupFakeMasterServiceAndCoordinator(initialTerm, initialState(node0, initialTerm, initialVersion,
new VotingConfiguration(Collections.singleton(node0.getId()))));
VotingConfiguration.of(node0)));
assertFalse(isLocalNodeElectedMaster());
long newTerm = initialTerm + randomLongBetween(1, 10);
long higherVersion = initialVersion + randomLongBetween(1, 10);
@ -326,7 +326,7 @@ public class NodeJoinTests extends ESTestCase {
long initialTerm = randomLongBetween(1, 10);
long initialVersion = randomLongBetween(1, 10);
setupFakeMasterServiceAndCoordinator(initialTerm, initialState(node0, initialTerm, initialVersion,
new VotingConfiguration(Collections.singleton(node0.getId()))));
VotingConfiguration.of(node0)));
assertFalse(isLocalNodeElectedMaster());
long newTerm = initialTerm + randomLongBetween(1, 10);
joinNodeAndRun(new JoinRequest(node0, newTerm, Optional.of(new Join(node0, node0, newTerm, initialTerm, initialVersion))));
@ -343,7 +343,7 @@ public class NodeJoinTests extends ESTestCase {
long initialTerm = randomLongBetween(1, 10);
long initialVersion = randomLongBetween(1, 10);
setupFakeMasterServiceAndCoordinator(initialTerm, initialState(node0, initialTerm, initialVersion,
new VotingConfiguration(Collections.singleton(node0.getId()))));
VotingConfiguration.of(node0)));
long newTerm = initialTerm + randomLongBetween(1, 10);
joinNodeAndRun(new JoinRequest(node0, newTerm, Optional.of(new Join(node0, node0, newTerm, initialTerm, initialVersion))));
@ -362,7 +362,7 @@ public class NodeJoinTests extends ESTestCase {
long initialTerm = randomLongBetween(1, 10);
long initialVersion = randomLongBetween(1, 10);
setupFakeMasterServiceAndCoordinator(initialTerm, initialState(node0, initialTerm, initialVersion,
new VotingConfiguration(Collections.singleton(node2.getId()))));
VotingConfiguration.of(node2)));
assertFalse(isLocalNodeElectedMaster());
long newTerm = initialTerm + randomLongBetween(1, 10);
SimpleFuture futNode0 = joinNodeAsync(new JoinRequest(node0, newTerm, Optional.of(
@ -389,7 +389,7 @@ public class NodeJoinTests extends ESTestCase {
long initialTerm = randomLongBetween(1, 10);
long initialVersion = randomLongBetween(1, 10);
setupFakeMasterServiceAndCoordinator(initialTerm, initialState(node0, initialTerm, initialVersion,
new VotingConfiguration(Collections.singleton(node0.getId()))));
VotingConfiguration.of(node0)));
long newTerm = initialTerm + randomLongBetween(1, 10);
handleStartJoinFrom(node1, newTerm);
handleFollowerCheckFrom(node1, newTerm);
@ -464,7 +464,7 @@ public class NodeJoinTests extends ESTestCase {
long initialTerm = randomLongBetween(1, 10);
long initialVersion = randomLongBetween(1, 10);
setupFakeMasterServiceAndCoordinator(initialTerm, initialState(node0, initialTerm, initialVersion,
new VotingConfiguration(Collections.singleton(node0.getId()))));
VotingConfiguration.of(node0)));
long newTerm = initialTerm + randomLongBetween(1, 10);
handleStartJoinFrom(node1, newTerm);
handleFollowerCheckFrom(node1, newTerm);
@ -480,7 +480,7 @@ public class NodeJoinTests extends ESTestCase {
long initialTerm = randomLongBetween(1, 10);
long initialVersion = randomLongBetween(1, 10);
setupFakeMasterServiceAndCoordinator(initialTerm, initialState(node0, initialTerm, initialVersion,
new VotingConfiguration(Collections.singleton(node1.getId()))));
VotingConfiguration.of(node1)));
long newTerm = initialTerm + randomLongBetween(1, 10);
SimpleFuture fut = joinNodeAsync(new JoinRequest(node0, newTerm,
Optional.of(new Join(node0, node0, newTerm, initialTerm, initialVersion))));

View File

@ -37,14 +37,12 @@ import org.elasticsearch.transport.TransportService;
import org.junit.Before;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
import static java.util.Collections.emptySet;
import static org.elasticsearch.cluster.coordination.PreVoteCollector.REQUEST_PRE_VOTE_ACTION_NAME;
@ -135,8 +133,7 @@ public class PreVoteCollectorTests extends ESTestCase {
}
private ClusterState makeClusterState(DiscoveryNode[] votingNodes) {
final VotingConfiguration votingConfiguration
= new VotingConfiguration(Arrays.stream(votingNodes).map(DiscoveryNode::getId).collect(Collectors.toSet()));
final VotingConfiguration votingConfiguration = VotingConfiguration.of(votingNodes);
return CoordinationStateTests.clusterState(lastAcceptedTerm, lastAcceptedVersion, localNode,
votingConfiguration, votingConfiguration, 0);
}

View File

@ -176,7 +176,7 @@ public class PublicationTests extends ESTestCase {
}
public void testSimpleClusterStatePublishing() throws InterruptedException {
VotingConfiguration singleNodeConfig = new VotingConfiguration(Sets.newHashSet(n1.getId()));
VotingConfiguration singleNodeConfig = VotingConfiguration.of(n1);
initializeCluster(singleNodeConfig);
AssertingAckListener ackListener = new AssertingAckListener(nodes.size());
@ -252,7 +252,7 @@ public class PublicationTests extends ESTestCase {
}
public void testClusterStatePublishingWithFaultyNodeBeforeCommit() throws InterruptedException {
VotingConfiguration singleNodeConfig = new VotingConfiguration(Sets.newHashSet(n1.getId()));
VotingConfiguration singleNodeConfig = VotingConfiguration.of(n1);
initializeCluster(singleNodeConfig);
AssertingAckListener ackListener = new AssertingAckListener(nodes.size());
@ -295,7 +295,7 @@ public class PublicationTests extends ESTestCase {
}
public void testClusterStatePublishingWithFaultyNodeAfterCommit() throws InterruptedException {
VotingConfiguration singleNodeConfig = new VotingConfiguration(Sets.newHashSet(n1.getId()));
VotingConfiguration singleNodeConfig = VotingConfiguration.of(n1);
initializeCluster(singleNodeConfig);
AssertingAckListener ackListener = new AssertingAckListener(nodes.size());
@ -348,7 +348,7 @@ public class PublicationTests extends ESTestCase {
}
public void testClusterStatePublishingFailsOrTimesOutBeforeCommit() throws InterruptedException {
VotingConfiguration config = new VotingConfiguration(Sets.newHashSet(n1.getId(), n2.getId()));
VotingConfiguration config = VotingConfiguration.of(n1, n2);
initializeCluster(config);
AssertingAckListener ackListener = new AssertingAckListener(nodes.size());
@ -387,7 +387,7 @@ public class PublicationTests extends ESTestCase {
}
public void testPublishingToMastersFirst() {
VotingConfiguration singleNodeConfig = new VotingConfiguration(Sets.newHashSet(n1.getId()));
VotingConfiguration singleNodeConfig = VotingConfiguration.of(n1);
initializeCluster(singleNodeConfig);
DiscoveryNodes.Builder discoNodesBuilder = DiscoveryNodes.builder();
@ -403,8 +403,7 @@ public class PublicationTests extends ESTestCase {
}
public void testClusterStatePublishingTimesOutAfterCommit() throws InterruptedException {
VotingConfiguration config = new VotingConfiguration(randomBoolean() ?
Sets.newHashSet(n1.getId(), n2.getId()) : Sets.newHashSet(n1.getId(), n2.getId(), n3.getId()));
VotingConfiguration config = randomBoolean() ? VotingConfiguration.of(n1, n2): VotingConfiguration.of(n1, n2, n3);
initializeCluster(config);
AssertingAckListener ackListener = new AssertingAckListener(nodes.size());