# Discovery module 0.8.0

**URL:** <https://discuss.elastic.co/t/discovery-module-0-8-0/2992>\
**Category:** Elasticsearch\
**Created:** [June 2, 2010, 7:33pm UTC](https://discuss.elastic.co/t/discovery-module-0-8-0/2992 "2010-06-02T19:33:18Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Lenak](https://avatars.discourse-cdn.com/v4/letter/l/96bed5/32.png) [@Lenak](https://discuss.elastic.co/u/Lenak)\
**Post date:** [June 2, 2010, 7:33pm UTC](https://discuss.elastic.co/t/discovery-module-0-8-0/2992/1 "2010-06-02T19:33:18Z")

</div>

I am working with ES 0.8.0.  
I have cluster with two nodes

Node1 – ES server - data not client  
Node2 - Java application with embedded ES node – client, no data

Discovery mechanism working fine (master switch and nodes restart) when I configure both nodes to work with JGROUP UDP discovery.

When I try to work with ZEN or JGROUP TCP “master” switch does not work.

My scenario was:

Start Node1 first.  
Now I can start/stop Node2 and it will connect to master as well as first time each time and no any problem.  
I stopped Node1, Node2 got “Master”.  
Start again Node1 then:

Jgroup TCP discovery:  
Node1 was started as master without connection to Node2 . I got two masters.

Zen discovery:  
I got the following error

[22:04:31,679][INFO][node] [Everyman] {ElasticSearch/0.8.0}[6264]: Initializing ...  
[22:04:31,688][INFO][plugins] [Everyman] Loaded [discovery-jgroups]  
[22:04:32,292][INFO][node] [Everyman] {ElasticSearch/0.8.0}[6264]: Initialized  
[22:04:32,292][INFO][node] [Everyman] {ElasticSearch/0.8.0}[6264]: Starting ...  
[22:04:32,457][INFO][transport] [Everyman] bound\_address[inet[/0.0.0.0:9300]], publish\_address[inet[/192.168.0.175:9300]]  
[22:04:35,611][WARN][discovery.zen] [Everyman] Failed to send join request to master [[Smythe, Alistair][9999fa3d-c91b-4426-97a6-3a067d5fd51f][inet[/192.168.0.175:9300]]], retrying...  
org.elasticsearch.transport.RemoteTransportException: [Everyman][inet[/192.168.0.175:9300]][discovery/zen/join]  
Caused by: org.elasticsearch.ElasticSearchIllegalStateException: Node [[Everyman][7f245178-8d30-4448-9dc9-8092a7c01372][inet[/192.168.0.175:9300]]] not master for join request from [[Everyman][7f245178-8d30-4  
:9300]]]  
at org.elasticsearch.discovery.zen.ZenDiscovery.handleJoinRequest(ZenDiscovery.java:386)  
at org.elasticsearch.discovery.zen.ZenDiscovery.access$900(ZenDiscovery.java:58)  
at org.elasticsearch.discovery.zen.ZenDiscovery$MembershipListener.onJoin(ZenDiscovery.java:450)  
at org.elasticsearch.discovery.zen.membership.MembershipAction$JoinRequestRequestHandler.messageReceived(MembershipAction.java:113)  
at org.elasticsearch.discovery.zen.membership.MembershipAction$JoinRequestRequestHandler.messageReceived(MembershipAction.java:104)  
at org.elasticsearch.transport.netty.MessageChannelHandler$3.run(MessageChannelHandler.java:175)  
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)  
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)  
at java.lang.Thread.run(Thread.java:619)  
[22:04:38,631][WARN][discovery.zen] [Everyman] Failed to send join request to master [[Smythe, Alistair][9999fa3d-c91b-4426-97a6-3a067d5fd51f][inet[/192.168.0.175:9300]]], retrying...  
org.elasticsearch.transport.RemoteTransportException: [Everyman][inet[/192.168.0.175:9300]][discovery/zen/join]  
Caused by: org.elasticsearch.ElasticSearchIllegalStateException: Node [[Everyman][7f245178-8d30-4448-9dc9-8092a7c01372][inet[/192.168.0.175:9300]]] not master for join request from [[Everyman][7f245178-8d30-4  
:9300]]]

My configuration file  
cluster:  
name:

transport:  
netty:  
reuse\_address: false

discovery:  
type: zen or jgroups  
jgroups:  
config: tcp  
bind\_port: 7800  
bind\_addr:   
tcpping:  
initial\_hosts: [7800]

Client node configuration

```
	// General settings
	Properties props = System.getProperties();
	props.setProperty("java.net.preferIPv4Stack", "true");
	props.setProperty("transport.netty.reuse_address", "false");
	System.setProperties(props);

	//Create settings builder
	ImmutableSettings.Builder builder = ImmutableSettings.settingsBuilder();

	if (discoveryType.equals(DISCOVERY_JGROUP_TCP)){
		logger.info("Jgroups " + DISCOVERY_JGROUP_TCP + " discovery will start");
		builder.put("discovery.type", "jgroups");
		builder.put("discovery.jgroups.config", "tcp");
		builder.put("discovery.jgroups.bind_port", JGROUP_TCP_PORT);
		builder.put("discovery.jgroups.bind_addr", hostName);
		builder.put("discovery.jgroups.tcpping.initial_hosts", hostName	+ "["+ JGROUP_TCP_PORT +"]");

	}else if (discoveryType.equals(DISCOVERY_JGROUP_UDP)){
		logger.info("Jgroups " + DISCOVERY_JGROUP_UDP + "discovery will start");
		builder.put("discovery.type", "jgroups");
		builder.put("discovery.jgroups.config", "udp");

	}else{
		//Set discovery to DISCOVERY_ZEN default
		logger.info("Default " + DISCOVERY_ZEN + "discovery will start");
		builder.put("discovery.type", "zen");
	}

```

I try to get cluster nodes status with  
curl -XGET '[http://localhost:9200/\_cluster/nodes](http://localhost:9200/_cluster/nodes)'  
So, when only Node1 running I got node status . When Node2 was connected to cluster I got  
repose like  
{"error":"JsonGenerationException[Can not write a field name, expecting a value]"}

Thanks  
Lena

---

<div class="post-metadata">

