View Javadoc

1   // Autogenerated Jamon implementation
2   // /home/bharathv/IdeaProjects/rc/hbase-rc-clone/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheTmpl.jamon
3   
4   package org.apache.hadoop.hbase.tmpl.regionserver;
5   
6   // 37, 1
7   import java.util.Map;
8   // 38, 1
9   import org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.CachedBlocksByFile;
10  // 39, 1
11  import org.apache.hadoop.hbase.io.hfile.AgeSnapshot;
12  // 40, 1
13  import org.apache.hadoop.hbase.io.hfile.CachedBlock;
14  // 41, 1
15  import org.apache.hadoop.conf.Configuration;
16  // 42, 1
17  import org.apache.hadoop.hbase.io.hfile.CacheConfig;
18  // 43, 1
19  import org.apache.hadoop.hbase.io.hfile.BlockCache;
20  // 44, 1
21  import org.apache.hadoop.hbase.io.hfile.bucket.BucketCacheStats;
22  // 45, 1
23  import org.apache.hadoop.hbase.io.hfile.bucket.BucketCache;
24  // 46, 1
25  import org.apache.hadoop.hbase.io.hfile.bucket.BucketAllocator;
26  // 47, 1
27  import org.apache.hadoop.hbase.io.hfile.bucket.BucketAllocator.Bucket;
28  // 48, 1
29  import org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;
30  
31  public class BlockCacheTmplImpl
32    extends org.jamon.AbstractTemplateImpl
33    implements org.apache.hadoop.hbase.tmpl.regionserver.BlockCacheTmpl.Intf
34  
35  {
36    private final CacheConfig cacheConfig;
37    private final Configuration config;
38    protected static org.apache.hadoop.hbase.tmpl.regionserver.BlockCacheTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.regionserver.BlockCacheTmpl.ImplData p_implData)
39    {
40      return p_implData;
41    }
42    public BlockCacheTmplImpl(org.jamon.TemplateManager p_templateManager, org.apache.hadoop.hbase.tmpl.regionserver.BlockCacheTmpl.ImplData p_implData)
43    {
44      super(p_templateManager, __jamon_setOptionalArguments(p_implData));
45      cacheConfig = p_implData.getCacheConfig();
46      config = p_implData.getConfig();
47    }
48    
49    @Override public void renderNoFlush(final java.io.Writer jamonWriter)
50      throws java.io.IOException
51    {
52      // 24, 1
53      
54    BlockCache bc = cacheConfig == null? null: cacheConfig.getBlockCache();
55    String bcUrl = null;
56    String bcName = null;
57    if (bc != null) {
58      bcUrl = "http://hbase.apache.org/devapidocs/" + bc.getClass().getName().replaceAll("\\.", "/") + ".html";
59      bcName = bc.getClass().getSimpleName();
60    }
61    BlockCache [] bcs = cacheConfig == null? null: cacheConfig.getBlockCache() == null? null: cacheConfig.getBlockCache().getBlockCaches();
62    // If more than one bc, show evictions in each bc listing so can compare
63    boolean evictions = bcs != null && bcs.length > 1;
64  
65      // 50, 1
66      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            ");
67      // 60, 13
68      {
69        // 60, 13
70        __jamon_innerUnit__bc_baseInfo(jamonWriter, cacheConfig, bcUrl, bcName);
71      }
72      // 60, 91
73      jamonWriter.write("\n        </div>\n        <div class=\"tab-pane\" id=\"tab_bc_config\">\n            ");
74      // 63, 13
75      {
76        // 63, 13
77        __jamon_innerUnit__bc_config(jamonWriter, cacheConfig );
78      }
79      // 63, 55
80      jamonWriter.write("\n        </div>\n        <div class=\"tab-pane\" id=\"tab_bc_stats\">\n            ");
81      // 66, 13
82      {
83        // 66, 13
84        __jamon_innerUnit__bc_stats(jamonWriter, cacheConfig );
85      }
86      // 66, 54
87      jamonWriter.write("\n        </div>\n        <div class=\"tab-pane\" id=\"tab_bc_l1\">\n            ");
88      // 69, 13
89      {
90        // 69, 13
91        __jamon_innerUnit__bc_l(jamonWriter, bcs == null? bc: bcs[0], "L1", evictions);
92      }
93      // 69, 90
94      jamonWriter.write("\n        </div>\n        <div class=\"tab-pane\" id=\"tab_bc_l2\">\n            ");
95      // 72, 13
96      {
97        // 72, 13
98        __jamon_innerUnit__bc_l(jamonWriter, bcs == null? null: bcs.length <= 1? null: bcs[1], "L2", evictions);
99      }
100     // 72, 115
101     jamonWriter.write("\n        </div>\n    </div>\n</div>\n\n");
102   }
103   
104   
105   // 230, 1
106   private void __jamon_innerUnit__bc_stats(final java.io.Writer jamonWriter, final CacheConfig cacheConfig)
107     throws java.io.IOException
108   {
109     // 234, 1
110     if (cacheConfig == null || cacheConfig.getBlockCache() == null )
111     {
112       // 234, 67
113       jamonWriter.write("\n<p>CacheConfig is null</p>\n");
114     }
115     // 236, 1
116     else
117     {
118       // 236, 8
119       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>");
120       // 245, 13
121       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(cacheConfig.getBlockCache().getCurrentSize(),
122             "B", 1)), jamonWriter);
123       // 246, 23
124       jamonWriter.write("</td>\n        <td>Current size of block cache in use (bytes)</td>\n    </tr>\n    <tr>\n        <td>Free</td>\n        <td>");
125       // 251, 13
126       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(cacheConfig.getBlockCache().getFreeSize(),
127             "B", 1)), jamonWriter);
128       // 252, 23
129       jamonWriter.write("</td>\n        <td>The total free memory currently available to store more cache entries (bytes)</td>\n    </tr>\n    <tr>\n        <td>Count</td>\n        <td>");
130       // 257, 13
131       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", cacheConfig.getBlockCache().getBlockCount())), jamonWriter);
132       // 257, 84
133       jamonWriter.write("</td>\n        <td>Number of blocks in block cache</td>\n    </tr>\n    ");
134       // 260, 5
135       {
136         // 260, 5
137         __jamon_innerUnit__evictions_tmpl(jamonWriter, cacheConfig.getBlockCache());
138       }
139       // 260, 60
140       jamonWriter.write("\n    ");
141       // 261, 5
142       {
143         // 261, 5
144         __jamon_innerUnit__hits_tmpl(jamonWriter, cacheConfig.getBlockCache());
145       }
146       // 261, 55
147       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");
148     }
149     // 265, 7
150     jamonWriter.write("\n");
151   }
152   
153   
154   // 198, 1
155   private void __jamon_innerUnit__hits_tmpl(final java.io.Writer jamonWriter, final BlockCache bc)
156     throws java.io.IOException
157   {
158     // 202, 5
159     jamonWriter.write("<tr>\n        <td>Hits</td>\n        <td>");
160     // 204, 13
161     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getStats().getHitCount())), jamonWriter);
162     // 204, 68
163     jamonWriter.write("</td>\n        <td>Number requests that were cache hits</td>\n    </tr>\n    <tr>\n        <td>Hits Caching</td>\n        <td>");
164     // 209, 13
165     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getStats().getHitCachingCount())), jamonWriter);
166     // 209, 75
167     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>");
168     // 214, 13
169     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getStats().getMissCount())), jamonWriter);
170     // 214, 69
171     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>");
172     // 219, 13
173     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getStats().getMissCount())), jamonWriter);
174     // 219, 69
175     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>");
176     // 224, 13
177     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,.2f", bc.getStats().getHitRatio() * 100)), jamonWriter);
178     // 224, 76
179     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf("%"), jamonWriter);
180     // 224, 85
181     jamonWriter.write("</td>\n        <td>Hit Count divided by total requests count</td>\n    </tr>\n\n");
182   }
183   
184   
185   // 119, 1
186   private void __jamon_innerUnit__bc_config(final java.io.Writer jamonWriter, final CacheConfig cacheConfig)
187     throws java.io.IOException
188   {
189     // 123, 1
190     if (cacheConfig == null )
191     {
192       // 123, 28
193       jamonWriter.write("\n<p>CacheConfig is null</p>\n");
194     }
195     // 125, 1
196     else
197     {
198       // 125, 8
199       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>");
200       // 134, 13
201       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldCacheDataOnRead()), jamonWriter);
202       // 134, 54
203       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>");
204       // 140, 13
205       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldCacheDataOnWrite()), jamonWriter);
206       // 140, 55
207       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>");
208       // 145, 13
209       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldCacheIndexesOnWrite()), jamonWriter);
210       // 145, 58
211       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>");
212       // 150, 13
213       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldCacheBloomsOnWrite()), jamonWriter);
214       // 150, 57
215       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>");
216       // 155, 13
217       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldEvictOnClose()), jamonWriter);
218       // 155, 51
219       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>");
220       // 161, 13
221       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldCacheDataCompressed()), jamonWriter);
222       // 161, 58
223       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>");
224       // 166, 13
225       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldPrefetchOnOpen()), jamonWriter);
226       // 166, 53
227       jamonWriter.write("</td>\n        <td>True if blocks are prefetched into cache on open</td>\n    </tr>\n</table>\n");
228     }
229     // 170, 7
230     jamonWriter.write("\n");
231   }
232   
233   
234   // 77, 1
235   private void __jamon_innerUnit__bc_baseInfo(final java.io.Writer jamonWriter, final CacheConfig cacheConfig, final String bcUrl, final String bcName)
236     throws java.io.IOException
237   {
238     // 83, 1
239     
240   BlockCache bc = cacheConfig == null? null: cacheConfig.getBlockCache();
241   BlockCache [] bcs = bc == null? null: bc.getBlockCaches();
242   String bcl1Url = null;
243   String bcl1Name = null;
244   String bcl2Url = null;
245   String bcl2Name = null;
246   if (bcs != null) {
247     BlockCache bcl1 = bcs[0];
248     if (bcl1 != null) {
249       bcl1Url = "http://hbase.apache.org/devapidocs/" + bcl1.getClass().getName().replaceAll("\\.", "/") + ".html";
250       bcl1Name = bcl1.getClass().getSimpleName();
251     }
252     if (bcs.length == 2) {
253       BlockCache bcl2 = bcs[1];
254       bcl2Url = "http://hbase.apache.org/devapidocs/" + bcl2.getClass().getName().replaceAll("\\.", "/") + ".html";
255       bcl2Name = bcl2.getClass().getSimpleName();
256     }
257   }
258 
259     // 103, 1
260     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=\"");
261     // 112, 22
262     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bcUrl), jamonWriter);
263     // 112, 33
264     jamonWriter.write("\">");
265     // 112, 35
266     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bcName), jamonWriter);
267     // 112, 47
268     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");
269   }
270   
271   
272   // 281, 1
273   private void __jamon_innerUnit__block_cache(final java.io.Writer jamonWriter, final BlockCache bc, final String name, final boolean evictions)
274     throws java.io.IOException
275   {
276     // 287, 1
277     
278   String bcUrl = "http://hbase.apache.org/devapidocs/" + bc.getClass().getName().replaceAll("\\.", "/") + ".html";
279   String bcName = bc.getClass().getSimpleName();
280   org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.CachedBlocksByFile cbsbf =
281     org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.getLoadedCachedBlocksByFile(config, bc);
282   AgeSnapshot cbsbfSnapshot = cbsbf.getAgeInCacheSnapshot();
283 
284   boolean bucketCache = bc.getClass().getSimpleName().equals("BucketCache");
285   BucketCacheStats bucketCacheStats = null;
286   BucketAllocator bucketAllocator = null;
287 
288   if (bucketCache) {
289     bucketCacheStats = (BucketCacheStats)bc.getStats();
290     bucketAllocator = ((BucketCache)bc).getAllocator();
291   }
292 
293     // 303, 1
294     if (cbsbf.isFull() )
295     {
296       // 303, 23
297       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 ");
298       // 306, 86
299       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cbsbf.getCount()), jamonWriter);
300       // 306, 108
301       jamonWriter.write(" blocks. Up the configuration <i>hbase.ui.blockcache.by.file.max</i>.\n</div>\n</p> \n");
302     }
303     // 309, 7
304     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=\"");
305     // 318, 22
306     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bcUrl), jamonWriter);
307     // 318, 33
308     jamonWriter.write("\">");
309     // 318, 35
310     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bc.getClass().getSimpleName()), jamonWriter);
311     // 318, 70
312     jamonWriter.write("</a></td>\n        <td>Class implementing this block cache Level</td>\n    </tr>\n");
313     // 321, 1
314     if (bucketCache )
315     {
316       // 321, 20
317       jamonWriter.write("\n    <tr>\n        <td>Implementation</td>\n        <td>");
318       // 324, 13
319       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(((BucketCache)bc).getIoEngine()), jamonWriter);
320       // 324, 50
321       jamonWriter.write("</a></td>\n        <td>IOEngine</td>\n    </tr>\n");
322     }
323     // 327, 7
324     jamonWriter.write("\n    <tr>\n        <td>Cache Size Limit</td>\n        <td>");
325     // 330, 13
326     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(bc.getMaxSize(), "B", 1)), jamonWriter);
327     // 330, 79
328     jamonWriter.write("</td>\n        <td>Max size of cache</td>\n    </tr>\n    <tr>\n        <td>Block Count</td>\n        <td>");
329     // 335, 13
330     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getBlockCount())), jamonWriter);
331     // 335, 59
332     jamonWriter.write("</td>\n        <td>Count of Blocks</td>\n    </tr>\n");
333     // 338, 1
334     if (!bucketCache )
335     {
336       // 338, 21
337       jamonWriter.write("\n    <tr>\n        <td>Data Block Count</td>\n        <td>");
338       // 341, 13
339       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getDataBlockCount())), jamonWriter);
340       // 341, 63
341       jamonWriter.write("</td>\n        <td>Count of DATA Blocks</td>\n    </tr>\n");
342     }
343     // 344, 7
344     jamonWriter.write("\n    <tr>\n        <td>Size of Blocks</td>\n        <td>");
345     // 347, 13
346     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(bc.getCurrentSize(), "B", 1)), jamonWriter);
347     // 347, 83
348     jamonWriter.write("</td>\n        <td>Size of Blocks</td>\n    </tr>\n");
349     // 350, 1
350     if (!bucketCache )
351     {
352       // 350, 21
353       jamonWriter.write("\n    <tr>\n        <td>Size of Data Blocks</td>\n        <td>");
354       // 353, 13
355       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(bc.getCurrentDataSize(), "B", 1)), jamonWriter);
356       // 353, 87
357       jamonWriter.write("</td>\n        <td>Size of DATA Blocks</td>\n    </tr>\n");
358     }
359     // 356, 7
360     jamonWriter.write(" \n");
361     // 357, 1
362     {
363       // 357, 1
364       __jamon_innerUnit__evictions_tmpl(jamonWriter, bc);
365     }
366     // 357, 31
367     jamonWriter.write("\n");
368     // 358, 1
369     {
370       // 358, 1
371       __jamon_innerUnit__hits_tmpl(jamonWriter, bc);
372     }
373     // 358, 26
374     jamonWriter.write("\n\n");
375     // 360, 1
376     if (bucketCache )
377     {
378       // 360, 20
379       jamonWriter.write("\n    <tr>\n        <td>Hits per Second</td>\n        <td>");
380       // 363, 13
381       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bucketCacheStats.getIOHitsPerSecond()), jamonWriter);
382       // 363, 56
383       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>");
384       // 368, 13
385       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bucketCacheStats.getIOTimePerHit()), jamonWriter);
386       // 368, 53
387       jamonWriter.write("</td>\n        <td>Time per cache hit</td>\n    </tr>\n");
388     }
389     // 371, 7
390     jamonWriter.write("\n</table>\n<p>View block cache <a href=\"?format=json&bcn=");
391     // 374, 47
392     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(name), jamonWriter);
393     // 374, 57
394     jamonWriter.write("\">as JSON</a> | Block cache <a href=\"?format=json&bcn=");
395     // 374, 111
396     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(name), jamonWriter);
397     // 374, 121
398     jamonWriter.write("&bcv=file\">as JSON by file</a></p>\n");
399     // 375, 1
400     
401 cbsbf = null;
402 
403   }
404   
405   
406   // 268, 1
407   private void __jamon_innerUnit__bc_l(final java.io.Writer jamonWriter, final BlockCache bc, final String name, final boolean evictions)
408     throws java.io.IOException
409   {
410     // 274, 1
411     if (bc == null )
412     {
413       // 274, 19
414       jamonWriter.write("\n<p>No ");
415       // 275, 7
416       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(name), jamonWriter);
417       // 275, 17
418       jamonWriter.write(" deployed</p>\n");
419     }
420     // 276, 1
421     else
422     {
423       // 276, 8
424       jamonWriter.write("\n");
425       // 277, 1
426       {
427         // 277, 1
428         __jamon_innerUnit__block_cache(jamonWriter, bc, name, evictions);
429       }
430       // 277, 65
431       jamonWriter.write("\n");
432     }
433     // 278, 7
434     jamonWriter.write("\n");
435   }
436   
437   
438   // 173, 1
439   private void __jamon_innerUnit__evictions_tmpl(final java.io.Writer jamonWriter, final BlockCache bc)
440     throws java.io.IOException
441   {
442     // 177, 1
443     
444   AgeSnapshot ageAtEvictionSnapshot = bc.getStats().getAgeAtEvictionSnapshot();
445   // Only show if non-zero mean and stddev as is the case in combinedblockcache
446 
447     // 181, 5
448     jamonWriter.write("<tr>\n        <td>Evicted</td>\n        <td>");
449     // 183, 13
450     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getStats().getEvictedCount())), jamonWriter);
451     // 183, 72
452     jamonWriter.write("</td>\n        <td>The total number of blocks evicted</td>\n    </tr>\n    <tr>\n        <td>Evictions</td>\n        <td>");
453     // 188, 13
454     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getStats().getEvictionCount())), jamonWriter);
455     // 188, 73
456     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>");
457     // 193, 13
458     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", (long)ageAtEvictionSnapshot.getMean())), jamonWriter);
459     // 193, 78
460     jamonWriter.write("</td>\n        <td>Mean age of Blocks at eviction time (seconds)</td>\n    </tr>\n");
461   }
462   
463   
464 }