private Map<String, String> createAddressToDomainMap(TcpIpConfig tcpIpConfig) { if (!tcpIpConfig.isEnabled()) { return Collections.emptyMap(); } Collection<String> possibleAddresses = TcpIpJoiner.getConfigurationMembers(config); // LinkedHashMap is to guarantee order Map<String, String> addressDomainMap = createLinkedHashMap(possibleAddresses.size()); for (String possibleAddress : possibleAddresses) { String addressHolder = AddressUtil.getAddressHolder(possibleAddress).getAddress(); if (AddressUtil.isIpAddress(addressHolder)) { // there may be a domain registered for this address if (!addressDomainMap.containsKey(addressHolder)) { addressDomainMap.put(addressHolder, null); } } else { try { Collection<String> addresses = resolveDomainNames(addressHolder); for (String address : addresses) { addressDomainMap.put(address, addressHolder); } } catch (UnknownHostException e) { logger.warning("Cannot resolve hostname: '" + addressHolder + "'"); } } } return addressDomainMap; }
private Map<String, String> createAddressToDomainMap(TcpIpConfig tcpIpConfig) { if (!tcpIpConfig.isEnabled()) { return Collections.emptyMap(); } Collection<String> possibleAddresses = TcpIpJoiner.getConfigurationMembers(config); // LinkedHashMap is to guarantee order Map<String, String> addressDomainMap = createLinkedHashMap(possibleAddresses.size()); for (String possibleAddress : possibleAddresses) { String addressHolder = AddressUtil.getAddressHolder(possibleAddress).getAddress(); if (AddressUtil.isIpAddress(addressHolder)) { // there may be a domain registered for this address if (!addressDomainMap.containsKey(addressHolder)) { addressDomainMap.put(addressHolder, null); } } else { try { Collection<String> addresses = resolveDomainNames(addressHolder); for (String address : addresses) { addressDomainMap.put(address, addressHolder); } } catch (UnknownHostException e) { logger.warning("Cannot resolve hostname: '" + addressHolder + "'"); } } } return addressDomainMap; }
/** * Build a Hazelcast {@link com.hazelcast.config.Config}. * * @return the Hazelcast configuration. */ public Config getHazelcastConfig() { System.setProperty("hazelcast.config", xmlConfigLocation); Config config = new XmlConfigBuilder().build(); if (System.getProperty("hazelcast.instanceName") != null) { config.setInstanceName(System.getProperty("hazelcast.instanceName")); } else { config.setInstanceName("cellar"); } if (config.getNetworkConfig().getJoin().getTcpIpConfig().isEnabled() && discoveredMemberSet != null) { if (discoveryServices != null && !discoveryServices.isEmpty()) { for (DiscoveryService service : discoveryServices) { service.refresh(); Set<String> discovered = service.discoverMembers(); discoveredMemberSet.addAll(discovered); LOGGER.trace("HAZELCAST STARTUP DISCOVERY: service {} found members {}", service, discovered); } } TcpIpConfig tcpIpConfig = config.getNetworkConfig().getJoin().getTcpIpConfig(); tcpIpConfig.getMembers().addAll(discoveredMemberSet); } return config; }
/** * Build a Hazelcast {@link com.hazelcast.config.Config}. * * @return the Hazelcast configuration. */ public Config getHazelcastConfig() { System.setProperty("hazelcast.config", xmlConfigLocation); Config config = new XmlConfigBuilder().build(); if (System.getProperty("hazelcast.instanceName") != null) { config.setInstanceName(System.getProperty("hazelcast.instanceName")); } else { config.setInstanceName("cellar"); } if (config.getNetworkConfig().getJoin().getTcpIpConfig().isEnabled() && discoveredMemberSet != null) { if (discoveryServices != null && !discoveryServices.isEmpty()) { for (DiscoveryService service : discoveryServices) { service.refresh(); Set<String> discovered = service.discoverMembers(); discoveredMemberSet.addAll(discovered); LOGGER.trace("HAZELCAST STARTUP DISCOVERY: service {} found members {}", service, discovered); } } TcpIpConfig tcpIpConfig = config.getNetworkConfig().getJoin().getTcpIpConfig(); tcpIpConfig.getMembers().addAll(discoveredMemberSet); } return config; }
private List<InterfaceDefinition> getInterfaces() { NetworkConfig networkConfig = config.getNetworkConfig(); TcpIpConfig tcpIpConfig = networkConfig.getJoin().getTcpIpConfig(); // address -> domain Map<String, String> addressDomainMap = createAddressToDomainMap(tcpIpConfig); // must preserve insertion order List<InterfaceDefinition> interfaceDefs = new ArrayList<InterfaceDefinition>(); if (networkConfig.getInterfaces().isEnabled()) { Collection<String> configInterfaces = networkConfig.getInterfaces().getInterfaces(); for (String configInterface : configInterfaces) { if (!AddressUtil.isIpAddress(configInterface)) { logger.warning("'" + configInterface + "' is not an IP address! Removing from interface list."); continue; } // add interfaces matching to members in TcpIpConfig appendMatchingInterfaces(interfaceDefs, addressDomainMap, configInterface); // add default interface definition interfaceDefs.add(new InterfaceDefinition(null, configInterface)); } logger.info("Interfaces is enabled, trying to pick one address matching to one of: " + interfaceDefs); } else if (tcpIpConfig.isEnabled()) { for (Entry<String, String> entry : addressDomainMap.entrySet()) { interfaceDefs.add(new InterfaceDefinition(entry.getValue(), entry.getKey())); } logger.info("Interfaces is disabled, trying to pick one address from TCP-IP config addresses: " + interfaceDefs); } return interfaceDefs; }
private List<InterfaceDefinition> getInterfaces() { NetworkConfig networkConfig = config.getNetworkConfig(); TcpIpConfig tcpIpConfig = networkConfig.getJoin().getTcpIpConfig(); // address -> domain Map<String, String> addressDomainMap = createAddressToDomainMap(tcpIpConfig); // must preserve insertion order List<InterfaceDefinition> interfaceDefs = new ArrayList<InterfaceDefinition>(); if (networkConfig.getInterfaces().isEnabled()) { Collection<String> configInterfaces = networkConfig.getInterfaces().getInterfaces(); for (String configInterface : configInterfaces) { if (!AddressUtil.isIpAddress(configInterface)) { logger.warning("'" + configInterface + "' is not an IP address! Removing from interface list."); continue; } // add interfaces matching to members in TcpIpConfig appendMatchingInterfaces(interfaceDefs, addressDomainMap, configInterface); // add default interface definition interfaceDefs.add(new InterfaceDefinition(null, configInterface)); } logger.info("Interfaces is enabled, trying to pick one address matching to one of: " + interfaceDefs); } else if (tcpIpConfig.isEnabled()) { for (Entry<String, String> entry : addressDomainMap.entrySet()) { interfaceDefs.add(new InterfaceDefinition(entry.getValue(), entry.getKey())); } logger.info("Interfaces is disabled, trying to pick one address from TCP-IP config addresses: " + interfaceDefs); } return interfaceDefs; }
private AddressDefinition pickInterfaceAddressDef() throws UnknownHostException, SocketException { Collection<InterfaceDefinition> interfaces = getInterfaces(); if (interfaces.contains(new InterfaceDefinition("localhost", "127.0.0.1"))) { return pickLoopbackAddress("localhost"); } if (interfaces.contains(new InterfaceDefinition("127.0.0.1"))) { return pickLoopbackAddress(null); } logger.info("Prefer IPv4 stack is " + preferIPv4Stack() + ", prefer IPv6 addresses is " + preferIPv6Addresses()); if (interfaces.size() > 0) { AddressDefinition addressDef = pickMatchingAddress(interfaces); if (addressDef != null) { return addressDef; } } NetworkConfig networkConfig = config.getNetworkConfig(); if (networkConfig.getInterfaces().isEnabled()) { String msg = "Hazelcast CANNOT start on this node. No matching network interface found.\n" + "Interface matching must be either disabled or updated in the hazelcast.xml config file."; logger.severe(msg); throw new RuntimeException(msg); } if (networkConfig.getJoin().getTcpIpConfig().isEnabled()) { logger.warning("Could not find a matching address to start with! Picking one of non-loopback addresses."); } return pickMatchingAddress(null); }
private AddressDefinition pickInterfaceAddressDef() throws UnknownHostException, SocketException { Collection<InterfaceDefinition> interfaces = getInterfaces(); if (interfaces.contains(new InterfaceDefinition("localhost", "127.0.0.1"))) { return pickLoopbackAddress("localhost"); } if (interfaces.contains(new InterfaceDefinition("127.0.0.1"))) { return pickLoopbackAddress(null); } logger.info("Prefer IPv4 stack is " + preferIPv4Stack() + ", prefer IPv6 addresses is " + preferIPv6Addresses()); if (interfaces.size() > 0) { AddressDefinition addressDef = pickMatchingAddress(interfaces); if (addressDef != null) { return addressDef; } } NetworkConfig networkConfig = config.getNetworkConfig(); if (networkConfig.getInterfaces().isEnabled()) { String msg = "Hazelcast CANNOT start on this node. No matching network interface found.\n" + "Interface matching must be either disabled or updated in the hazelcast.xml config file."; logger.severe(msg); throw new RuntimeException(msg); } if (networkConfig.getJoin().getTcpIpConfig().isEnabled()) { logger.warning("Could not find a matching address to start with! Picking one of non-loopback addresses."); } return pickMatchingAddress(null); }
private static void tcpConfigXmlGenerator(XmlGenerator gen, JoinConfig join) { TcpIpConfig c = join.getTcpIpConfig(); gen.open("tcp-ip", "enabled", c.isEnabled(), "connection-timeout-seconds", c.getConnectionTimeoutSeconds()) .open("member-list"); for (String m : c.getMembers()) { gen.node("member", m); } gen.close() .node("required-member", c.getRequiredMember()) .close(); }
private static void tcpConfigXmlGenerator(XmlGenerator gen, JoinConfig join) { TcpIpConfig c = join.getTcpIpConfig(); gen.open("tcp-ip", "enabled", c.isEnabled(), "connection-timeout-seconds", c.getConnectionTimeoutSeconds()) .open("member-list"); for (String m : c.getMembers()) { gen.node("member", m); } gen.close() .node("required-member", c.getRequiredMember()) .close(); }
public void verify() { int countEnabled = 0; if (getTcpIpConfig().isEnabled()) { countEnabled++;
public void verify() { int countEnabled = 0; if (getTcpIpConfig().isEnabled()) { countEnabled++;
Joiner createJoiner() { JoinConfig join = config.getNetworkConfig().getJoin(); join.verify(); if (properties.getBoolean(DISCOVERY_SPI_ENABLED) || isAnyAliasedConfigEnabled(join)) { //TODO: Auto-Upgrade Multicast+AWS configuration! logger.info("Activating Discovery SPI Joiner"); return new DiscoveryJoiner(this, discoveryService, usePublicAddress(join)); } else { if (join.getMulticastConfig().isEnabled() && multicastService != null) { logger.info("Creating MulticastJoiner"); return new MulticastJoiner(this); } else if (join.getTcpIpConfig().isEnabled()) { logger.info("Creating TcpIpJoiner"); return new TcpIpJoiner(this); } else if (join.getAwsConfig().isEnabled()) { logger.info("Creating AWSJoiner"); return createAwsJoiner(); } } return null; }
Joiner createJoiner() { JoinConfig join = config.getNetworkConfig().getJoin(); join.verify(); if (properties.getBoolean(DISCOVERY_SPI_ENABLED) || isAnyAliasedConfigEnabled(join)) { //TODO: Auto-Upgrade Multicast+AWS configuration! logger.info("Activating Discovery SPI Joiner"); return new DiscoveryJoiner(this, discoveryService, usePublicAddress(join)); } else { if (join.getMulticastConfig().isEnabled() && multicastService != null) { logger.info("Creating MulticastJoiner"); return new MulticastJoiner(this); } else if (join.getTcpIpConfig().isEnabled()) { logger.info("Creating TcpIpJoiner"); return new TcpIpJoiner(this); } else if (join.getAwsConfig().isEnabled()) { logger.info("Creating AWSJoiner"); return createAwsJoiner(); } } return null; }
private void assertHazelcastConfig(Config cfg) { assertTrue(cfg.getManagedContext() instanceof SpringManagedContext); assertEquals("jet-spring", cfg.getGroupConfig().getName()); assertEquals("jet-spring-pass", cfg.getGroupConfig().getPassword()); NetworkConfig networkConfig = cfg.getNetworkConfig(); assertEquals(5707, networkConfig.getPort()); assertFalse(networkConfig.isPortAutoIncrement()); JoinConfig join = networkConfig.getJoin(); assertFalse(join.getMulticastConfig().isEnabled()); TcpIpConfig tcpIpConfig = join.getTcpIpConfig(); assertTrue(tcpIpConfig.isEnabled()); List<String> members = tcpIpConfig.getMembers(); assertEquals(1, members.size()); assertEquals("127.0.0.1:5707", members.get(0)); assertEquals(3, cfg.getMapConfig("map").getBackupCount()); } }