[
https://issues.apache.org/jira/browse/HBASE-15957?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15319659#comment-15319659
]
Hudson commented on HBASE-15957:
--------------------------------
FAILURE: Integrated in HBase-Trunk_matrix #1007 (See
[https://builds.apache.org/job/HBase-Trunk_matrix/1007/])
HBASE-15957 RpcClientImpl.close never ends in some circumstances (enis: rev
da88b4824054f57fbcbc7795469ab2369a39b5ed)
*
hbase-it/src/test/java/org/apache/hadoop/hbase/ipc/IntegrationTestRpcClient.java
* hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClientImpl.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)