Alpha
Alpha

Reputation: 7868

Hazelcast: cannot join cluster if using programmatic config

I'm trying to manually configure Hazelcast 2.5.1 instances through the use of their programmatic API, but I find that it has different behaviors when doing -- supposedly -- similar things.

So, my first approach is rather rudimentary, which is:

String confString = "<hazelcast><network><port auto-increment=\"true\">10555</port><join><multicast enabled=\"false\" /><tcp-ip enabled=\"true\"><interface>127.0.0.1</interface></tcp-ip></join><ssl enabled=\"false\" /></network></hazelcast>";
Config config = new InMemoryXmlConfig(confString);
Hazelcast.newHazelcastInstance(config);

This will work and starting different instances will allow them to join the cluster. For readability purposes, here's the XML I'm building in memory:

<hazelcast>
    <network>
        <port auto-increment="true">10555</port>
        <join>
            <multicast enabled="false" />
            <tcp-ip enabled="true">
                <interface>127.0.0.1</interface>
            </tcp-ip>
        </join>
        <ssl enabled="false" />
    </network>
</hazelcast>

Starting different instances of this will make them join the cluster, which is the behavior that I want.


However, when I try to do this programatically, Hazelcast won't allow new instances to join and will complain with the following error:

Jul 09, 2015 9:39:33 AM com.hazelcast.impl.Node
WARNING: [127.0.0.1]:10556 [dev] Config seed port is 10555 and cluster size is 1. Some of the ports seem occupied!

This is the code that is supposed to do the same thing programatically:

Config config = new Config();

config.setInstanceName("HazelcastService");
config.getNetworkConfig().setPortAutoIncrement(true);
config.getNetworkConfig().setPort(10555);
config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);
config.getNetworkConfig().getJoin().getTcpIpConfig().setEnabled(true);
config.getNetworkConfig().getInterfaces().addInterface("127.0.0.1");
config.getNetworkConfig().getInterfaces().setEnabled(true);

SSLConfig sslConfig = new SSLConfig();
sslConfig.setEnabled(false);
config.getNetworkConfig().setSSLConfig(sslConfig);

Hazelcast.newHazelcastInstance(config);

What am I missing?

Upvotes: 2

Views: 4731

Answers (1)

wantstoknow
wantstoknow

Reputation: 86

Interfaces you added in java code are not the same you added in xml.
This is what you set in java code - http://docs.hazelcast.org/docs/2.5/manual/html-single/#ConfigSpecifyInterfaces
For your configuration to work - you should add this

config.getNetworkConfig().getJoin().getTcpIpConfig().addMember("127.0.0.1");

Upvotes: 3

Related Questions