[ 
https://issues.apache.org/jira/browse/HBASE-30453?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Julian Chandra Sutadi reassigned HBASE-30453:
---------------------------------------------

    Assignee: Julian Chandra Sutadi

> BucketCache region cached size is not decremented on eviction for 
> non-persistent IOEngines
> ------------------------------------------------------------------------------------------
>
>                 Key: HBASE-30453
>                 URL: https://issues.apache.org/jira/browse/HBASE-30453
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Julian Chandra Sutadi
>            Assignee: Julian Chandra Sutadi
>            Priority: Major
>
> HBASE-29707 fixed the issue of region cache % metric going above 100% on two 
> cases:
>  # compacted blocks not being subtracted from the cached block metrics during 
> compaction
>  # caches of archived HFiles accounted for the original region.
> The issue was fixed by making the decrement per block in fileNotFullyCached.
> However, fileNotFullyCached is only called for persistent IOEngines, while 
> the increment runs for every IOEngine:
> {code:java}
> // BucketCache.putIntoBackingMap: increments for every IOEngine
> protected void putIntoBackingMap(BlockCacheKey key, BucketEntry bucketEntry) {
>   BucketEntry previousEntry = backingMap.put(key, bucketEntry);
>   updateRegionCachedSize(key, bucketEntry.getLength());
>   ...
> }
> // BucketCache.blockEvicted: decrements only for persistent IOEngines
> void blockEvicted(BlockCacheKey cacheKey, BucketEntry bucketEntry,
>   boolean decrementBlockNumber, boolean evictedByEvictionProcess) {
>   ...
>   if (decrementBlockNumber) {
>     this.blockNumber.decrement();
>     if (ioEngine.isPersistent()) {
>       fileNotFullyCached(cacheKey, bucketEntry);
>     }
>   }
>   ...
> }
> // BucketCache.fileNotFullyCached: the only decrement
> private void fileNotFullyCached(BlockCacheKey key, BucketEntry entry) {
>   updateRegionCachedSize(key, (entry.getLength() * -1));
>   fullyCachedFiles.remove(key.getHfileName());
> }{code}
> The suggested fix is to move the decrement outside the isPersistent() check, 
> since region accounting is not persistence-specific.
> We will submit the fix proposal soon.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to