# NoNodeAvailableException

**URL:** <https://discuss.elastic.co/t/nonodeavailableexception/6357>\
**Category:** Elasticsearch\
**Created:** [January 12, 2012, 1:40am UTC](https://discuss.elastic.co/t/nonodeavailableexception/6357 "2012-01-12T01:40:46Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Frank\_LaRosa](https://avatars.discourse-cdn.com/v4/letter/f/bc8723/32.png) [@Frank\_LaRosa](https://discuss.elastic.co/u/Frank_LaRosa)\
**Post date:** [January 12, 2012, 1:40am UTC](https://discuss.elastic.co/t/nonodeavailableexception/6357/1 "2012-01-12T01:40:46Z")

</div>

Question - does the client need to be able to connect to all the nodes  
in a cluster, or just one?

We set up a two-node cluster, but only made one node available outside  
of our production firewall. I can connect to that node using curl and  
run queries, but when I try to connect programatically via the Java  
API, I get the "NoNodeAvailable" exception. With additional logging  
enabled, I see this in my output:

01/11/2012 19:34:05 [WARN] Thread-10 (Log4jESLogger.java:105) - [Bill  
Foster] Exception caught on netty layer [[id: 0x28892a87]]  
java.nio.channels.UnresolvedAddressException  
at sun.nio.ch.Net.checkAddress(Net.java:30)  
at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:480)  
at  
org.elasticsearch.common.netty.channel.socket.nio.NioClientSocketPipelineSink.connect(NioClientSocketPipelineSink.java:  
150)  
at  
org.elasticsearch.common.netty.channel.socket.nio.NioClientSocketPipelineSink.eventSunk(NioClientSocketPipelineSink.java:  
113)  
at  
org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendDownstream(DefaultChannelPipeline.java:  
574)  
at  
org.elasticsearch.common.netty.channel.Channels.connect(Channels.java:  
541)  
at  
org.elasticsearch.common.netty.channel.AbstractChannel.connect(AbstractChannel.java:  
210)  
at  
org.elasticsearch.common.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:  
227)  
at  
org.elasticsearch.common.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:  
188)  
at  
org.elasticsearch.transport.netty.NettyTransport.connectToChannels(NettyTransport.java:  
547)  
at  
org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:  
503)  
at  
org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:  
482)  
at  
org.elasticsearch.transport.TransportService.connectToNode(TransportService.java:  
124)  
at org.elasticsearch.client.transport.TransportClientNodesService  
$SimpleNodeSampler.sample(TransportClientNodesService.java:262)  
at  
org.elasticsearch.client.transport.TransportClientNodesService.addTransportAddress(TransportClientNodesService.java:  
126)  
at  
org.elasticsearch.client.transport.TransportClient.addTransportAddress(TransportClient.java:  
200)

---

<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:** [January 12, 2012, 10:50am UTC](https://discuss.elastic.co/t/nonodeavailableexception/6357/2 "2012-01-12T10:50:12Z")

</div>

Only one node is enough. It seems like it failed ot resolve the address you  
provided the TransportClient. Did you enable sniffing? If so, it will try  
and connect to the publish host of the node (logged when it starts up), not  
the address you provided.

On Thu, Jan 12, 2012 at 3:40 AM, Frank LaRosa [frank@studyblue.com](mailto:frank@studyblue.com) wrote:

> Question - does the client need to be able to connect to all the nodes  
> in a cluster, or just one?
> 
> We set up a two-node cluster, but only made one node available outside  
> of our production firewall. I can connect to that node using curl and  
> run queries, but when I try to connect programatically via the Java  
> API, I get the "NoNodeAvailable" exception. With additional logging  
> enabled, I see this in my output:
> 
> 01/11/2012 19:34:05 [WARN] Thread-10 (Log4jESLogger.java:105) - [Bill  
> Foster] Exception caught on netty layer [[id: 0x28892a87]]  
> java.nio.channels.UnresolvedAddressException  
> at sun.nio.ch.Net.checkAddress(Net.java:30)  
> at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:480)  
> at
> 
> org.elasticsearch.common.netty.channel.socket.nio.NioClientSocketPipelineSink.connect(NioClientSocketPipelineSink.java:  
> 150)  
> at
> 
> org.elasticsearch.common.netty.channel.socket.nio.NioClientSocketPipelineSink.eventSunk(NioClientSocketPipelineSink.java:  
> 113)  
> at
> 
> org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendDownstream(DefaultChannelPipeline.java:  
> 574)  
> at  
> org.elasticsearch.common.netty.channel.Channels.connect(Channels.java:  
> 541)  
> at
> 
> org.elasticsearch.common.netty.channel.AbstractChannel.connect(AbstractChannel.java:  
> 210)  
> at
> 
> org.elasticsearch.common.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:  
> 227)  
> at
> 
> org.elasticsearch.common.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:  
> 188)  
> at
> 
> org.elasticsearch.transport.netty.NettyTransport.connectToChannels(NettyTransport.java:  
> 547)  
> at
> 
> org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:  
> 503)  
> at
> 
> org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:  
> 482)  
> at
> 
> org.elasticsearch.transport.TransportService.connectToNode(TransportService.java:  
> 124)  
> at org.elasticsearch.client.transport.TransportClientNodesService  
> $SimpleNodeSampler.sample(TransportClientNodesService.java:262)  
> at
> 
> org.elasticsearch.client.transport.TransportClientNodesService.addTransportAddress(TransportClientNodesService.java:  
> 126)  
> at
> 
> org.elasticsearch.client.transport.TransportClient.addTransportAddress(TransportClient.java:  
> 200)

