Skip to content

Commit

Permalink
HubSpot Backport: HBASE-27257 Remove unnecessary usage of CachedBlock…
Browse files Browse the repository at this point in the history
…sByFile from RS UI (apache#4667)

Signed-off-by: Wellington Chevreuil <wchevreuil@apache.org>
  • Loading branch information
bbeaudreault committed Jul 29, 2022
1 parent c6e14f9 commit 91c7ede
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand All @@ -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>
Expand Down Expand Up @@ -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>

Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,12 @@ public static boolean shouldReplaceExistingCacheBlock(BlockCache blockCache,
}
}

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.
Expand All @@ -274,14 +280,13 @@ public static class CachedBlocksByFile {
* 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);
}

/**
Expand Down

0 comments on commit 91c7ede

Please sign in to comment.