| <%-- |
| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| --%> |
| <%@ page contentType="text/html;charset=UTF-8" |
| import="java.util.*" |
| import="org.apache.hadoop.hbase.io.hfile.BlockCache" |
| import="org.apache.hadoop.conf.Configuration" |
| import="org.apache.hadoop.hbase.io.hfile.BlockCacheUtil" |
| import="org.apache.hadoop.hbase.io.hfile.CachedBlock" |
| import="org.apache.hadoop.hbase.regionserver.http.RSStatusConstants" %><% |
| // This template is used to give views on an individual block cache as JSON. |
| |
| Configuration conf = (Configuration) request.getAttribute("conf"); |
| String bcn = (String) request.getAttribute(RSStatusConstants.BLOCK_CACHE_NAME); |
| String bcv = (String) request.getAttribute(RSStatusConstants.BLOCK_CACHE_V); |
| BlockCache bc = (BlockCache) request.getAttribute("blockCache"); |
| |
| BlockCache [] bcs = bc == null ? null : bc.getBlockCaches(); |
| if (bcn.equals(RSStatusConstants.BLOCK_CACHE_NAME_L1)) { |
| bc = bcs == null || bcs.length == 0? bc: bcs[0]; |
| } else { |
| if (bcs == null || bcs.length < 2) { |
| System.out.println("There is no L2 block cache"); |
| return; |
| } |
| bc = bcs[1]; |
| } |
| if (bc == null) { |
| System.out.println("There is no block cache"); |
| return; |
| } |
| BlockCacheUtil.CachedBlocksByFile cbsbf = BlockCacheUtil.getLoadedCachedBlocksByFile(conf, bc); |
| if (bcv.equals(RSStatusConstants.BLOCK_CACHE_V_FILE)) { |
| boolean firstEntry = true; %> |
| [<% for (Map.Entry<String, NavigableSet<CachedBlock>> e: cbsbf.getCachedBlockStatsByFile().entrySet()) { %> |
| <% if (!firstEntry) { %>,<% } %><%= BlockCacheUtil.toJSON(e.getKey(), e.getValue()) %> |
| <% |
| if (firstEntry) { |
| firstEntry = false; |
| } |
| %> |
| <% } %>] |
| |
| <% } else { %> |
| [ <%= BlockCacheUtil.toJSON(bc) %>, <%= BlockCacheUtil.toJSON(cbsbf) %> ] |
| <% } %> |