Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
0.89-fb
-
None
-
Reviewed
Description
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.
Attachments
Attachments
Issue Links
- relates to
-
HBASE-15691 Port HBASE-10205 (ConcurrentModificationException in BucketAllocator) to branch-1
- Closed