You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Adrian Muraru (JIRA)" <ji...@apache.org> on 2012/11/06 04:10:12 UTC

[jira] [Commented] (HBASE-6956) Do not return back to HTablePool closed connections

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

Adrian Muraru commented on HBASE-6956:
--------------------------------------

I'm seeing a similar stack trace when using HTablePool:
{code}
java.lang.RuntimeException: java.io.IOException: org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@5c429be9 closed
        at org.apache.hadoop.hbase.client.HTableFactory.createHTableInterface(HTableFactory.java:38) ~[hbase-0.92.2-26.jar:0.92.2-26]
        at org.apache.hadoop.hbase.client.HTablePool.createHTable(HTablePool.java:268) ~[hbase-0.92.2-26.jar:0.92.2-26]
        at org.apache.hadoop.hbase.client.HTablePool.findOrCreateTable(HTablePool.java:198) ~[hbase-0.92.2-26.jar:0.92.2-26]
        at org.apache.hadoop.hbase.client.HTablePool.getTable(HTablePool.java:173) ~[hbase-0.92.2-26.jar:0.92.2-26]
{code}

The issue is not with a closed HTable instance returned back to the pool.
Instead, following my investigation it is caused by the shared *HConnection* instance being closed. 
Once you get into this state - the HTablePool#getTable() will always fail and never recover.

A possible fix is to drop the HConnection used by HTablePool#getTable() in case of an IOException. 
Not trivial though as it is created based on a private Configuration instance in the pool :)
{code}
this.connection = HConnectionManager.getConnection(conf)
{code}

A more brutal way of escaping this state is to drop the pool altogether a create a new one (not really doable in all cases depending on the usage)

I'll try to come up with a patch to clean up the faulty HConnection and keep the pool up.

                
> Do not return back to HTablePool closed connections
> ---------------------------------------------------
>
>                 Key: HBASE-6956
>                 URL: https://issues.apache.org/jira/browse/HBASE-6956
>             Project: HBase
>          Issue Type: Bug
>          Components: Client
>    Affects Versions: 0.90.6
>            Reporter: Igor Yurinok
>
> Sometimes we see a lot of Exception about closed connections:
> {code}
>  org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@553fd068 closed
> org.apache.hadoop.hbase.client.ClosedConnectionException: org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@553fd068 closed
> {code}
> After investigation we assumed that it occurs because closed connection returns back into HTablePool. 
> For our opinion best solution is  check whether the table is closed in method HTablePool.putTable and if true don't add it into the queue and release such HTableInterface.
> But unfortunatly right now there are no access to HTable#closed field through HTableInterface

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira