This will be very helpful. Also, wouldn't it be good idea to add close() to HTablePoolEnhanced so that underlying HTables can be closed by client apps as part of application shutdown.
Regards, Srikanth -----Original Message----- From: Daniel Iancu [mailto:[email protected]] Sent: Friday, July 01, 2011 7:55 PM To: [email protected] Subject: Usability improvement to HTablePool 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 ________________________________ http://www.mindtree.com/email/disclaimer.html
