You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by re...@apache.org on 2021/07/16 02:26:51 UTC

[hbase] branch master updated: HBASE-26083 L1 miss metric is incorrect when using CombinedBlockCache (#3491)

This is an automated email from the ASF dual-hosted git repository.

reidchan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/master by this push:
     new 3666357  HBASE-26083 L1 miss metric is incorrect when using CombinedBlockCache (#3491)
3666357 is described below

commit 3666357ba0a4ea039c32697778e493316eb96845
Author: YutSean <yu...@gmail.com>
AuthorDate: Fri Jul 16 10:25:56 2021 +0800

    HBASE-26083 L1 miss metric is incorrect when using CombinedBlockCache (#3491)
    
    Signed-off-by Anoop Sam John <an...@apache.org>
    Signed-off-by Reid Chan <re...@apache.org>
---
 .../java/org/apache/hadoop/hbase/io/hfile/CombinedBlockCache.java  | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CombinedBlockCache.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CombinedBlockCache.java
index 1fb8713..f5da4f2 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CombinedBlockCache.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CombinedBlockCache.java
@@ -82,7 +82,12 @@ public class CombinedBlockCache implements ResizableBlockCache, HeapSize {
     // we end up calling l2Cache.getBlock.
     // We are not in a position to exactly look at LRU cache or BC as BlockType may not be getting
     // passed always.
-    return l1Cache.containsBlock(cacheKey)?
+    boolean existInL1 = l1Cache.containsBlock(cacheKey);
+    if (!existInL1 && updateCacheMetrics && !repeat) {
+      // If the block does not exist in L1, the containsBlock should be counted as one miss.
+      l1Cache.getStats().miss(caching, cacheKey.isPrimary(), cacheKey.getBlockType());
+    }
+    return existInL1 ?
         l1Cache.getBlock(cacheKey, caching, repeat, updateCacheMetrics):
         l2Cache.getBlock(cacheKey, caching, repeat, updateCacheMetrics);
   }