Devin Bayer created HBASE-7035:
----------------------------------

             Summary: thrift server closes HTable of open Scanners
                 Key: HBASE-7035
                 URL: https://issues.apache.org/jira/browse/HBASE-7035
             Project: HBase
          Issue Type: Bug
          Components: Thrift
    Affects Versions: 0.94.4
            Reporter: Devin Bayer


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

Reply via email to