001// Autogenerated Jamon implementation
002// /Users/petersomogyi/projects/hbase-upstream/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheTmpl.jamon
003
004package org.apache.hadoop.hbase.tmpl.regionserver;
005
006// 32, 1
007import java.util.Map;
008// 33, 1
009import org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.CachedBlocksByFile;
010// 34, 1
011import org.apache.hadoop.hbase.io.hfile.AgeSnapshot;
012// 35, 1
013import org.apache.hadoop.hbase.io.hfile.CachedBlock;
014// 36, 1
015import org.apache.hadoop.conf.Configuration;
016// 37, 1
017import org.apache.hadoop.hbase.io.hfile.CacheConfig;
018// 38, 1
019import org.apache.hadoop.hbase.io.hfile.BlockCache;
020// 39, 1
021import org.apache.hadoop.hbase.io.hfile.bucket.BucketCacheStats;
022// 40, 1
023import org.apache.hadoop.hbase.io.hfile.bucket.BucketCache;
024// 41, 1
025import org.apache.hadoop.hbase.io.hfile.bucket.BucketAllocator;
026// 42, 1
027import org.apache.hadoop.hbase.io.hfile.bucket.BucketAllocator.Bucket;
028// 43, 1
029import org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;
030
031public class BlockCacheTmplImpl
032  extends org.jamon.AbstractTemplateImpl
033  implements org.apache.hadoop.hbase.tmpl.regionserver.BlockCacheTmpl.Intf
034
035{
036  private final CacheConfig cacheConfig;
037  private final Configuration config;
038  private final BlockCache bc;
039  protected static org.apache.hadoop.hbase.tmpl.regionserver.BlockCacheTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.regionserver.BlockCacheTmpl.ImplData p_implData)
040  {
041    return p_implData;
042  }
043  public BlockCacheTmplImpl(org.jamon.TemplateManager p_templateManager, org.apache.hadoop.hbase.tmpl.regionserver.BlockCacheTmpl.ImplData p_implData)
044  {
045    super(p_templateManager, __jamon_setOptionalArguments(p_implData));
046    cacheConfig = p_implData.getCacheConfig();
047    config = p_implData.getConfig();
048    bc = p_implData.getBc();
049  }
050  
051  @Override public void renderNoFlush(final java.io.Writer jamonWriter)
052    throws java.io.IOException
053  {
054    // 25, 1
055    
056  String bcUrl = bc == null ? null : "http://hbase.apache.org/devapidocs/" + bc.getClass().getName().replaceAll("\\.", "/") + ".html";
057  String bcName = bc == null ? null : bc.getClass().getSimpleName();
058  BlockCache [] bcs = bc == null ? null : bc.getBlockCaches();
059  boolean evictions = bcs != null && bcs.length > 1;
060
061    // 45, 1
062    jamonWriter.write("<div class=\"tabbable\">\n    <ul class=\"nav nav-pills\">\n        <li class=\"active\"><a href=\"#tab_bc_baseInfo\" data-toggle=\"tab\">Base Info</a></li>\n        <li class=\"\"><a href=\"#tab_bc_config\" data-toggle=\"tab\">Config</a></li>\n        <li class=\"\"><a href=\"#tab_bc_stats\" data-toggle=\"tab\">Stats</a></li>\n        <li class=\"\"><a href=\"#tab_bc_l1\" data-toggle=\"tab\">L1</a></li>\n        <li class=\"\"><a href=\"#tab_bc_l2\" data-toggle=\"tab\">L2</a></li>\n    </ul>\n    <div class=\"tab-content\" style=\"padding-bottom: 9px; border-bottom: 1px solid #ddd;\">\n        <div class=\"tab-pane active\" id=\"tab_bc_baseInfo\">\n            ");
063    // 55, 13
064    {
065      // 55, 13
066      __jamon_innerUnit__bc_baseInfo(jamonWriter, bc, bcUrl, bcName);
067    }
068    // 55, 73
069    jamonWriter.write("\n        </div>\n        <div class=\"tab-pane\" id=\"tab_bc_config\">\n            ");
070    // 58, 13
071    {
072      // 58, 13
073      __jamon_innerUnit__bc_config(jamonWriter, cacheConfig );
074    }
075    // 58, 55
076    jamonWriter.write("\n        </div>\n        <div class=\"tab-pane\" id=\"tab_bc_stats\">\n            ");
077    // 61, 13
078    {
079      // 61, 13
080      __jamon_innerUnit__bc_stats(jamonWriter, bc );
081    }
082    // 61, 36
083    jamonWriter.write("\n        </div>\n        <div class=\"tab-pane\" id=\"tab_bc_l1\">\n            ");
084    // 64, 13
085    {
086      // 64, 13
087      __jamon_innerUnit__bc_l(jamonWriter, bcs == null? bc: bcs[0], "L1", evictions);
088    }
089    // 64, 90
090    jamonWriter.write("\n        </div>\n        <div class=\"tab-pane\" id=\"tab_bc_l2\">\n            ");
091    // 67, 13
092    {
093      // 67, 13
094      __jamon_innerUnit__bc_l(jamonWriter, bcs == null? null: bcs.length <= 1? null: bcs[1], "L2", evictions);
095    }
096    // 67, 115
097    jamonWriter.write("\n        </div>\n    </div>\n</div>\n\n");
098  }
099  
100  
101  // 72, 1
102  private void __jamon_innerUnit__bc_baseInfo(final java.io.Writer jamonWriter, final BlockCache bc, final String bcUrl, final String bcName)
103    throws java.io.IOException
104  {
105    // 78, 1
106    
107  BlockCache [] bcs = bc == null? null: bc.getBlockCaches();
108  String bcl1Url = null;
109  String bcl1Name = null;
110  String bcl2Url = null;
111  String bcl2Name = null;
112  if (bcs != null) {
113    BlockCache bcl1 = bcs[0];
114    if (bcl1 != null) {
115      bcl1Url = "http://hbase.apache.org/devapidocs/" + bcl1.getClass().getName().replaceAll("\\.", "/") + ".html";
116      bcl1Name = bcl1.getClass().getSimpleName();
117    }
118    if (bcs.length == 2) {
119      BlockCache bcl2 = bcs[1];
120      bcl2Url = "http://hbase.apache.org/devapidocs/" + bcl2.getClass().getName().replaceAll("\\.", "/") + ".html";
121      bcl2Name = bcl2.getClass().getSimpleName();
122    }
123  }
124
125    // 97, 1
126    jamonWriter.write("<table class=\"table table-striped\">\n    <tr>\n        <th>Attribute</th>\n        <th>Value</th>\n        <th>Description</th>\n    </tr>\n    </tr>\n    <tr>\n        <td>Implementation</td>\n        <td><a href=\"");
127    // 106, 22
128    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bcUrl), jamonWriter);
129    // 106, 33
130    jamonWriter.write("\">");
131    // 106, 35
132    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bcName), jamonWriter);
133    // 106, 47
134    jamonWriter.write("</a></td>\n        <td>Block cache implementing class</td>\n    </tr>\n</table>\n<p>See <a href=\"http://hbase.apache.org/book.html#block.cache\">block cache</a> in the HBase Reference Guide for help.</p>\n");
135  }
136  
137  
138  // 113, 1
139  private void __jamon_innerUnit__bc_config(final java.io.Writer jamonWriter, final CacheConfig cacheConfig)
140    throws java.io.IOException
141  {
142    // 117, 1
143    if (cacheConfig == null )
144    {
145      // 117, 28
146      jamonWriter.write("\n<p>CacheConfig is null</p>\n");
147    }
148    // 119, 1
149    else
150    {
151      // 119, 8
152      jamonWriter.write("\n<table class=\"table table-striped\">\n    <tr>\n        <th>Attribute</th>\n        <th>Value</th>\n        <th>Description</th>\n    </tr>\n    <tr>\n        <td>Cache DATA on Read</td>\n        <td>");
153      // 128, 13
154      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldCacheDataOnRead()), jamonWriter);
155      // 128, 54
156      jamonWriter.write("</td>\n        <td>True if DATA blocks are cached on read\n        (INDEX & BLOOM blocks are always cached)</td>\n    </tr>\n    <tr>\n        <td>Cache DATA on Write</td>\n        <td>");
157      // 134, 13
158      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldCacheDataOnWrite()), jamonWriter);
159      // 134, 55
160      jamonWriter.write("</td>\n        <td>True if DATA blocks are cached on write.</td>\n    </tr>\n    <tr>\n        <td>Cache INDEX on Write</td>\n        <td>");
161      // 139, 13
162      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldCacheIndexesOnWrite()), jamonWriter);
163      // 139, 58
164      jamonWriter.write("</td>\n        <td>True if INDEX blocks are cached on write</td>\n    </tr>\n    <tr>\n        <td>Cache BLOOM on Write</td>\n        <td>");
165      // 144, 13
166      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldCacheBloomsOnWrite()), jamonWriter);
167      // 144, 57
168      jamonWriter.write("</td>\n        <td>True if BLOOM blocks are cached on write</td>\n    </tr>\n    <tr>\n        <td>Evict blocks on Close</td>\n        <td>");
169      // 149, 13
170      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldEvictOnClose()), jamonWriter);
171      // 149, 51
172      jamonWriter.write("</td>\n        <td>True if blocks are evicted from cache when an HFile\n        reader is closed</td>\n    </tr>\n    <tr>\n        <td>Cache DATA in compressed format</td>\n        <td>");
173      // 155, 13
174      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldCacheDataCompressed()), jamonWriter);
175      // 155, 58
176      jamonWriter.write("</td>\n        <td>True if DATA blocks are cached in their compressed form</td>\n    </tr>\n    <tr>\n        <td>Prefetch on Open</td>\n        <td>");
177      // 160, 13
178      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldPrefetchOnOpen()), jamonWriter);
179      // 160, 53
180      jamonWriter.write("</td>\n        <td>True if blocks are prefetched into cache on open</td>\n    </tr>\n</table>\n");
181    }
182    // 164, 7
183    jamonWriter.write("\n");
184  }
185  
186  
187  // 262, 1
188  private void __jamon_innerUnit__bc_l(final java.io.Writer jamonWriter, final BlockCache bc, final String name, final boolean evictions)
189    throws java.io.IOException
190  {
191    // 268, 1
192    if (bc == null )
193    {
194      // 268, 19
195      jamonWriter.write("\n<p>No ");
196      // 269, 7
197      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(name), jamonWriter);
198      // 269, 17
199      jamonWriter.write(" deployed</p>\n");
200    }
201    // 270, 1
202    else
203    {
204      // 270, 8
205      jamonWriter.write("\n");
206      // 271, 1
207      {
208        // 271, 1
209        __jamon_innerUnit__block_cache(jamonWriter, bc, name, evictions);
210      }
211      // 271, 65
212      jamonWriter.write("\n");
213    }
214    // 272, 7
215    jamonWriter.write("\n");
216  }
217  
218  
219  // 224, 1
220  private void __jamon_innerUnit__bc_stats(final java.io.Writer jamonWriter, final BlockCache bc)
221    throws java.io.IOException
222  {
223    // 228, 1
224    if (bc == null )
225    {
226      // 228, 19
227      jamonWriter.write("\n<p>BlockCache is null</p>\n");
228    }
229    // 230, 1
230    else
231    {
232      // 230, 8
233      jamonWriter.write("\n<table class=\"table table-striped\">\n    <tr>\n        <th>Attribute</th>\n        <th>Value</th>\n        <th>Description</th>\n    </tr>\n    <tr>\n        <td>Size</td>\n        <td>");
234      // 239, 13
235      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(bc.getCurrentSize(),
236            "B", 1)), jamonWriter);
237      // 240, 23
238      jamonWriter.write("</td>\n        <td>Current size of block cache in use</td>\n    </tr>\n    <tr>\n        <td>Free</td>\n        <td>");
239      // 245, 13
240      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(bc.getFreeSize(),
241            "B", 1)), jamonWriter);
242      // 246, 23
243      jamonWriter.write("</td>\n        <td>The total free memory currently available to store more cache entries</td>\n    </tr>\n    <tr>\n        <td>Count</td>\n        <td>");
244      // 251, 13
245      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getBlockCount())), jamonWriter);
246      // 251, 59
247      jamonWriter.write("</td>\n        <td>Number of blocks in block cache</td>\n    </tr>\n    ");
248      // 254, 5
249      {
250        // 254, 5
251        __jamon_innerUnit__evictions_tmpl(jamonWriter, bc);
252      }
253      // 254, 35
254      jamonWriter.write("\n    ");
255      // 255, 5
256      {
257        // 255, 5
258        __jamon_innerUnit__hits_tmpl(jamonWriter, bc);
259      }
260      // 255, 30
261      jamonWriter.write("\n</table>\n<p>If block cache is made up of more than one cache -- i.e. a L1 and a L2 -- then the above\nare combined counts. Request count is sum of hits and misses.</p>\n");
262    }
263    // 259, 7
264    jamonWriter.write("\n");
265  }
266  
267  
268  // 275, 1
269  private void __jamon_innerUnit__block_cache(final java.io.Writer jamonWriter, final BlockCache bc, final String name, final boolean evictions)
270    throws java.io.IOException
271  {
272    // 281, 1
273    
274  String bcUrl = "http://hbase.apache.org/devapidocs/" + bc.getClass().getName().replaceAll("\\.", "/") + ".html";
275  String bcName = bc.getClass().getSimpleName();
276  org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.CachedBlocksByFile cbsbf =
277    org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.getLoadedCachedBlocksByFile(config, bc);
278  AgeSnapshot cbsbfSnapshot = cbsbf.getAgeInCacheSnapshot();
279
280  boolean bucketCache = bc.getClass().getSimpleName().equals("BucketCache");
281  BucketCacheStats bucketCacheStats = null;
282  BucketAllocator bucketAllocator = null;
283
284  if (bucketCache) {
285    bucketCacheStats = (BucketCacheStats)bc.getStats();
286    bucketAllocator = ((BucketCache)bc).getAllocator();
287  }
288
289    // 297, 1
290    if (cbsbf.isFull() )
291    {
292      // 297, 23
293      jamonWriter.write("\n<p>\n<div class=\"alert alert-danger\">\n<strong>The stats below are incomplete!</strong> We ran into our accounting limit of ");
294      // 300, 86
295      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cbsbf.getCount()), jamonWriter);
296      // 300, 108
297      jamonWriter.write(" blocks. Up the configuration <i>hbase.ui.blockcache.by.file.max</i>.\n</div>\n</p> \n");
298    }
299    // 303, 7
300    jamonWriter.write("\n<table id=\"blocks_summary\" class=\"table table-striped\">\n    <tr>\n        <th>Attribute</th>\n        <th>Value</th>\n        <th>Description</th>\n    </tr>\n    <tr>\n        <td>Implementation</td>\n        <td><a href=\"");
301    // 312, 22
302    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bcUrl), jamonWriter);
303    // 312, 33
304    jamonWriter.write("\">");
305    // 312, 35
306    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bc.getClass().getSimpleName()), jamonWriter);
307    // 312, 70
308    jamonWriter.write("</a></td>\n        <td>Class implementing this block cache Level</td>\n    </tr>\n");
309    // 315, 1
310    if (bucketCache )
311    {
312      // 315, 20
313      jamonWriter.write("\n    <tr>\n        <td>Implementation</td>\n        <td>");
314      // 318, 13
315      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(((BucketCache)bc).getIoEngine()), jamonWriter);
316      // 318, 50
317      jamonWriter.write("</a></td>\n        <td>IOEngine</td>\n    </tr>\n");
318    }
319    // 321, 7
320    jamonWriter.write("\n    <tr>\n        <td>Cache Size Limit</td>\n        <td>");
321    // 324, 13
322    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(bc.getMaxSize(), "B", 1)), jamonWriter);
323    // 324, 79
324    jamonWriter.write("</td>\n        <td>Max size of cache</td>\n    </tr>\n    <tr>\n        <td>Block Count</td>\n        <td>");
325    // 329, 13
326    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getBlockCount())), jamonWriter);
327    // 329, 59
328    jamonWriter.write("</td>\n        <td>Count of Blocks</td>\n    </tr>\n");
329    // 332, 1
330    if (!bucketCache )
331    {
332      // 332, 21
333      jamonWriter.write("\n    <tr>\n        <td>Data Block Count</td>\n        <td>");
334      // 335, 13
335      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getDataBlockCount())), jamonWriter);
336      // 335, 63
337      jamonWriter.write("</td>\n        <td>Count of DATA Blocks</td>\n    </tr>\n");
338    }
339    // 338, 7
340    jamonWriter.write("\n    <tr>\n        <td>Size of Blocks</td>\n        <td>");
341    // 341, 13
342    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(bc.getCurrentSize(), "B", 1)), jamonWriter);
343    // 341, 83
344    jamonWriter.write("</td>\n        <td>Size of Blocks</td>\n    </tr>\n");
345    // 344, 1
346    if (!bucketCache )
347    {
348      // 344, 21
349      jamonWriter.write("\n    <tr>\n        <td>Size of Data Blocks</td>\n        <td>");
350      // 347, 13
351      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(bc.getCurrentDataSize(), "B", 1)), jamonWriter);
352      // 347, 87
353      jamonWriter.write("</td>\n        <td>Size of DATA Blocks</td>\n    </tr>\n");
354    }
355    // 350, 7
356    jamonWriter.write(" \n");
357    // 351, 1
358    {
359      // 351, 1
360      __jamon_innerUnit__evictions_tmpl(jamonWriter, bc);
361    }
362    // 351, 31
363    jamonWriter.write("\n");
364    // 352, 1
365    {
366      // 352, 1
367      __jamon_innerUnit__hits_tmpl(jamonWriter, bc);
368    }
369    // 352, 26
370    jamonWriter.write("\n\n");
371    // 354, 1
372    if (bucketCache )
373    {
374      // 354, 20
375      jamonWriter.write("\n    <tr>\n        <td>Hits per Second</td>\n        <td>");
376      // 357, 13
377      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bucketCacheStats.getIOHitsPerSecond()), jamonWriter);
378      // 357, 56
379      jamonWriter.write("</td>\n        <td>Block gets against this cache per second</td>\n    </tr>\n    <tr>\n        <td>Time per Hit</td>\n        <td>");
380      // 362, 13
381      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bucketCacheStats.getIOTimePerHit()), jamonWriter);
382      // 362, 53
383      jamonWriter.write("</td>\n        <td>Time per cache hit</td>\n    </tr>\n");
384    }
385    // 365, 7
386    jamonWriter.write("\n</table>\n<p>View block cache <a href=\"?format=json&bcn=");
387    // 368, 47
388    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(name), jamonWriter);
389    // 368, 57
390    jamonWriter.write("\">as JSON</a> | Block cache <a href=\"?format=json&bcn=");
391    // 368, 111
392    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(name), jamonWriter);
393    // 368, 121
394    jamonWriter.write("&bcv=file\">as JSON by file</a></p>\n");
395    // 369, 1
396    
397cbsbf = null;
398
399  }
400  
401  
402  // 167, 1
403  private void __jamon_innerUnit__evictions_tmpl(final java.io.Writer jamonWriter, final BlockCache bc)
404    throws java.io.IOException
405  {
406    // 171, 1
407    
408  AgeSnapshot ageAtEvictionSnapshot = bc.getStats().getAgeAtEvictionSnapshot();
409  // Only show if non-zero mean and stddev as is the case in combinedblockcache
410
411    // 175, 5
412    jamonWriter.write("<tr>\n        <td>Evicted</td>\n        <td>");
413    // 177, 13
414    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getStats().getEvictedCount())), jamonWriter);
415    // 177, 72
416    jamonWriter.write("</td>\n        <td>The total number of blocks evicted</td>\n    </tr>\n    <tr>\n        <td>Evictions</td>\n        <td>");
417    // 182, 13
418    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getStats().getEvictionCount())), jamonWriter);
419    // 182, 73
420    jamonWriter.write("</td>\n        <td>The total number of times an eviction has occurred</td>\n    </tr>\n    <tr>\n        <td>Mean</td>\n        <td>");
421    // 187, 13
422    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", (long)ageAtEvictionSnapshot.getMean())), jamonWriter);
423    // 187, 78
424    jamonWriter.write("</td>\n        <td>Mean age of Blocks at eviction time (seconds)</td>\n    </tr>\n");
425  }
426  
427  
428  // 192, 1
429  private void __jamon_innerUnit__hits_tmpl(final java.io.Writer jamonWriter, final BlockCache bc)
430    throws java.io.IOException
431  {
432    // 196, 5
433    jamonWriter.write("<tr>\n        <td>Hits</td>\n        <td>");
434    // 198, 13
435    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getStats().getHitCount())), jamonWriter);
436    // 198, 68
437    jamonWriter.write("</td>\n        <td>Number requests that were cache hits</td>\n    </tr>\n    <tr>\n        <td>Hits Caching</td>\n        <td>");
438    // 203, 13
439    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getStats().getHitCachingCount())), jamonWriter);
440    // 203, 75
441    jamonWriter.write("</td>\n        <td>Cache hit block requests but only requests set to cache block if a miss</td>\n    </tr>\n    <tr>\n        <td>Misses</td>\n        <td>");
442    // 208, 13
443    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getStats().getMissCount())), jamonWriter);
444    // 208, 69
445    jamonWriter.write("</td>\n        <td>Block requests that were cache misses but set to cache missed blocks</td>\n    </tr>\n    <tr>\n        <td>Misses Caching</td>\n        <td>");
446    // 213, 13
447    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getStats().getMissCount())), jamonWriter);
448    // 213, 69
449    jamonWriter.write("</td>\n        <td>Block requests that were cache misses but only requests set to use block cache</td>\n    </tr>\n    <tr>\n        <td>Hit Ratio</td>\n        <td>");
450    // 218, 13
451    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,.2f", bc.getStats().getHitRatio() * 100)), jamonWriter);
452    // 218, 76
453    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf("%"), jamonWriter);
454    // 218, 85
455    jamonWriter.write("</td>\n        <td>Hit Count divided by total requests count</td>\n    </tr>\n\n");
456  }
457  
458  
459}