[
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)