Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 @@ -242,6 +242,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. See
Expand All @@ -259,14 +265,13 @@ public static class CachedBlocksByFile {
* displays warning in red when stats 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