use of com.hazelcast.config.NetworkConfig in project hazelcast by hazelcast.
the class SplitBrainHandlerTest method testClusterMerge_when_split_not_detected_by_slave.
@Test
public // https://github.com/hazelcast/hazelcast/issues/8137
void testClusterMerge_when_split_not_detected_by_slave() throws InterruptedException {
Config config = new Config();
String groupName = generateRandomString(10);
config.getGroupConfig().setName(groupName);
config.setProperty(GroupProperty.MERGE_FIRST_RUN_DELAY_SECONDS.getName(), "10");
config.setProperty(GroupProperty.MERGE_NEXT_RUN_DELAY_SECONDS.getName(), "10");
config.setProperty(GroupProperty.MAX_NO_HEARTBEAT_SECONDS.getName(), "15");
config.setProperty(GroupProperty.MAX_JOIN_SECONDS.getName(), "10");
config.setProperty(GroupProperty.MAX_JOIN_MERGE_TARGET_SECONDS.getName(), "10");
NetworkConfig networkConfig = config.getNetworkConfig();
networkConfig.getJoin().getMulticastConfig().setEnabled(false);
networkConfig.getJoin().getTcpIpConfig().setEnabled(true).addMember("127.0.0.1");
HazelcastInstance hz1 = newHazelcastInstance(config, "test-node1", new FirewallingNodeContext());
HazelcastInstance hz2 = newHazelcastInstance(config, "test-node2", new FirewallingNodeContext());
HazelcastInstance hz3 = newHazelcastInstance(config, "test-node3", new FirewallingNodeContext());
Node n1 = TestUtil.getNode(hz1);
Node n2 = TestUtil.getNode(hz2);
final Node n3 = TestUtil.getNode(hz3);
final CountDownLatch splitLatch = new CountDownLatch(2);
MembershipAdapter membershipAdapter = new MembershipAdapter() {
@Override
public void memberRemoved(MembershipEvent event) {
if (n3.getLocalMember().equals(event.getMember())) {
splitLatch.countDown();
}
}
};
hz1.getCluster().addMembershipListener(membershipAdapter);
hz2.getCluster().addMembershipListener(membershipAdapter);
final CountDownLatch mergeLatch = new CountDownLatch(1);
hz3.getLifecycleService().addLifecycleListener(new MergedEventLifeCycleListener(mergeLatch));
FirewallingTcpIpConnectionManager cm1 = getFireWalledConnectionManager(hz1);
FirewallingTcpIpConnectionManager cm2 = getFireWalledConnectionManager(hz2);
FirewallingTcpIpConnectionManager cm3 = getFireWalledConnectionManager(hz3);
cm3.block(n1.address);
cm3.block(n2.address);
n1.clusterService.removeAddress(n3.address, null);
n2.clusterService.removeAddress(n3.address, null);
cm1.block(n3.address);
cm2.block(n3.address);
assertTrue(splitLatch.await(30, TimeUnit.SECONDS));
assertEquals(2, hz1.getCluster().getMembers().size());
assertEquals(2, hz2.getCluster().getMembers().size());
assertEquals(3, hz3.getCluster().getMembers().size());
cm3.unblock(n1.address);
cm1.unblock(n3.address);
cm2.unblock(n3.address);
assertTrue(mergeLatch.await(120, TimeUnit.SECONDS));
assertEquals(3, hz1.getCluster().getMembers().size());
assertEquals(3, hz2.getCluster().getMembers().size());
assertEquals(3, hz3.getCluster().getMembers().size());
assertEquals(n1.getThisAddress(), n1.getMasterAddress());
assertEquals(n1.getThisAddress(), n2.getMasterAddress());
assertEquals(n1.getThisAddress(), n3.getMasterAddress());
}
use of com.hazelcast.config.NetworkConfig in project hazelcast by hazelcast.
the class SplitBrainHandlerTest method testClusterMerge.
private void testClusterMerge(boolean multicast) throws Exception {
Config config1 = new Config();
config1.setProperty(GroupProperty.MERGE_FIRST_RUN_DELAY_SECONDS.getName(), "5");
config1.setProperty(GroupProperty.MERGE_NEXT_RUN_DELAY_SECONDS.getName(), "3");
String firstGroupName = generateRandomString(10);
config1.getGroupConfig().setName(firstGroupName);
NetworkConfig networkConfig1 = config1.getNetworkConfig();
JoinConfig join1 = networkConfig1.getJoin();
join1.getMulticastConfig().setEnabled(multicast);
join1.getTcpIpConfig().setEnabled(!multicast);
join1.getTcpIpConfig().addMember("127.0.0.1");
Config config2 = new Config();
config2.setProperty(GroupProperty.MERGE_FIRST_RUN_DELAY_SECONDS.getName(), "5");
config2.setProperty(GroupProperty.MERGE_NEXT_RUN_DELAY_SECONDS.getName(), "3");
String secondGroupName = generateRandomString(10);
config2.getGroupConfig().setName(secondGroupName);
NetworkConfig networkConfig2 = config2.getNetworkConfig();
JoinConfig join2 = networkConfig2.getJoin();
join2.getMulticastConfig().setEnabled(multicast);
join2.getTcpIpConfig().setEnabled(!multicast);
join2.getTcpIpConfig().addMember("127.0.0.1");
HazelcastInstance h1 = Hazelcast.newHazelcastInstance(config1);
HazelcastInstance h2 = Hazelcast.newHazelcastInstance(config2);
LifecycleCountingListener l = new LifecycleCountingListener();
h2.getLifecycleService().addLifecycleListener(l);
assertEquals(1, h1.getCluster().getMembers().size());
assertEquals(1, h2.getCluster().getMembers().size());
// warning: assuming group name will be visible to the split brain handler!
config1.getGroupConfig().setName(secondGroupName);
assertTrue(l.waitFor(LifecycleState.MERGED, 30));
assertEquals(1, l.getCount(LifecycleState.MERGING));
assertEquals(1, l.getCount(LifecycleState.MERGED));
assertEquals(2, h1.getCluster().getMembers().size());
assertEquals(2, h2.getCluster().getMembers().size());
assertEquals(ACTIVE, h1.getCluster().getClusterState());
assertEquals(ACTIVE, h2.getCluster().getClusterState());
}
use of com.hazelcast.config.NetworkConfig in project hazelcast by hazelcast.
the class SplitBrainHandlerTest method testClusterShouldNotMergeDifferentGroupName.
@Test
public void testClusterShouldNotMergeDifferentGroupName() throws Exception {
Config config1 = new Config();
config1.setProperty(GroupProperty.MERGE_FIRST_RUN_DELAY_SECONDS.getName(), "5");
config1.setProperty(GroupProperty.MERGE_NEXT_RUN_DELAY_SECONDS.getName(), "3");
String firstGroupName = generateRandomString(10);
config1.getGroupConfig().setName(firstGroupName);
NetworkConfig networkConfig1 = config1.getNetworkConfig();
JoinConfig join1 = networkConfig1.getJoin();
join1.getMulticastConfig().setEnabled(true);
join1.getTcpIpConfig().addMember("127.0.0.1");
Config config2 = new Config();
config2.setProperty(GroupProperty.MERGE_FIRST_RUN_DELAY_SECONDS.getName(), "5");
config2.setProperty(GroupProperty.MERGE_NEXT_RUN_DELAY_SECONDS.getName(), "3");
String secondGroupName = generateRandomString(10);
config2.getGroupConfig().setName(secondGroupName);
NetworkConfig networkConfig2 = config2.getNetworkConfig();
JoinConfig join2 = networkConfig2.getJoin();
join2.getMulticastConfig().setEnabled(true);
join2.getTcpIpConfig().addMember("127.0.0.1");
HazelcastInstance h1 = Hazelcast.newHazelcastInstance(config1);
HazelcastInstance h2 = Hazelcast.newHazelcastInstance(config2);
LifecycleCountingListener l = new LifecycleCountingListener();
h2.getLifecycleService().addLifecycleListener(l);
assertEquals(1, h1.getCluster().getMembers().size());
assertEquals(1, h2.getCluster().getMembers().size());
HazelcastTestSupport.sleepSeconds(10);
assertEquals(0, l.getCount(LifecycleState.MERGING));
assertEquals(0, l.getCount(LifecycleState.MERGED));
assertEquals(1, h1.getCluster().getMembers().size());
assertEquals(1, h2.getCluster().getMembers().size());
}
use of com.hazelcast.config.NetworkConfig in project hazelcast by hazelcast.
the class MemberListTest method buildConfig.
private static Config buildConfig(boolean multicastEnabled) {
Config config = new Config();
config.getGroupConfig().setName("group").setPassword("pass");
config.setProperty(GroupProperty.MERGE_FIRST_RUN_DELAY_SECONDS.getName(), "10");
config.setProperty(GroupProperty.MERGE_NEXT_RUN_DELAY_SECONDS.getName(), "5");
config.setProperty(GroupProperty.MAX_NO_HEARTBEAT_SECONDS.getName(), "10");
config.setProperty(GroupProperty.MASTER_CONFIRMATION_INTERVAL_SECONDS.getName(), "2");
config.setProperty(GroupProperty.MAX_NO_MASTER_CONFIRMATION_SECONDS.getName(), "10");
config.setProperty(GroupProperty.MEMBER_LIST_PUBLISH_INTERVAL_SECONDS.getName(), "10");
final NetworkConfig networkConfig = config.getNetworkConfig();
networkConfig.getJoin().getMulticastConfig().setEnabled(multicastEnabled);
networkConfig.getJoin().getTcpIpConfig().setEnabled(!multicastEnabled);
networkConfig.setPortAutoIncrement(false);
return config;
}
use of com.hazelcast.config.NetworkConfig in project hazelcast by hazelcast.
the class MulticastJoinTest method test.
@Test
public void test() throws Exception {
Config config = new Config();
NetworkConfig networkConfig = config.getNetworkConfig();
JoinConfig join = networkConfig.getJoin();
join.getTcpIpConfig().setEnabled(false);
MulticastConfig multicastConfig = join.getMulticastConfig();
multicastConfig.setEnabled(true);
testJoin(config);
}
Aggregations