From 9c0b05d4b5c8a88105cbc15074168447e4111725 Mon Sep 17 00:00:00 2001 From: Samir Ahmic Date: Tue, 22 Sep 2015 14:17:10 +0200 Subject: [PATCH] HBASE-14458 AsyncRpcClient#createRpcChannel() should check and remove dead channel before creating new one to same server --- .../src/main/java/org/apache/hadoop/hbase/ipc/AsyncRpcClient.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/AsyncRpcClient.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/AsyncRpcClient.java index e1662f3..06d6d85 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/AsyncRpcClient.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/AsyncRpcClient.java @@ -360,7 +360,11 @@ public class AsyncRpcClient extends AbstractRpcClient { throw new StoppedRpcClientException(); } rpcChannel = connections.get(hashCode); - if (rpcChannel == null || !rpcChannel.isAlive()) { + if (rpcChannel != null && !rpcChannel.isAlive()) { + LOG.debug("Removing dead channel from server="+rpcChannel.address.toString()); + connections.remove(hashCode); + } + if (rpcChannel == null) { rpcChannel = new AsyncRpcChannel(this.bootstrap, this, ticket, serviceName, location); connections.put(hashCode, rpcChannel); } -- 2.4.3