It would be helpful to file a JIRA. If you can attach a patch, that would be
great.

BTW Your close() method should call super.close()

Thanks

On Fri, Jul 1, 2011 at 7:25 AM, Daniel Iancu <[email protected]> wrote:

> Hi
> 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
>   @Override
>    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;
>        }
>
>       @Override
>        public void close() throws IOException {
>            putTable(table);
>        }
>  ...
> }
>
> }
>
> 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.
>
> Regards
> Daniel
>

Reply via email to