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] [Commented] (HBASE-4054) Usability improvement to HTablePool
Date Fri, 01 Jul 2011 16:40:28 GMT

    [ https://issues.apache.org/jira/browse/HBASE-4054?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13058636#comment-13058636
] 

Daniel Iancu commented on HBASE-4054:
-------------------------------------

I think HTablePool.putTable should be made private and called only from PooledHTable.close.
This way you are sure that nobody puts back a HTableImplementation other then then HTable.

HTablePool usage should be mainly 
{{  
   table = HTablePool.getTable();

   //use table

   table.close(); 
}}


> 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

        

Mime
View raw message