View Javadoc

1   // Autogenerated Jamon implementation
2   // /home/apurtell/src/hbase/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.jamon
3   
4   package org.apache.hadoop.hbase.tmpl.regionserver;
5   
6   // 24, 9
7   import java.util.*;
8   // 25, 9
9   import org.apache.commons.math.stat.descriptive.DescriptiveStatistics;
10  // 26, 9
11  import org.apache.hadoop.hbase.regionserver.HRegionServer;
12  // 27, 9
13  import org.apache.hadoop.hbase.util.Bytes;
14  // 28, 9
15  import org.apache.hadoop.hbase.HRegionInfo;
16  // 29, 9
17  import org.apache.hadoop.hbase.regionserver.HRegion;
18  // 30, 9
19  import org.apache.hadoop.hbase.ServerName;
20  // 31, 9
21  import org.apache.hadoop.hbase.HBaseConfiguration;
22  // 32, 9
23  import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
24  // 33, 9
25  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ServerInfo;
26  // 34, 9
27  import org.apache.hadoop.hbase.protobuf.generated.ClusterStatusProtos.RegionLoad;
28  // 35, 9
29  import org.apache.hadoop.hbase.regionserver.MetricsRegionWrapper;
30  
31  public class RegionListTmplImpl
32    extends org.jamon.AbstractTemplateImpl
33    implements org.apache.hadoop.hbase.tmpl.regionserver.RegionListTmpl.Intf
34  
35  {
36    private final HRegionServer regionServer;
37    private final List<HRegionInfo> onlineRegions;
38    protected static org.apache.hadoop.hbase.tmpl.regionserver.RegionListTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.regionserver.RegionListTmpl.ImplData p_implData)
39    {
40      return p_implData;
41    }
42    public RegionListTmplImpl(org.jamon.TemplateManager p_templateManager, org.apache.hadoop.hbase.tmpl.regionserver.RegionListTmpl.ImplData p_implData)
43    {
44      super(p_templateManager, __jamon_setOptionalArguments(p_implData));
45      regionServer = p_implData.getRegionServer();
46      onlineRegions = p_implData.getOnlineRegions();
47    }
48    
49    public void renderNoFlush(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter)
50      throws java.io.IOException
51    {
52      // 37, 1
53      if ((onlineRegions != null && onlineRegions.size() > 0) )
54      {
55        // 37, 60
56        jamonWriter.write("\n\n    ");
57        // 39, 5
58        
59          Collections.sort(onlineRegions);
60      
61        // 43, 5
62        jamonWriter.write("<div class=\"tabbable\">\n        <ul class=\"nav nav-pills\">\n            <li class=\"active\"><a href=\"#tab_regionBaseInfo\" data-toggle=\"tab\">Base Info</a> </li>\n            <li><a href=\"#tab_regionRequestStats\" data-toggle=\"tab\">Request metrics</a></li>\n            <li class=\"\"><a href=\"#tab_regionStoreStats\" data-toggle=\"tab\">Storefile Metrics</a></li>\n            <li class=\"\"><a href=\"#tab_regionMemstoreStats\" data-toggle=\"tab\">Memstore Metrics</a></li>\n            <li class=\"\"><a href=\"#tab_regionCompactStats\" data-toggle=\"tab\">Compaction Metrics</a></li>\n            <li class=\"\"><a href=\"#tab_coprocessorStats\" data-toggle=\"tab\">Coprocessor Metrics</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_regionBaseInfo\">\n                ");
63        // 54, 17
64        {
65          // 54, 17
66          __jamon_innerUnit__baseInfo(jamonWriter, onlineRegions);
67        }
68        // 54, 63
69        jamonWriter.write("\n            </div>\n            <div class=\"tab-pane\" id=\"tab_regionRequestStats\">\n                ");
70        // 57, 17
71        {
72          // 57, 17
73          __jamon_innerUnit__requestStats(jamonWriter, onlineRegions);
74        }
75        // 57, 67
76        jamonWriter.write("\n            </div>\n            <div class=\"tab-pane\" id=\"tab_regionStoreStats\">\n                ");
77        // 60, 17
78        {
79          // 60, 17
80          __jamon_innerUnit__storeStats(jamonWriter, onlineRegions);
81        }
82        // 60, 65
83        jamonWriter.write("\n            </div>\n            <div class=\"tab-pane\" id=\"tab_regionMemstoreStats\">\n                ");
84        // 63, 17
85        {
86          // 63, 17
87          __jamon_innerUnit__memstoreStats(jamonWriter, onlineRegions);
88        }
89        // 63, 68
90        jamonWriter.write("\n            </div>\n            <div class=\"tab-pane\" id=\"tab_regionCompactStats\">\n                ");
91        // 66, 17
92        {
93          // 66, 17
94          __jamon_innerUnit__compactStats(jamonWriter, onlineRegions);
95        }
96        // 66, 67
97        jamonWriter.write("\n            </div>\n            <div class=\"tab-pane\" id=\"tab_coprocessorStats\">\n                ");
98        // 69, 17
99        {
100         // 69, 17
101         __jamon_innerUnit__coprocessorStats(jamonWriter, onlineRegions);
102       }
103       // 69, 71
104       jamonWriter.write("\n            </div>\n        </div>\n    </div>\n    <p>Region names are made of the containing table's name, a comma,\n    the start key, a comma, and a randomly generated region id.  To illustrate,\n    the region named\n    <em>domains,apache.org,5464829424211263407</em> is party to the table\n    <em>domains</em>, has an id of <em>5464829424211263407</em> and the first key\n    in the region is <em>apache.org</em>.  The <em>hbase:meta</em> 'table' is an internal\n    system table (or 'catalog' tables in db-speak).\n    The hbase:meta table keeps a list of all regions in the system. The empty key is used to denote\n    table start and table end.  A region with an empty start key is the first region in a table.\n    If region has both an empty start and an empty end key, its the only region in the table.  See\n    <a href=\"http://hbase.org\">HBase Home</a> for further explication.<p>\n");
105     }
106     // 84, 1
107     else
108     {
109       // 84, 8
110       jamonWriter.write("\n    <p>Not serving regions</p>\n");
111     }
112     // 86, 7
113     jamonWriter.write("\n\n");
114   }
115   
116   
117   // 109, 1
118   private void __jamon_innerUnit__requestStats(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final List<HRegionInfo> onlineRegions)
119     throws java.io.IOException
120   {
121     // 113, 5
122     jamonWriter.write("<table class=\"table table-striped\">\n        <tr>\n            <th>Region Name</th>\n            <th>Read Request Count</th>\n            <th>Write Request Count</th>\n        </tr>\n\n        ");
123     // 120, 9
124     for (HRegionInfo r: onlineRegions )
125     {
126       // 120, 46
127       jamonWriter.write("\n\n        <tr>\n        ");
128       // 123, 9
129       
130             RegionLoad load = regionServer.createRegionLoad(r.getEncodedName());
131         
132       // 126, 13
133       jamonWriter.write("<td>");
134       // 126, 17
135       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(r.getRegionNameAsString()), jamonWriter);
136       // 126, 48
137       jamonWriter.write("</td>\n            ");
138       // 127, 13
139       if (load != null )
140       {
141         // 127, 33
142         jamonWriter.write("\n            <td>");
143         // 128, 17
144         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(load.getReadRequestsCount()), jamonWriter);
145         // 128, 50
146         jamonWriter.write("</td>\n            <td>");
147         // 129, 17
148         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(load.getWriteRequestsCount()), jamonWriter);
149         // 129, 51
150         jamonWriter.write("</td>\n            ");
151       }
152       // 130, 19
153       jamonWriter.write("\n        </tr>\n        ");
154     }
155     // 132, 16
156     jamonWriter.write("\n    </table>\n");
157   }
158   
159   
160   // 209, 1
161   private void __jamon_innerUnit__memstoreStats(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final List<HRegionInfo> onlineRegions)
162     throws java.io.IOException
163   {
164     // 213, 5
165     jamonWriter.write("<table class=\"table table-striped\">\n        <tr>\n            <th>Region Name</th>\n            <th>Memstore Size</th>\n        </tr>\n\n        ");
166     // 219, 9
167     for (HRegionInfo r: onlineRegions )
168     {
169       // 219, 46
170       jamonWriter.write("\n\n        <tr>\n        ");
171       // 222, 9
172       
173             RegionLoad load = regionServer.createRegionLoad(r.getEncodedName());
174         
175       // 225, 13
176       jamonWriter.write("<td>");
177       // 225, 17
178       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(r.getRegionNameAsString()), jamonWriter);
179       // 225, 48
180       jamonWriter.write("</td>\n            ");
181       // 226, 13
182       if (load != null )
183       {
184         // 226, 33
185         jamonWriter.write("\n            <td>");
186         // 227, 17
187         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(load.getMemstoreSizeMB()), jamonWriter);
188         // 227, 47
189         jamonWriter.write("m</td>\n            ");
190       }
191       // 228, 19
192       jamonWriter.write("\n        </tr>\n        ");
193     }
194     // 230, 16
195     jamonWriter.write("\n    </table>\n");
196   }
197   
198   
199   // 175, 1
200   private void __jamon_innerUnit__compactStats(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final List<HRegionInfo> onlineRegions)
201     throws java.io.IOException
202   {
203     // 179, 5
204     jamonWriter.write("<table class=\"table table-striped\">\n        <tr>\n            <th>Region Name</th>\n            <th>Num. Compacting KVs</th>\n            <th>Num. Compacted KVs</th>\n            <th>Compaction Progress</th>\n        </tr>\n\n        ");
205     // 187, 9
206     for (HRegionInfo r: onlineRegions )
207     {
208       // 187, 46
209       jamonWriter.write("\n\n        <tr>\n        ");
210       // 190, 9
211       
212             RegionLoad load = regionServer.createRegionLoad(r.getEncodedName());
213             String percentDone = "";
214             if  (load != null && load.getTotalCompactingKVs() > 0) {
215             percentDone = String.format("%.2f", 100 *
216             ((float) load.getCurrentCompactedKVs() / load.getTotalCompactingKVs())) + "%";
217             }
218         
219       // 198, 13
220       jamonWriter.write("<td>");
221       // 198, 17
222       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(r.getRegionNameAsString()), jamonWriter);
223       // 198, 48
224       jamonWriter.write("</td>\n            ");
225       // 199, 13
226       if (load != null )
227       {
228         // 199, 33
229         jamonWriter.write("\n            <td>");
230         // 200, 17
231         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(load.getTotalCompactingKVs()), jamonWriter);
232         // 200, 51
233         jamonWriter.write("</td>\n            <td>");
234         // 201, 17
235         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(load.getCurrentCompactedKVs()), jamonWriter);
236         // 201, 52
237         jamonWriter.write("</td>\n            <td>");
238         // 202, 17
239         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(percentDone), jamonWriter);
240         // 202, 34
241         jamonWriter.write("</td>\n            ");
242       }
243       // 203, 19
244       jamonWriter.write("\n        </tr>\n        ");
245     }
246     // 205, 16
247     jamonWriter.write("\n    </table>\n");
248   }
249   
250   
251   // 88, 1
252   private void __jamon_innerUnit__baseInfo(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final List<HRegionInfo> onlineRegions)
253     throws java.io.IOException
254   {
255     // 92, 5
256     jamonWriter.write("<table class=\"table table-striped\">\n        <tr>\n            <th>Region Name</th>\n            <th>Start Key</th>\n            <th>End Key</th>\n        </tr>\n\n        ");
257     // 99, 9
258     for (HRegionInfo r: onlineRegions )
259     {
260       // 99, 46
261       jamonWriter.write("\n        <tr>\n            <td>");
262       // 101, 17
263       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(r.getRegionNameAsString()), jamonWriter);
264       // 101, 48
265       jamonWriter.write("</td>\n            <td>");
266       // 102, 17
267       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(Bytes.toStringBinary(r.getStartKey())), jamonWriter);
268       // 102, 60
269       jamonWriter.write("</td>\n            <td>");
270       // 103, 17
271       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(Bytes.toStringBinary(r.getEndKey())), jamonWriter);
272       // 103, 58
273       jamonWriter.write("</td>\n        </tr>\n        ");
274     }
275     // 105, 16
276     jamonWriter.write("\n    </table>\n");
277   }
278   
279   
280   // 137, 1
281   private void __jamon_innerUnit__storeStats(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final List<HRegionInfo> onlineRegions)
282     throws java.io.IOException
283   {
284     // 141, 5
285     jamonWriter.write("<table class=\"table table-striped\">\n        <tr>\n            <th>Region Name</th>\n            <th>Num. Stores</th>\n            <th>Num. Storefiles</th>\n            <th>Storefile Size Uncompressed</th>\n            <th>Storefile Size</th>\n            <th>Index Size</th>\n            <th>Bloom Size</th>\n            <th>Data Locality</th>\n        </tr>\n\n        ");
286     // 153, 9
287     for (HRegionInfo r: onlineRegions )
288     {
289       // 153, 46
290       jamonWriter.write("\n\n        <tr>\n        ");
291       // 156, 9
292       
293             RegionLoad load = regionServer.createRegionLoad(r.getEncodedName());
294         
295       // 159, 13
296       jamonWriter.write("<td>");
297       // 159, 17
298       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(r.getRegionNameAsString()), jamonWriter);
299       // 159, 48
300       jamonWriter.write("</td>\n            ");
301       // 160, 13
302       if (load != null )
303       {
304         // 160, 33
305         jamonWriter.write("\n            <td>");
306         // 161, 17
307         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(load.getStores()), jamonWriter);
308         // 161, 39
309         jamonWriter.write("</td>\n            <td>");
310         // 162, 17
311         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(load.getStorefiles()), jamonWriter);
312         // 162, 43
313         jamonWriter.write("</td>\n            <td>");
314         // 163, 17
315         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(load.getStoreUncompressedSizeMB()), jamonWriter);
316         // 163, 56
317         jamonWriter.write("m</td>\n            <td>");
318         // 164, 17
319         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(load.getStorefileSizeMB()), jamonWriter);
320         // 164, 48
321         jamonWriter.write("m</td>\n            <td>");
322         // 165, 17
323         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(load.getTotalStaticIndexSizeKB()), jamonWriter);
324         // 165, 55
325         jamonWriter.write("k</td>\n            <td>");
326         // 166, 17
327         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(load.getTotalStaticBloomSizeKB()), jamonWriter);
328         // 166, 55
329         jamonWriter.write("k</td>\n            <td>");
330         // 167, 17
331         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(load.getDataLocality()), jamonWriter);
332         // 167, 45
333         jamonWriter.write("</td>\n            ");
334       }
335       // 168, 19
336       jamonWriter.write("\n        </tr>\n        ");
337     }
338     // 170, 16
339     jamonWriter.write("\n    </table>\n");
340   }
341   
342   
343   // 234, 1
344   private void __jamon_innerUnit__coprocessorStats(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final List<HRegionInfo> onlineRegions)
345     throws java.io.IOException
346   {
347     // 238, 5
348     jamonWriter.write("<table class=\"table table-striped\">\n        <tr>\n            <th>Region Name</th>\n            <th>Coprocessor</th>\n            <th>Execution Time Statistics</th>\n        </tr>\n\n        ");
349     // 245, 9
350     for (HRegionInfo r: onlineRegions )
351     {
352       // 245, 46
353       jamonWriter.write("\n        ");
354       // 246, 9
355           
356             HRegion region = regionServer.getFromOnlineRegions(r.getEncodedName());
357             MetricsRegionWrapper mWrap = region == null ? null: region.getMetrics().getRegionWrapper();
358         
359       // 251, 9
360       if (mWrap != null )
361       {
362         // 251, 30
363         jamonWriter.write("\n\n            ");
364         // 253, 13
365         for (Map.Entry<String, DescriptiveStatistics> entry: mWrap.getCoprocessorExecutionStatistics().entrySet() )
366         {
367           // 253, 122
368           jamonWriter.write("\n            <tr>\n                ");
369           // 255, 17
370           
371                     String coprocessorName = entry.getKey();
372                     DescriptiveStatistics ds = entry.getValue();
373                 
374           // 259, 17
375           jamonWriter.write("<td>");
376           // 259, 21
377           org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(r.getRegionNameAsString()), jamonWriter);
378           // 259, 52
379           jamonWriter.write("</td>\n                <td>");
380           // 260, 21
381           org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(coprocessorName), jamonWriter);
382           // 260, 42
383           jamonWriter.write("</td>\n                <td>\n                <table class=\"table-condensed\">\n                <tr>\n                    <td>Min Time </td>\n                    <td>");
384           // 265, 25
385           org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%.3f%n", ds.getMin()/1000/1000)), jamonWriter);
386           // 265, 77
387           jamonWriter.write("ms</td>\n                </tr>\n                <tr>\n                    <td>Avg Time </td>\n                    <td>");
388           // 269, 25
389           org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%.3f%n", ds.getMean()/1000/1000)), jamonWriter);
390           // 269, 78
391           jamonWriter.write("ms</td>\n                </tr>\n                <tr>\n                    <td>Max Time </td>\n                    <td>");
392           // 273, 25
393           org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%.3f%n", ds.getMax()/1000/1000)), jamonWriter);
394           // 273, 77
395           jamonWriter.write("ms</td>\n                </tr>\n                <tr>\n                    <td>90th percentile </td>\n                    <td>");
396           // 277, 25
397           org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%.3f%n", ds.getPercentile(90d)/1000/1000)), jamonWriter);
398           // 277, 87
399           jamonWriter.write("ms</td>\n                </tr>\n                <tr>\n                    <td>95th percentile </td>\n                    <td>");
400           // 281, 25
401           org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%.3f%n", ds.getPercentile(95d)/1000/1000)), jamonWriter);
402           // 281, 87
403           jamonWriter.write("ms</td>\n                </tr>\n                <tr>\n                    <td>99th percentile </td>\n                    <td>");
404           // 285, 25
405           org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%.3f%n", ds.getPercentile(99d)/1000/1000)), jamonWriter);
406           // 285, 87
407           jamonWriter.write("ms</td>\n                </tr>\n                </table>\n                </td>\n            </tr>\n            ");
408         }
409         // 290, 20
410         jamonWriter.write("\n        ");
411       }
412       // 291, 15
413       jamonWriter.write("\n        ");
414     }
415     // 292, 16
416     jamonWriter.write("\n    </table>\n");
417   }
418   
419   
420 }