---

<div class="post-metadata">

**Author:** ![Karussell1](https://avatars.discourse-cdn.com/v4/letter/k/50afbb/32.png) [@Karussell1](https://discuss.elastic.co/u/Karussell1)\
**Post date:** [January 13, 2012, 9:49am UTC](https://discuss.elastic.co/t/nonodeavailableexception/6357/3 "2012-01-13T09:49:00Z")

</div>

> but only made one node available outside of our production firewall.

also ensure you have the port 9300 available + equal version on client  
and server

Peter.

On 12 Jan., 02:40, Frank LaRosa [fr...@studyblue.com](mailto:fr...@studyblue.com) wrote:

> Question - does the client need to be able to connect to all the nodes  
> in a cluster, or just one?
> 
> We set up a two-node cluster, but only made one node available outside  
> of our production firewall. I can connect to that node using curl and  
> run queries, but when I try to connect programatically via the Java  
> API, I get the "NoNodeAvailable" exception. With additional logging  
> enabled, I see this in my output:
> 
> 01/11/2012 19:34:05 [WARN] Thread-10 (Log4jESLogger.java:105) - [Bill  
> Foster] Exception caught on netty layer [[id: 0x28892a87]]  
> java.nio.channels.UnresolvedAddressException  
> at sun.nio.ch.Net.checkAddress(Net.java:30)  
> at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:480)  
> at  
> org.elasticsearch.common.netty.channel.socket.nio.NioClientSocketPipelineSi nk.connect(NioClientSocketPipelineSink.java:  
> 150)  
> at  
> org.elasticsearch.common.netty.channel.socket.nio.NioClientSocketPipelineSi nk.eventSunk(NioClientSocketPipelineSink.java:  
> 113)  
> at  
> org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendDownstrea m(DefaultChannelPipeline.java:  
> 574)  
> at  
> org.elasticsearch.common.netty.channel.Channels.connect(Channels.java:  
> 541)  
> at  
> org.elasticsearch.common.netty.channel.AbstractChannel.connect(AbstractChan nel.java:  
> 210)  
> at  
> org.elasticsearch.common.netty.bootstrap.ClientBootstrap.connect(ClientBoot strap.java:  
> 227)  
> at  
> org.elasticsearch.common.netty.bootstrap.ClientBootstrap.connect(ClientBoot strap.java:  
> 188)  
> at  
> org.elasticsearch.transport.netty.NettyTransport.connectToChannels(NettyTra nsport.java:  
> 547)  
> at  
> org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTranspo rt.java:  
> 503)  
> at  
> org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTranspo rt.java:  
> 482)  
> at  
> org.elasticsearch.transport.TransportService.connectToNode(TransportService .java:  
> 124)  
> at org.elasticsearch.client.transport.TransportClientNodesService  
> $SimpleNodeSampler.sample(TransportClientNodesService.java:262)  
> at  
> org.elasticsearch.client.transport.TransportClientNodesService.addTransport Address(TransportClientNodesService.java:  
> 126)  
> at  
> org.elasticsearch.client.transport.TransportClient.addTransportAddress(Tran sportClient.java:  
> 200)

---

<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, 3:42am UTC](https://discuss.elastic.co/t/nonodeavailableexception/6357/4 "2017-07-06T03:42:50Z")

</div>

Closed on July 6, 2017, 3:42am UTC


