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

bbeaudreault pushed a commit to branch hubspot-2
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit 91c7ede9df51f180d5c086c793de4ba47d4a769b
Author: Bryan Beaudreault <bbeaudrea...@hubspot.com>
AuthorDate: Fri Jul 29 15:28:28 2022 -0400

    HubSpot Backport: HBASE-27257 Remove unnecessary usage of 
CachedBlocksByFile from RS UI (#4667)
    
    Signed-off-by: Wellington Chevreuil <wchevre...@apache.org>
---
 .../hbase/tmpl/regionserver/BlockCacheTmpl.jamon   | 24 +++++++++-------------
 .../hadoop/hbase/io/hfile/BlockCacheUtil.java      |  9 ++++++--
 2 files changed, 17 insertions(+), 16 deletions(-)

diff --git 
a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheTmpl.jamon
 
b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheTmpl.jamon
index a18e6d4cfc4..0fece42f941 100644
--- 
a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheTmpl.jamon
+++ 
b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheTmpl.jamon
@@ -30,6 +30,7 @@ BlockCache bc;
 </%java>
 <%import>
 java.util.Map;
+org.apache.hadoop.hbase.io.hfile.BlockCacheUtil;
 org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.CachedBlocksByFile;
 org.apache.hadoop.hbase.io.hfile.AgeSnapshot;
 org.apache.hadoop.hbase.io.hfile.CachedBlock;
@@ -281,9 +282,7 @@ are combined counts. Request count is sum of hits and 
misses.</p>
 <%java>
   String bcUrl = "http://hbase.apache.org/devapidocs/"; + 
bc.getClass().getName().replaceAll("\\.", "/") + ".html";
   String bcName = bc.getClass().getSimpleName();
-  org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.CachedBlocksByFile cbsbf =
-    
org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.getLoadedCachedBlocksByFile(config,
 bc);
-  AgeSnapshot cbsbfSnapshot = cbsbf.getAgeInCacheSnapshot();
+  int maxCachedBlocksByFile = BlockCacheUtil.getMaxCachedBlocksByFile(config);
 
   boolean bucketCache = bc.getClass().getSimpleName().equals("BucketCache");
   BucketCacheStats bucketCacheStats = null;
@@ -294,13 +293,6 @@ are combined counts. Request count is sum of hits and 
misses.</p>
     bucketAllocator = ((BucketCache)bc).getAllocator();
   }
 </%java>
-<%if cbsbf.isFull() %>
-<p>
-<div class="alert alert-danger">
-<strong>The stats below are incomplete!</strong> We ran into our accounting 
limit of <% cbsbf.getCount() %> blocks. Up the configuration 
<i>hbase.ui.blockcache.by.file.max</i>.
-</div>
-</p> 
-</%if>
 <table id="blocks_summary" class="table table-striped">
     <tr>
         <th>Attribute</th>
@@ -365,9 +357,13 @@ are combined counts. Request count is sum of hits and 
misses.</p>
 </%if>
 </table>
 <%doc>Call through to block cache Detail rendering template</%doc>
-<p>View block cache <a href="?format=json&bcn=<% name %>">as JSON</a> | Block 
cache <a href="?format=json&bcn=<% name %>&bcv=file">as JSON by file</a></p>
-<%java>
-cbsbf = null;
-</%java>
+<p>
+View block cache <a href="?format=json&bcn=<% name %>">as JSON</a> | Block 
cache <a href="?format=json&bcn=<% name %>&bcv=file">as JSON by file</a>
+<%if bc.getBlockCount() > maxCachedBlocksByFile %>
+<br>
+<b>Note</b>: JSON view of block cache will be incomplete, because block count 
<% bc.getBlockCount() %> is greater than <i>hbase.ui.blockcache.by.file.max</i> 
value of <% maxCachedBlocksByFile %>.
+Increase that value to get a complete picture.
+</%if>
+</p>
 </%def>
 
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.java
index c2cf82148be..94e910e3466 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.java
@@ -255,6 +255,12 @@ public class BlockCacheUtil {
     }
   }
 
+  private static final int DEFAULT_MAX = 1000000;
+
+  public static int getMaxCachedBlocksByFile(Configuration conf) {
+    return conf == null ? DEFAULT_MAX : 
conf.getInt("hbase.ui.blockcache.by.file.max", DEFAULT_MAX);
+  }
+
   /**
    * Use one of these to keep a running account of cached blocks by file.  
Throw it away when done.
    * This is different than metrics in that it is stats on current state of a 
cache.
@@ -274,14 +280,13 @@ public class BlockCacheUtil {
      * are incomplete.
      */
     private final int max;
-    public static final int DEFAULT_MAX = 1000000;
 
     CachedBlocksByFile() {
       this(null);
     }
 
     CachedBlocksByFile(final Configuration c) {
-      this.max = c == null? DEFAULT_MAX: 
c.getInt("hbase.ui.blockcache.by.file.max", DEFAULT_MAX);
+      this.max = getMaxCachedBlocksByFile(c);
     }
 
     /**

Reply via email to