[ 
https://issues.apache.org/jira/browse/FLUME-1306?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13401655#comment-13401655
 ] 

Mubarak Seyed commented on FLUME-1306:
--------------------------------------

Full stack-trace

{code}
2012-06-21 22:05:52.725 61694564 [Log24] ERROR 
org.apache.flume.api.NettyAvroRpcClient  - RPC connection error :
java.io.IOException: Error connecting to test-test1.subdomain.domain.com:port
        at 
org.apache.avro.ipc.NettyTransceiver.getChannel(NettyTransceiver.java:249)
        at 
org.apache.avro.ipc.NettyTransceiver.<init>(NettyTransceiver.java:198)
        at 
org.apache.avro.ipc.NettyTransceiver.<init>(NettyTransceiver.java:147)
        at 
org.apache.flume.api.NettyAvroRpcClient.connect(NettyAvroRpcClient.java:118)
        at 
org.apache.flume.api.NettyAvroRpcClient.connect(NettyAvroRpcClient.java:107)
        at 
org.apache.flume.api.NettyAvroRpcClient.configure(NettyAvroRpcClient.java:446)
        at 
org.apache.flume.api.RpcClientFactory.getInstance(RpcClientFactory.java:83)
        at 
org.apache.flume.api.LoadBalancingRpcClient.createClient(LoadBalancingRpcClient.java:190)
        at 
org.apache.flume.api.LoadBalancingRpcClient.getClient(LoadBalancingRpcClient.java:173)
        at 
org.apache.flume.api.LoadBalancingRpcClient.append(LoadBalancingRpcClient.java:69)
        ..
        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:662)
Caused by: java.nio.channels.UnresolvedAddressException
        at sun.nio.ch.Net.checkAddress(Net.java:30)
        at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:480)
        at 
org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink.connect(NioClientSocketPipelineSink.java:140)
        at 
org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink.eventSunk(NioClientSocketPipelineSink.java:103)
        at 
org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:60)
        at org.jboss.netty.channel.Channels.connect(Channels.java:541)
        at 
org.jboss.netty.channel.AbstractChannel.connect(AbstractChannel.java:218)
        at 
org.jboss.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:227)
        at 
org.jboss.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:188)
        at 
org.apache.avro.ipc.NettyTransceiver.getChannel(NettyTransceiver.java:246)
{code}
                
> LoadBalancingRpcClient should catch exception for invalid RpcClient and 
> failover to valid one
> ---------------------------------------------------------------------------------------------
>
>                 Key: FLUME-1306
>                 URL: https://issues.apache.org/jira/browse/FLUME-1306
>             Project: Flume
>          Issue Type: Bug
>            Reporter: Mubarak Seyed
>            Assignee: Mubarak Seyed
>              Labels: newbie
>
> It appears from test that if we provide invalid host address as one of the 
> host address in the host list, {{LoadBalancingRpcClient}} should catch 
> exception for invalid {{RpcClient}} and failover to next in the host list.
> {code}
> ERROR org.apache.flume.api.NettyAvroRpcClient  - RPC connection error :
> java.io.IOException: Error connecting to xxxxx-xxxxx.xxxx.xxxxx.xxxx:xxxx
>         at 
> org.apache.avro.ipc.NettyTransceiver.getChannel(NettyTransceiver.java:249)
>         at 
> org.apache.avro.ipc.NettyTransceiver.<init>(NettyTransceiver.java:198)
>         at 
> org.apache.avro.ipc.NettyTransceiver.<init>(NettyTransceiver.java:147)
>         at 
> org.apache.flume.api.NettyAvroRpcClient.connect(NettyAvroRpcClient.java:118)
>         at 
> org.apache.flume.api.NettyAvroRpcClient.connect(NettyAvroRpcClient.java:107)
>         at 
> org.apache.flume.api.NettyAvroRpcClient.configure(NettyAvroRpcClient.java:446)
>         at 
> org.apache.flume.api.RpcClientFactory.getInstance(RpcClientFactory.java:83)
>         at 
> org.apache.flume.api.LoadBalancingRpcClient.createClient(LoadBalancingRpcClient.java:190)
>         at 
> org.apache.flume.api.LoadBalancingRpcClient.getClient(LoadBalancingRpcClient.java:173)
>         at 
> org.apache.flume.api.LoadBalancingRpcClient.append(LoadBalancingRpcClient.java:69)
> {code}
> The proposed fix would be moving {{RpcClient client = getClient(host)}} 
> inside {{try}} block
> {code}
> @Override
>   public void append(Event event) throws EventDeliveryException {
>     boolean eventSent = false;
>     Iterator<HostInfo> it = selector.createHostIterator();
>     while (it.hasNext()) {
>       HostInfo host = it.next();
>       try {
>         RpcClient client = getClient(host);
>         client.append(event);
>         eventSent = true;
>         break;
>       } catch (Exception ex) {
>         LOGGER.warn("Failed to send event to host " + host, ex);
>       }
>     }
>     if (!eventSent) {
>       throw new EventDeliveryException("Unable to send event to any host");
>     }
>   }
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to