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

Hiroshi Ikeda updated HBASE-6651:
---------------------------------

    Attachment: HBASE-6651-V16-trunk.patch
                HBASE-6651-V16-0.98.patch
                HBASE-6651-V16-0.96.patch

Added revised patches.

While I fixed javadoc warnings reported, I realized some inconsistency of its 
API. I wanted to give chances to individually tear down the objects which are 
busy when one calls the clear methods. For the purpose, the returnObject should 
return true only for the last borrower, otherwise one might tear down the 
cleared objects which are still in use.

> Improve thread safety of HTablePool
> -----------------------------------
>
>                 Key: HBASE-6651
>                 URL: https://issues.apache.org/jira/browse/HBASE-6651
>             Project: HBase
>          Issue Type: Bug
>          Components: Client
>    Affects Versions: 0.94.1
>            Reporter: Hiroshi Ikeda
>            Assignee: Hiroshi Ikeda
>         Attachments: HBASE-6651-V10.patch, HBASE-6651-V11.patch, 
> HBASE-6651-V12.patch, HBASE-6651-V13.patch, HBASE-6651-V14-0.96.patch, 
> HBASE-6651-V14-0.98.patch, HBASE-6651-V14-trunk.patch, 
> HBASE-6651-V15-0.96.patch, HBASE-6651-V15-0.98.patch, 
> HBASE-6651-V15-trunk.patch, HBASE-6651-V16-0.96.patch, 
> HBASE-6651-V16-0.98.patch, HBASE-6651-V16-trunk.patch, HBASE-6651-V2.patch, 
> HBASE-6651-V3.patch, HBASE-6651-V4.patch, HBASE-6651-V5.patch, 
> HBASE-6651-V6.patch, HBASE-6651-V7.patch, HBASE-6651-V8.patch, 
> HBASE-6651-V9.patch, HBASE-6651.patch, sample.zip, sample.zip, 
> sharedmap_for_hbaseclient.zip
>
>
> There are some operations in HTablePool accessing PoolMap in multiple places 
> without any explicit synchronization. 
> For example HTablePool.closeTablePool() calls PoolMap.values(), and calls 
> PoolMap.remove(). If other threads add new instances to the pool in the 
> middle of the calls, the newly added instances might be dropped. 
> (HTablePool.closeTablePool() also has another problem that calling it by 
> multiple threads causes accessing HTable by multiple threads.)
> Moreover, PoolMap is not thread safe for the same reason.
> For example PoolMap.put() calles ConcurrentMap.get() and calles 
> ConcurrentMap.put(). If other threads add a new instance to the concurent map 
> in the middle of the calls, the new instance might be dropped.
> And also implementations of Pool have the same problems.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to