hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Daniel Iancu (JIRA)" <j...@apache.org>
Subject [jira] [Created] (HBASE-4054) Usability improvement to HTablePool
Date Fri, 01 Jul 2011 15:30:28 GMT
Usability improvement to HTablePool

                 Key: HBASE-4054
                 URL: https://issues.apache.org/jira/browse/HBASE-4054
             Project: HBase
          Issue Type: Improvement
          Components: client
    Affects Versions: 0.90.3
            Reporter: Daniel Iancu
            Priority: Minor

It look like the usage of HTablePool might be improved. Now, once you 
get the connection from pool you must take good care to return it by 
calling  HTablePool.putTable(table);
If you close the table  (say, you don't read carefully the Javadoc)  
your htable will not be reused.
Other case might be if you build a Datasource like object to obtain 
HTables and, in this case, from the client you don't have a reference to 
the pool to return the table once done with it.

I've fixed all this by subclassing the HTablePool and overriding the  
getTable method

public class HTablePoolEnhanced extends HTablePool
     public HTableInterface getTable(String tableName) {
         return new PooledHTable(super.getTable(tableName));

  where  PooledHTable is a inner class that wraps a HTable and 
reimplements the close method to return the table to pool

  public class PooledHTable implements HTableInterface {

         private HTableInterface table;

         public PooledHTable(HTableInterface table) {
             this.table = table;

         public void close() throws IOException {


Does it make sense to have this implementation in Hbase also ? It look 
that all it needs is to have a new HTableInterfaceFactory implementation 
to create some proxy tables like i did.


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


View raw message