hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hudson (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-15957) RpcClientImpl.close never ends in some circumstances
Date Tue, 07 Jun 2016 22:52:21 GMT

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

Hudson commented on HBASE-15957:
--------------------------------

FAILURE: Integrated in HBase-1.3-IT #695 (See [https://builds.apache.org/job/HBase-1.3-IT/695/])
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)

Mime
View raw message