Anoop Sam John created HBASE-16738:
--------------------------------------

             Summary: 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
    Affects Versions: 2.0.0
            Reporter: Anoop Sam John
            Assignee: Anoop Sam John
             Fix For: 2.0.0


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)

Reply via email to