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

Stephen Yuan Jiang updated HBASE-15691:
---------------------------------------
    Description: 
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.

  was:HBASE-10205 was committed to trunk and 0.98 branches only. To preserve 
continuity we should commit it to branch-1. The change requires more than 
nontrivial fixups so I will attach a backport of the change from trunk to 
current branch-1 here. 


> 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