hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lars George (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (HBASE-7035) thrift server closes HTable of open Scanners
Date Mon, 15 Jul 2013 09:10:51 GMT

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

Lars George edited comment on HBASE-7035 at 7/15/13 9:10 AM:
-------------------------------------------------------------

bq. If the pool is full, table.close() may be called by HTablePool. This calls connection.close(),
but ResultScanner calls table.getConnection().

No Devin, that was my point earlier, the connection.close() call use a reference counter.
It does not close the connection while there are other "users". And in case of Thrift, it
has a pool still open and therefore the connection will *not* be closed under the hood.

You do *not* have to set the pool size any different, or even larger at all.

As long as the HTablePool is not closed, all is fine.
                
      was (Author: larsgeorge):
    bq. If the pool is full, table.close() may be called by HTablePool. This calls connection.close(),
but ResultScanner calls table.getConnection().

No Devin, that was my point earlier, the connection.close() call use a reference counter.
It does not close the connection while there are other "users". And in case of Thrift, it
has a pool still open and therefore the connection will "*not* be closed under the hood.

You do *not* have to set the pool size any different, or even larger at all.

As long as the HTablePool is not closed, all is fine.
                  
> thrift server closes HTable of open Scanners
> --------------------------------------------
>
>                 Key: HBASE-7035
>                 URL: https://issues.apache.org/jira/browse/HBASE-7035
>             Project: HBase
>          Issue Type: Sub-task
>          Components: Thrift
>    Affects Versions: 0.94.4
>            Reporter: Devin Bayer
>              Labels: thrift2
>         Attachments: old-hbase-thrift-v1.patch
>
>   Original Estimate: 4h
>  Remaining Estimate: 4h
>
> ThriftHBaseServiceHandler.openScanner() does this:
> 1. table = pool.getTable()
> 2. scanner = table.getScanner()
> 3. table.close()
> 4. return scanner
> While back porting the thrift server to 0.92.6, I found that table.close() calls connection.close().
Further calls to scanner.next() raise a ConnectionClosed exception. The unit tests do not
catch this since they reuse an open HConnection instance.
> This might work on trunk, but depends on the implementations of HTablePool, HTable and
HConnectionManager. Even with the pool wrapper, if the pool is full, table.close() may be
called, which may invalidate the table. Also,  HTable is not thread-safe, but they are being
reused since they go back in the pool.
> I suggest storing the table handle along with the scanner.

--
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

Mime
View raw message