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

chunhui shen commented on HBASE-15691:
--------------------------------------

{code:java}
+    public synchronized void instantiateBucket(Bucket b) {
+    private synchronized void removeBucket(Bucket b) {
+    public synchronized IndexStatistics statistics() {
{code}
The  synchronized methods are all not on the client-read-path, thus there 
should be no perf implications.
I haven't found any possibility about deadlock, because won't try to fetch any 
lock inside these methods and their child methods.(It's able to read all the 
process inside the methods now :D)


+1 on the patch


> Port HBASE-10205 (ConcurrentModificationException in BucketAllocator) to 
> branch-1
> ---------------------------------------------------------------------------------
>
>                 Key: HBASE-15691
>                 URL: https://issues.apache.org/jira/browse/HBASE-15691
>             Project: HBase
>          Issue Type: Sub-task
>    Affects Versions: 1.3.0
>            Reporter: Andrew Purtell
>            Assignee: Stephen Yuan Jiang
>             Fix For: 1.3.2, 1.4.1, 1.5.0, 1.2.7
>
>         Attachments: HBASE-15691-branch-1.patch, HBASE-15691.v2-branch-1.patch
>
>
> HBASE-10205 solves the following problem:
> "
> The BucketCache WriterThread calls BucketCache.freeSpace() upon draining the 
> RAM queue containing entries to be cached. freeSpace() in turn calls 
> BucketSizeInfo.statistics() through BucketAllocator.getIndexStatistics(), 
> which iterates over 'bucketList'. At the same time another WriterThread might 
> call BucketAllocator.allocateBlock(), which may call 
> BucketSizeInfo.allocateBlock(), add a bucket to 'bucketList' and consequently 
> cause a ConcurrentModificationException. Calls to 
> BucketAllocator.allocateBlock() are synchronized, but calls to 
> BucketAllocator.getIndexStatistics() are not, which allows this race to occur.
> "
> However, for some unknown reason, HBASE-10205 was only committed to master 
> (2.0 and beyond) and 0.98 branches only. To preserve continuity we should 
> commit it to branch-1.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to