[
https://issues.apache.org/jira/browse/HBASE-16738?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Anoop Sam John updated HBASE-16738:
-----------------------------------
Attachment: HBASE-16738.patch
> L1 cache caching shared memory HFile block when blocks promoted from L2 to L1
> -----------------------------------------------------------------------------
>
> Key: HBASE-16738
> URL: https://issues.apache.org/jira/browse/HBASE-16738
> Project: HBase
> Issue Type: Sub-task
> Components: regionserver, Scanners
> Affects Versions: 2.0.0
> Reporter: Anoop Sam John
> Assignee: Anoop Sam John
> Fix For: 2.0.0
>
> Attachments: HBASE-16738.patch
>
>
> This is an issue when L1 and L2 cache used with combinedMode = false.
> See in getBlock
> {code}
> if (victimHandler != null && !repeat) {
> Cacheable result = victimHandler.getBlock(cacheKey, caching, repeat,
> updateCacheMetrics);
> // Promote this to L1.
> if (result != null && caching) {
> cacheBlock(cacheKey, result, /* inMemory = */ false, /* cacheData =
> */ true);
> }
> return result;
> }
> {code}
> When block is not there in L1 and have it in L2, we will return the block
> read from L2 and promote that block to L1 by adding it in LRUCache. But if
> the Block buffer is having shared memory (Off heap bucket cache for eg:) , we
> can not directly cache this block. The buffer memory area under this block
> can get cleaned up at any time. So we may get block data corruption.
> In such a case, we need to do a deep copy of the block (Including its buffer)
> and then add that to L1 cache.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)