You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "stack (JIRA)" <ji...@apache.org> on 2014/08/07 00:59:11 UTC

[jira] [Updated] (HBASE-10205) ConcurrentModificationException in BucketAllocator

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

stack updated HBASE-10205:
--------------------------

       Resolution: Fixed
    Fix Version/s: 0.98.6
                   2.0.0
     Hadoop Flags: Reviewed
           Status: Resolved  (was: Patch Available)

Applied to master, branch-1 and 0.98.   Ran it for a while on cluster and perf seemed same as w/o (and it worked).  Thanks [~arjenroodselaar] and [~zjushch]

> ConcurrentModificationException in BucketAllocator
> --------------------------------------------------
>
>                 Key: HBASE-10205
>                 URL: https://issues.apache.org/jira/browse/HBASE-10205
>             Project: HBase
>          Issue Type: Bug
>          Components: regionserver
>    Affects Versions: 0.89-fb
>            Reporter: Arjen Roodselaar
>            Assignee: Arjen Roodselaar
>            Priority: Minor
>             Fix For: 0.89-fb, 0.99.0, 2.0.0, 0.98.6
>
>         Attachments: hbase-10205-trunk.patch
>
>
> 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.



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