[ https://issues.apache.org/jira/browse/HBASE-15957?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15319602#comment-15319602 ]
Hudson commented on HBASE-15957: -------------------------------- SUCCESS: Integrated in HBase-1.3 #727 (See [https://builds.apache.org/job/HBase-1.3/727/]) HBASE-15957 RpcClientImpl.close never ends in some circumstances (enis: rev 600d10a8b831afe0c881bc109d53f53cee9e3a8a) * hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClientImpl.java * hbase-it/src/test/java/org/apache/hadoop/hbase/ipc/IntegrationTestRpcClient.java > RpcClientImpl.close never ends in some circumstances > ---------------------------------------------------- > > Key: HBASE-15957 > URL: https://issues.apache.org/jira/browse/HBASE-15957 > Project: HBase > Issue Type: Bug > Components: Client, rpc > Affects Versions: 1.1.2 > Reporter: Sergey Soldatov > Assignee: Sergey Soldatov > Fix For: 2.0.0, 1.3.0, 1.4.0, 1.2.2, 1.1.6 > > Attachments: HBASE-15957-2.patch, HBASE-15957.patch > > > This bug is related to HBASE-14241 and HBASE-13851. > Fix for HBASE-13851 introduced the check for non alive connections and if > connection is not alive, it close it: > {noformat} > if (!conn.isAlive()) { > if (connsToClose == null) { > connsToClose = new HashSet<Connection>(); > } > connsToClose.add(conn); > } > .... > if (connsToClose != null) { > for (Connection conn : connsToClose) { > if (conn.markClosed(new InterruptedIOException("RpcClient is > closing"))) { > conn.close(); > } > } > } > {noformat} > That worked fine until fix for HBASE-14241 introduced handling for interrupt > in writer thread: > {noformat} > try { > cts = callsToWrite.take(); > } catch (InterruptedException e) { > markClosed(new InterruptedIOException()); > } > {noformat} > So, if writer thread is running, but connection thread is not started yet, > interrupt will cause calling of markClosed which will set > shouldCloseConnection flag for the parent connection. And the next time > during the handling of non alive connections markClosed will return false and > close will not be called. As the result connection will not be removed from > the connections pool and RpcClientImpl.close never finish. -- This message was sent by Atlassian JIRA (v6.3.4#6332)