[
https://issues.apache.org/jira/browse/HBASE-16460?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15430295#comment-15430295
]
Guanghao Zhang commented on HBASE-16460:
----------------------------------------
Ok. I took a look about the previous code, it can cache block but can't read
block from cache or read wrong data from cache when backing map is inconsistent
with bucking allocator. After this fix, the backing map is also inconsistent
with bucking allocator if we got exception...... Maybe we should remove the
bucket entry from the backing map if we got exception?
> Can't rebuild the BucketAllocator's data structures when BucketCache use
> FileIOEngine
> -------------------------------------------------------------------------------------
>
> Key: HBASE-16460
> URL: https://issues.apache.org/jira/browse/HBASE-16460
> Project: HBase
> Issue Type: Bug
> Components: BucketCache
> Affects Versions: 2.0.0, 1.1.6, 1.3.1, 1.2.3, 0.98.22
> Reporter: Guanghao Zhang
> Assignee: Guanghao Zhang
> Attachments: HBASE-16460-v1.patch, HBASE-16460.patch
>
>
> When bucket cache use FileIOEngine, it will rebuild the bucket allocator's
> data structures from a persisted map. So it should first read the map from
> persistence file then use the map to new a BucketAllocator. But now the code
> has wrong sequence in retrieveFromFile() method of BucketCache.java.
> {code}
> BucketAllocator allocator = new BucketAllocator(cacheCapacity,
> bucketSizes, backingMap, realCacheSize);
> backingMap = (ConcurrentHashMap<BlockCacheKey, BucketEntry>)
> ois.readObject();
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)