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

Reply via email to