[
https://issues.apache.org/jira/browse/FLUME-1306?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mubarak Seyed updated FLUME-1306:
---------------------------------
Attachment: FLUME-1306.trunk.v1.patch
The attached file is a patch. Thanks.
> 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
> Attachments: FLUME-1306.trunk.v1.patch
>
>
> 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