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

Hudson commented on HBASE-4283:
-------------------------------

Integrated in HBase-TRUNK #2166 (See 
[https://builds.apache.org/job/HBase-TRUNK/2166/])
    HBASE-4283  HBaseAdmin never recovers from restarted cluster (Lars Hofhansl)

tedyu : 
Files : 
* /hbase/trunk/CHANGES.txt
* /hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
* /hbase/trunk/src/main/java/org/apache/hadoop/hbase/util/PoolMap.java


> HBaseAdmin never recovers from restarted cluster
> ------------------------------------------------
>
>                 Key: HBASE-4283
>                 URL: https://issues.apache.org/jira/browse/HBASE-4283
>             Project: HBase
>          Issue Type: Bug
>          Components: client
>    Affects Versions: 0.92.0
>            Reporter: Lars Hofhansl
>            Assignee: Lars Hofhansl
>            Priority: Minor
>             Fix For: 0.92.0
>
>         Attachments: 4283.txt, HBasePing.java
>
>
> While testing common scenarios that we might encounter I found that 
> HBaseAdmin does not recover from a restarted cluster.
> It turns out HBaseClient.Connection.stop() is send into an endless loop here:
> {code}
>     // wait until all connections are closed
>     while (!connections.isEmpty()) {
>       try {
>         Thread.sleep(100);
>       } catch (InterruptedException ignored) {
>       }
>     }
> {code}
> The reason is that PoolMap.remove(k,v) does not remove empty pools, and hence 
> connections.isEmpty() is never true if there ever was any connection in there.
> My fix is to remove the pool from the poolMap when it is empty. 
> (Alternatively one could change PoolMap.isEmpty() to also look inside of all 
> pools and see if their size is 0).
> When I fixed that I noticed that if the master wasn't running when HBaseAdmin 
> is created it also will not recover from that.
> Even creating a new HBaseAdmin from the same Configuration will still use the 
> old stale HConnection.
> In that case a MasterNotRunningException is thrown, which is not handled in 
> HBaseAdmin's constructor.
> The HConnection handling in HConnectionManager is funky. There should never 
> be a closed connection in the HBASE_INSTANCES.
> I might look at that as well but in a separate issue.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to