**Author:** ![kimchy](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kimchy/32/44952_2.png) [@kimchy](https://discuss.elastic.co/u/kimchy)\
**Post date:** [June 4, 2010, 10:14pm UTC](https://discuss.elastic.co/t/discovery-module-0-8-0/2992/2 "2010-06-04T22:14:55Z")

</div>

I don't see where you configure for zen discovery the lists of hosts it uses  
(I assume you don't want to use multicast)? For example:

discovery.zen.ping.unicast.hosts: host1:9300,host2:9300,host3:9300

When you close the nodes, is that through graceful shutdown (kill pid, or  
Ctrl+c), or through kill -9?

-shay.banon

On Wed, Jun 2, 2010 at 10:33 PM, Lenak [lenakovganov@gmail.com](mailto:lenakovganov@gmail.com) wrote:

> I am working with ES 0.8.0.  
> I have cluster with two nodes
> 
> Node1 – ES server - data not client  
> Node2 - Java application with embedded ES node – client, no data
> 
> Discovery mechanism working fine (master switch and nodes restart) when I  
> configure both nodes to work with JGROUP UDP discovery.
> 
> When I try to work with ZEN or JGROUP TCP “master” switch does not work.
> 
> My scenario was:
> 
> Start Node1 first.  
> Now I can start/stop Node2 and it will connect to master as well as first  
> time each time and no any problem.  
> I stopped Node1, Node2 got “Master”.  
> Start again Node1 then:
> 
> Jgroup TCP discovery:  
> Node1 was started as master without connection to Node2 . I got two  
> masters.
> 
> Zen discovery:  
> I got the following error
> 
> [22:04:31,679][INFO][node] [Everyman]  
> {Elasticsearch/0.8.0}[6264]: Initializing ...  
> [22:04:31,688][INFO][plugins] [Everyman] Loaded  
> [discovery-jgroups]  
> [22:04:32,292][INFO][node] [Everyman]  
> {Elasticsearch/0.8.0}[6264]: Initialized  
> [22:04:32,292][INFO][node] [Everyman]  
> {Elasticsearch/0.8.0}[6264]: Starting ...  
> [22:04:32,457][INFO][transport] [Everyman]  
> bound\_address[inet[/0.0.0.0:9300]],  
> publish\_address[inet[/192.168.0.175:9300]]  
> [22:04:35,611][WARN][discovery.zen] [Everyman] Failed to send  
> join request to master [[Smythe,  
> Alistair][9999fa3d-c91b-4426-97a6-3a067d5fd51f][inet[/192.168.0.175:9300  
> ]]],  
> retrying...  
> org.elasticsearch.transport.RemoteTransportException:  
> [Everyman][inet[/192.168.0.175:9300]][discovery/zen/join]  
> Caused by: org.elasticsearch.ElasticSearchIllegalStateException: Node  
> [[Everyman][7f245178-8d30-4448-9dc9-8092a7c01372][inet[/192.168.0.175:9300  
> ]]]  
> not master for join request from [[Everyman][7f245178-8d30-4  
> :9300]]]  
> at
> 
> org.elasticsearch.discovery.zen.ZenDiscovery.handleJoinRequest(ZenDiscovery.java:386)  
> at
> 
> org.elasticsearch.discovery.zen.ZenDiscovery.access$900(ZenDiscovery.java:58)  
> at
> 
> org.elasticsearch.discovery.zen.ZenDiscovery$MembershipListener.onJoin(ZenDiscovery.java:450)  
> at
> 
> org.elasticsearch.discovery.zen.membership.MembershipAction$JoinRequestRequestHandler.messageReceived(MembershipAction.java:113)  
> at
> 
> org.elasticsearch.discovery.zen.membership.MembershipAction$JoinRequestRequestHandler.messageReceived(MembershipAction.java:104)  
> at
> 
> org.elasticsearch.transport.netty.MessageChannelHandler$3.run(MessageChannelHandler.java:175)  
> at
> 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)  
> at
> 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)  
> at java.lang.Thread.run(Thread.java:619)  
> [22:04:38,631][WARN][discovery.zen] [Everyman] Failed to send  
> join request to master [[Smythe,  
> Alistair][9999fa3d-c91b-4426-97a6-3a067d5fd51f][inet[/192.168.0.175:9300  
> ]]],  
> retrying...  
> org.elasticsearch.transport.RemoteTransportException:  
> [Everyman][inet[/192.168.0.175:9300]][discovery/zen/join]  
> Caused by: org.elasticsearch.ElasticSearchIllegalStateException: Node  
> [[Everyman][7f245178-8d30-4448-9dc9-8092a7c01372][inet[/192.168.0.175:9300  
> ]]]  
> not master for join request from [[Everyman][7f245178-8d30-4  
> :9300]]]
> 
> My configuration file  
> cluster:  
> name:
> 
> transport:  
> netty:  
> reuse\_address: false
> 
> discovery:  
> type: zen or jgroups  
> jgroups:  
> config: tcp  
> bind\_port: 7800  
> bind\_addr:   
> tcpping:  
> initial\_hosts: [7800]
> 
> Client node configuration
> 
> ```
> // General settings
> Properties props = System.getProperties();
> props.setProperty("java.net.preferIPv4Stack", "true");
> props.setProperty("transport.netty.reuse_address", "false");
> System.setProperties(props);
> 
> //Create settings builder
> ImmutableSettings.Builder builder =
> 
> ```
> 
> ImmutableSettings.settingsBuilder();
> 
> ```
> if (discoveryType.equals(DISCOVERY_JGROUP_TCP)){
> logger.info("Jgroups " + DISCOVERY_JGROUP_TCP + "
> 
> ```
> 
> discovery will start");  
> builder.put("discovery.type", "jgroups");  
> builder.put("discovery.jgroups.config", "tcp");  
> builder.put("discovery.jgroups.bind\_port",  
> JGROUP\_TCP\_PORT);  
> builder.put("discovery.jgroups.bind\_addr",  
> hostName);
> 
> builder.put("discovery.jgroups.tcpping.initial\_hosts", hostName + "["+  
> JGROUP\_TCP\_PORT +"]");
> 
> ```
> }else if (discoveryType.equals(DISCOVERY_JGROUP_UDP)){
> logger.info("Jgroups " + DISCOVERY_JGROUP_UDP +
> 
> ```
> 
> "discovery will start");  
> builder.put("discovery.type", "jgroups");  
> builder.put("discovery.jgroups.config", "udp");
> 
> ```
> }else{
> //Set discovery to DISCOVERY_ZEN default
> logger.info("Default " + DISCOVERY_ZEN + "discovery
> 
> ```
> 
> will start");  
> builder.put("discovery.type", "zen");  
> }
> 
> I try to get cluster nodes status with  
> curl -XGET '[http://localhost:9200/\_cluster/nodes](http://localhost:9200/_cluster/nodes)'  
> So, when only Node1 running I got node status . When Node2 was connected  
> to  
> cluster I got  
> repose like  
> {"error":"JsonGenerationException[Can not write a field name, expecting a  
> value]"}
> 
> Thanks  
> Lena
> 
> --  
> View this message in context:  
> [http://elasticsearch-users.115913.n3.nabble.com/Discovery-module-0-8-0-tp865726p865726.html](http://elasticsearch-users.115913.n3.nabble.com/Discovery-module-0-8-0-tp865726p865726.html)  
> Sent from the Elasticsearch Users mailing list archive at [Nabble.com](http://Nabble.com).

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 6, 2017, 4:23am UTC](https://discuss.elastic.co/t/discovery-module-0-8-0/2992/3 "2017-07-06T04:23:32Z")

</div>


