You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Daniel Iancu (JIRA)" <ji...@apache.org> on 2011/07/01 18:00:28 UTC

[jira] [Updated] (HBASE-4054) Usability improvement to HTablePool

     [ https://issues.apache.org/jira/browse/HBASE-4054?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Daniel Iancu updated HBASE-4054:
--------------------------------

    Status: Patch Available  (was: Open)

> 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
>         Attachments: HBASE-4054_Usability_improvement_to_HTablePool.patch
>
>
> 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

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