View Javadoc

1   // Autogenerated Jamon implementation
2   // /code/build/hbase/rpm/BUILD/hbase-1.4.9/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon
3   
4   package org.apache.hadoop.hbase.tmpl.master;
5   
6   // 32, 1
7   import java.util.*;
8   // 33, 1
9   import org.apache.hadoop.util.StringUtils;
10  // 34, 1
11  import org.apache.hadoop.hbase.util.Bytes;
12  // 35, 1
13  import org.apache.hadoop.hbase.util.JvmVersion;
14  // 36, 1
15  import org.apache.hadoop.hbase.util.FSUtils;
16  // 37, 1
17  import org.apache.hadoop.hbase.master.HMaster;
18  // 38, 1
19  import org.apache.hadoop.hbase.master.AssignmentManager;
20  // 39, 1
21  import org.apache.hadoop.hbase.master.ServerManager;
22  // 40, 1
23  import org.apache.hadoop.hbase.HConstants;
24  // 41, 1
25  import org.apache.hadoop.hbase.NamespaceDescriptor;
26  // 42, 1
27  import org.apache.hadoop.hbase.ServerLoad;
28  // 43, 1
29  import org.apache.hadoop.hbase.ServerName;
30  // 44, 1
31  import org.apache.hadoop.hbase.client.Admin;
32  // 45, 1
33  import org.apache.hadoop.hbase.client.HConnectionManager;
34  // 46, 1
35  import org.apache.hadoop.hbase.HRegionInfo;
36  // 47, 1
37  import org.apache.hadoop.hbase.master.RegionState;
38  // 48, 1
39  import org.apache.hadoop.hbase.HTableDescriptor;
40  // 49, 1
41  import org.apache.hadoop.hbase.HBaseConfiguration;
42  // 50, 1
43  import org.apache.hadoop.hbase.TableName;
44  // 51, 1
45  import org.apache.hadoop.hbase.tool.Canary;
46  // 52, 1
47  import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription;
48  // 53, 1
49  import org.apache.hadoop.hbase.master.DeadServer;
50  // 54, 1
51  import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
52  // 55, 1
53  import org.apache.hadoop.hbase.security.visibility.VisibilityConstants;
54  // 56, 1
55  import org.apache.hadoop.hbase.security.access.AccessControlLists;
56  // 57, 1
57  import org.apache.hadoop.hbase.quotas.QuotaUtil;
58  
59  public class MasterStatusTmplImpl
60    extends org.jamon.AbstractTemplateImpl
61    implements org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.Intf
62  
63  {
64    private final HMaster master;
65    private final Map<String,Integer> frags;
66    private final ServerName metaLocation;
67    private final Set<ServerName> deadServers;
68    private final String filter;
69    private final boolean catalogJanitorEnabled;
70    private final ServerManager serverManager;
71    private final AssignmentManager assignmentManager;
72    private final String format;
73    private final List<ServerName> servers;
74    // 69, 1
75    
76    public String formatZKString() {
77      StringBuilder quorums = new StringBuilder();
78      String zkQuorum = master.getZooKeeper().getQuorum();
79  
80      if (null == zkQuorum) {
81        return quorums.toString();
82      }
83  
84      String[] zks = zkQuorum.split(",");
85  
86      if (zks.length == 0) {
87        return quorums.toString();
88      }
89  
90      for(int i = 0; i < zks.length; ++i) {
91        quorums.append(zks[i].trim());
92  
93        if (i != (zks.length - 1)) {
94          quorums.append("<br/>");
95        }
96      }
97  
98      return quorums.toString();
99    }
100 
101   protected static org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData p_implData)
102   {
103     if(! p_implData.getFrags__IsNotDefault())
104     {
105       p_implData.setFrags(null);
106     }
107     if(! p_implData.getMetaLocation__IsNotDefault())
108     {
109       p_implData.setMetaLocation(null);
110     }
111     if(! p_implData.getDeadServers__IsNotDefault())
112     {
113       p_implData.setDeadServers(null);
114     }
115     if(! p_implData.getFilter__IsNotDefault())
116     {
117       p_implData.setFilter("general");
118     }
119     if(! p_implData.getCatalogJanitorEnabled__IsNotDefault())
120     {
121       p_implData.setCatalogJanitorEnabled(true);
122     }
123     if(! p_implData.getServerManager__IsNotDefault())
124     {
125       p_implData.setServerManager(null);
126     }
127     if(! p_implData.getAssignmentManager__IsNotDefault())
128     {
129       p_implData.setAssignmentManager(null);
130     }
131     if(! p_implData.getFormat__IsNotDefault())
132     {
133       p_implData.setFormat("html");
134     }
135     if(! p_implData.getServers__IsNotDefault())
136     {
137       p_implData.setServers(null);
138     }
139     return p_implData;
140   }
141   public MasterStatusTmplImpl(org.jamon.TemplateManager p_templateManager, org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData p_implData)
142   {
143     super(p_templateManager, __jamon_setOptionalArguments(p_implData));
144     master = p_implData.getMaster();
145     frags = p_implData.getFrags();
146     metaLocation = p_implData.getMetaLocation();
147     deadServers = p_implData.getDeadServers();
148     filter = p_implData.getFilter();
149     catalogJanitorEnabled = p_implData.getCatalogJanitorEnabled();
150     serverManager = p_implData.getServerManager();
151     assignmentManager = p_implData.getAssignmentManager();
152     format = p_implData.getFormat();
153     servers = p_implData.getServers();
154   }
155   
156   @Override public void renderNoFlush(final java.io.Writer jamonWriter)
157     throws java.io.IOException
158   {
159     // 60, 1
160     if (format.equals("json") )
161     {
162       // 60, 30
163       jamonWriter.write("\n  ");
164       // 61, 3
165       {
166         org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl __jamon__var_0 = new org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl(this.getTemplateManager());
167         __jamon__var_0.setFormat("json" );
168         __jamon__var_0.setFilter(filter);
169         __jamon__var_0.renderNoFlush(jamonWriter);
170       }
171       // 61, 68
172       jamonWriter.write("\n  ");
173       // 62, 3
174       return; 
175     }
176     // 63, 7
177     jamonWriter.write("\n");
178     // 64, 1
179     
180 ServerManager serverManager = master.getServerManager();
181 AssignmentManager assignmentManager = master.getAssignmentManager();
182 
183     // 96, 1
184     jamonWriter.write("<!--[if IE]>\n<!DOCTYPE html>\n<![endif]-->\n<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <title>");
185     // 103, 12
186     if (master.isActiveMaster() )
187     {
188       // 103, 43
189       jamonWriter.write("Master: ");
190     }
191     // 103, 51
192     else
193     {
194       // 103, 58
195       jamonWriter.write("Backup Master: ");
196     }
197     // 103, 79
198     jamonWriter.write("\n    ");
199     // 104, 5
200     org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getServerName().getHostname()), jamonWriter);
201     // 104, 47
202     jamonWriter.write("</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta name=\"description\" content=\"\">\n    <link href=\"/static/css/bootstrap.min.css\" rel=\"stylesheet\">\n    <link href=\"/static/css/bootstrap-theme.min.css\" rel=\"stylesheet\">\n    <link href=\"/static/css/hbase.css\" rel=\"stylesheet\">\n  </head>\n\n  <body>\n\n    <div class=\"navbar  navbar-fixed-top navbar-default\">\n        <div class=\"container-fluid\">\n            <div class=\"navbar-header\">\n                <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n                    <span class=\"icon-bar\"></span>\n                    <span class=\"icon-bar\"></span>\n                    <span class=\"icon-bar\"></span>\n                </button>\n                <a class=\"navbar-brand\" href=\"/master-status\"><img src=\"/static/hbase_logo_small.png\" alt=\"HBase Logo\"/></a>\n            </div>\n            <div class=\"collapse navbar-collapse\">\n                <ul class=\"nav navbar-nav\">\n                <li class=\"active\"><a href=\"/\">Home</a></li>\n                <li><a href=\"/tablesDetailed.jsp\">Table Details</a></li>\n                <li><a href=\"/procedures.jsp\">Procedures</a></li>\n                <li><a href=\"/logs/\">Local Logs</a></li>\n                <li><a href=\"/logLevel\">Log Level</a></li>\n                <li><a href=\"/dump\">Debug Dump</a></li>\n                <li><a href=\"/jmx\">Metrics Dump</a></li>\n                ");
203     // 133, 17
204     if (HBaseConfiguration.isShowConfInServlet())
205     {
206       // 133, 64
207       jamonWriter.write("\n                <li><a href=\"/conf\">HBase Configuration</a></li>\n                ");
208     }
209     // 135, 23
210     jamonWriter.write("\n               </ul>\n            </div><!--/.nav-collapse -->\n        </div>\n    </div>\n\n    <div class=\"container-fluid content\">\n\t");
211     // 142, 2
212     if (master.isActiveMaster() )
213     {
214       // 142, 33
215       jamonWriter.write("\n        <div class=\"row inner_header\">\n            <div class=\"page-header\">\n                <h1>Master <small>");
216       // 145, 35
217       org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getServerName().getHostname()), jamonWriter);
218       // 145, 77
219       jamonWriter.write("</small></h1>\n            </div>\n        </div>\n\n        <div class=\"row\">\n        <!-- Various warnings that cluster admins should be aware of -->\n        ");
220       // 151, 9
221       if (JvmVersion.isBadJvmVersion() )
222       {
223         // 151, 45
224         jamonWriter.write("\n          <div class=\"alert alert-error\">\n          Your current JVM version ");
225         // 153, 36
226         org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(System.getProperty("java.version")), jamonWriter);
227         // 153, 76
228         jamonWriter.write(" is known to be\n          unstable with HBase. Please see the\n          <a href=\"http://wiki.apache.org/hadoop/Hbase/Troubleshooting#A18\">HBase wiki</a>\n          for details.\n          </div>\n        ");
229       }
230       // 158, 15
231       jamonWriter.write("\n        ");
232       // 159, 9
233       if (master.isInitialized() && !catalogJanitorEnabled )
234       {
235         // 159, 65
236         jamonWriter.write("\n          <div class=\"alert alert-error\">\n          Please note that your cluster is running with the CatalogJanitor disabled. It can be\n          re-enabled from the hbase shell by running the command 'catalogjanitor_switch true'\n          </div>\n        ");
237       }
238       // 164, 15
239       jamonWriter.write("\n        ");
240       // 165, 9
241       if (master.isInMaintenanceMode() )
242       {
243         // 165, 45
244         jamonWriter.write("\n          <div class=\"alert alert-warning\">\n          Your Master is in maintenance mode. This may be because of HBCK aborting while\n          running in repair mode. Please re-run HBCK in repair mode.\n          </div>\n        ");
245       }
246       // 170, 15
247       jamonWriter.write("\n        ");
248       // 171, 9
249       if (!master.isBalancerOn() )
250       {
251         // 171, 39
252         jamonWriter.write("\n          <div class=\"alert alert-warning\">\n            The Load Balancer is not enabled which will eventually cause performance degradation\n            in HBase as Regions will not be distributed across all RegionServers. The balancer\n            is only expected to be disabled during rolling upgrade scenarios.\n          </div>\n        ");
253       }
254       // 177, 15
255       jamonWriter.write("\n        ");
256       // 178, 9
257       if (!master.isSplitOrMergeEnabled(Admin.MasterSwitchType.SPLIT) )
258       {
259         // 178, 76
260         jamonWriter.write("\n          <div class=\"alert alert-warning\">\n            Region splits are disabled. This may be the result of HBCK aborting while\n            running in repair mode. Manually enable splits from the HBase shell,\n            or re-run HBCK in repair mode.\n          </div>\n        ");
261       }
262       // 184, 15
263       jamonWriter.write("\n        ");
264       // 185, 9
265       if (!master.isSplitOrMergeEnabled(Admin.MasterSwitchType.MERGE) )
266       {
267         // 185, 76
268         jamonWriter.write("\n          <div class=\"alert alert-warning\">\n            Region merges are disabled. This may be the result of HBCK aborting while\n            running in repair mode. Manually enable merges from the HBase shell,\n            or re-run HBCK in repair mode.\n          </div>\n        ");
269       }
270       // 191, 15
271       jamonWriter.write("\n\n        <section>\n            <h2>Region Servers</h2>\n            ");
272       // 195, 13
273       {
274         org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl __jamon__var_1 = new org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl(this.getTemplateManager());
275         __jamon__var_1.setServers(servers );
276         __jamon__var_1.renderNoFlush(jamonWriter, master);
277       }
278       // 195, 74
279       jamonWriter.write("\n\n            ");
280       // 197, 13
281       if ((deadServers != null) )
282       {
283         // 197, 42
284         jamonWriter.write("\n                ");
285         // 198, 17
286         {
287           // 198, 17
288           __jamon_innerUnit__deadRegionServers(jamonWriter);
289         }
290         // 198, 40
291         jamonWriter.write("\n            ");
292       }
293       // 199, 19
294       jamonWriter.write("\n        </section>\n        <section>\n            ");
295       // 202, 13
296       {
297         org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl __jamon__var_2 = new org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl(this.getTemplateManager());
298         __jamon__var_2.renderNoFlush(jamonWriter, master );
299       }
300       // 202, 58
301       jamonWriter.write("\n        </section>\n        <section>\n            <h2>Tables</h2>\n            <div class=\"tabbable\">\n                <ul class=\"nav nav-pills\">\n                    <li class=\"active\">\n                        <a href=\"#tab_userTables\" data-toggle=\"tab\">User Tables</a>\n                    </li>\n                    <li class=\"\">\n                        <a href=\"#tab_catalogTables\" data-toggle=\"tab\">System Tables</a>\n                    </li>\n                    <li class=\"\">\n                        <a href=\"#tab_userSnapshots\" data-toggle=\"tab\">Snapshots</a>\n                    </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_userTables\">\n                        ");
302       // 220, 25
303       if ((metaLocation != null) )
304       {
305         // 220, 55
306         jamonWriter.write("\n                            ");
307         // 221, 29
308         {
309           // 221, 29
310           __jamon_innerUnit__userTables(jamonWriter);
311         }
312         // 221, 45
313         jamonWriter.write("\n                        ");
314       }
315       // 222, 31
316       jamonWriter.write("\n                    </div>\n                    <div class=\"tab-pane\" id=\"tab_catalogTables\">\n                        ");
317       // 225, 25
318       if ((metaLocation != null) )
319       {
320         // 225, 55
321         jamonWriter.write("\n                            ");
322         // 226, 29
323         {
324           // 226, 29
325           __jamon_innerUnit__catalogTables(jamonWriter);
326         }
327         // 226, 48
328         jamonWriter.write("\n                        ");
329       }
330       // 227, 31
331       jamonWriter.write("\n                    </div>\n                    <div class=\"tab-pane\" id=\"tab_userSnapshots\">\n                        ");
332       // 230, 25
333       {
334         // 230, 25
335         __jamon_innerUnit__userSnapshots(jamonWriter);
336       }
337       // 230, 44
338       jamonWriter.write("\n                    </div>\n                </div>\n            </div>\n        </section>\n        ");
339       // 235, 9
340       if (master.getAssignmentManager() != null )
341       {
342         // 235, 54
343         jamonWriter.write("\n        ");
344         // 236, 9
345         {
346           org.apache.hadoop.hbase.tmpl.master.AssignmentManagerStatusTmpl __jamon__var_3 = new org.apache.hadoop.hbase.tmpl.master.AssignmentManagerStatusTmpl(this.getTemplateManager());
347           __jamon__var_3.renderNoFlush(jamonWriter, master.getAssignmentManager());
348         }
349         // 236, 90
350         jamonWriter.write("\n        ");
351       }
352       // 237, 15
353       jamonWriter.write("\n\t");
354     }
355     // 238, 2
356     else
357     {
358       // 238, 9
359       jamonWriter.write("\n        <section>\n            ");
360       // 240, 13
361       {
362         org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl __jamon__var_4 = new org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl(this.getTemplateManager());
363         __jamon__var_4.renderNoFlush(jamonWriter, master );
364       }
365       // 240, 58
366       jamonWriter.write("\n        </section>\n\t");
367     }
368     // 242, 8
369     jamonWriter.write("\n\n\n        <section>\n            ");
370     // 246, 13
371     {
372       org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl __jamon__var_5 = new org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl(this.getTemplateManager());
373       __jamon__var_5.setFilter(filter );
374       __jamon__var_5.renderNoFlush(jamonWriter);
375     }
376     // 246, 61
377     jamonWriter.write("\n        </section>\n\n        <section>\n            <h2>Software Attributes</h2>\n            <table id=\"attributes_table\" class=\"table table-striped\">\n                <tr>\n                    <th>Attribute Name</th>\n                    <th>Value</th>\n                    <th>Description</th>\n                </tr>\n                <tr>\n                    <td>HBase Version</td>\n                    <td>");
378     // 259, 25
379     org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getVersion()), jamonWriter);
380     // 259, 84
381     jamonWriter.write(", revision=");
382     // 259, 95
383     org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getRevision()), jamonWriter);
384     // 259, 155
385     jamonWriter.write("</td><td>HBase version and revision</td>\n                </tr>\n                <tr>\n                    <td>HBase Compiled</td>\n                    <td>");
386     // 263, 25
387     org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getDate()), jamonWriter);
388     // 263, 81
389     jamonWriter.write(", ");
390     // 263, 83
391     org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getUser()), jamonWriter);
392     // 263, 139
393     jamonWriter.write("</td>\n                    <td>When HBase version was compiled and by whom</td>\n                </tr>\n                <tr>\n                    <td>HBase Source Checksum</td>\n                    <td>");
394     // 268, 25
395     org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getSrcChecksum()), jamonWriter);
396     // 268, 88
397     jamonWriter.write("</td>\n                    <td>HBase source MD5 checksum</td>\n                </tr>\n                <tr>\n                    <td>Hadoop Version</td>\n                    <td>");
398     // 273, 25
399     org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.util.VersionInfo.getVersion()), jamonWriter);
400     // 273, 78
401     jamonWriter.write(", revision=");
402     // 273, 89
403     org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.util.VersionInfo.getRevision()), jamonWriter);
404     // 273, 143
405     jamonWriter.write("</td>\n                    <td>Hadoop version and revision</td>\n                </tr>\n                <tr>\n                    <td>Hadoop Compiled</td>\n                    <td>");
406     // 278, 25
407     org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.util.VersionInfo.getDate()), jamonWriter);
408     // 278, 75
409     jamonWriter.write(", ");
410     // 278, 77
411     org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.util.VersionInfo.getUser()), jamonWriter);
412     // 278, 127
413     jamonWriter.write("</td>\n                    <td>When Hadoop version was compiled and by whom</td>\n                </tr>\n                <tr>\n                    <td>Hadoop Source Checksum</td>\n                    <td>");
414     // 283, 25
415     org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.util.VersionInfo.getSrcChecksum()), jamonWriter);
416     // 283, 82
417     jamonWriter.write("</td>\n                    <td>Hadoop source MD5 checksum</td>\n                </tr>\n                <tr>\n                    <td>ZooKeeper Client Version</td>\n                    <td>");
418     // 288, 25
419     org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.zookeeper.Version.getVersion()), jamonWriter);
420     // 288, 72
421     jamonWriter.write(", revision=");
422     // 288, 83
423     org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.zookeeper.Version.getRevision()), jamonWriter);
424     // 288, 131
425     jamonWriter.write("</td>\n                    <td>ZooKeeper client version and revision</td>\n                </tr>\n                <tr>\n                    <td>ZooKeeper Client Compiled</td>\n                    <td>");
426     // 293, 25
427     org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.zookeeper.Version.getBuildDate()), jamonWriter);
428     // 293, 74
429     jamonWriter.write("</td>\n                    <td>When ZooKeeper client version was compiled</td>\n                </tr>\n                <tr>\n                    <td>Zookeeper Quorum</td>\n                    <td> ");
430     // 299, 26
431     org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(formatZKString()), jamonWriter);
432     // 299, 48
433     jamonWriter.write(" </td>\n                    <td>Addresses of all registered ZK servers. For more, see <a href=\"/zk.jsp\">zk dump</a>.</td>\n                </tr>\n                <tr>\n                    <td>Zookeeper Base Path</td>\n                    <td> ");
434     // 304, 26
435     org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getZooKeeper().getBaseZNode()), jamonWriter);
436     // 304, 68
437     jamonWriter.write("</td>\n                    <td>Root node of this cluster in ZK.</td>\n                </tr>\n                <tr>\n                    <td>HBase Root Directory</td>\n                    <td>");
438     // 309, 25
439     org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(FSUtils.getRootDir(master.getConfiguration()).toString()), jamonWriter);
440     // 309, 87
441     jamonWriter.write("</td>\n                    <td>Location of HBase home directory</td>\n                </tr>\n                <tr>\n                    <td>HMaster Start Time</td>\n                    <td>");
442     // 314, 25
443     org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(new Date(master.getMasterStartTime())), jamonWriter);
444     // 314, 68
445     jamonWriter.write("</td>\n                    <td>Date stamp of when this HMaster was started</td>\n                </tr>\n                ");
446     // 317, 17
447     if (master.isActiveMaster() )
448     {
449       // 317, 48
450       jamonWriter.write("\n\t                <tr>\n\t                    <td>HMaster Active Time</td>\n\t                    <td>");
451       // 320, 26
452       org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(new Date(master.getMasterActiveTime())), jamonWriter);
453       // 320, 70
454       jamonWriter.write("</td>\n\t                    <td>Date stamp of when this HMaster became active</td>\n\t                </tr>\n\t                <tr>\n\t                    <td>HBase Cluster ID</td>\n\t                    <td>");
455       // 325, 26
456       org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getClusterId() != null ? master.getClusterId() : "Not set"), jamonWriter);
457       // 325, 97
458       jamonWriter.write("</td>\n\t                    <td>Unique identifier generated for each HBase cluster</td>\n\t                </tr>\n\t                <tr>\n\t                    <td>Load average</td>\n\t                    <td>");
459       // 330, 26
460       org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getServerManager() == null ? "0.00" :
461 	                      StringUtils.limitDecimalTo2(master.getServerManager().getAverageLoad())), jamonWriter);
462       // 331, 98
463       jamonWriter.write("</td>\n\t                    <td>Average number of regions per regionserver. Naive computation.</td>\n\t                </tr>\n\t                ");
464       // 334, 18
465       if (frags != null )
466       {
467         // 334, 39
468         jamonWriter.write("\n\t                <tr>\n\t                    <td>Fragmentation</td>\n\t                    <td>");
469         // 337, 26
470         org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(frags.get("-TOTAL-") != null ? frags.get("-TOTAL-").intValue() + "%" : "n/a"), jamonWriter);
471         // 337, 108
472         jamonWriter.write("</td>\n\t                    <td>Overall fragmentation of all tables, including hbase:meta</td>\n\t                </tr>\n\t                ");
473       }
474       // 340, 24
475       jamonWriter.write("\n\t                <tr>\n\t                    <td>Coprocessors</td>\n\t                    <td>");
476       // 343, 26
477       org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getMasterCoprocessorHost() == null ? "[]" :
478 	                      java.util.Arrays.toString(master.getMasterCoprocessors())), jamonWriter);
479       // 344, 84
480       jamonWriter.write("</td>\n\t                    <td>Coprocessors currently loaded by the master</td>\n\t                </tr>\n\t                <tr>\n\t                    <td>LoadBalancer</td>\n\t                    <td>");
481       // 349, 26
482       org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getLoadBalancerClassName()), jamonWriter);
483       // 349, 65
484       jamonWriter.write("</td>\n\t                    <td>LoadBalancer to be used in the Master</td>\n\t                </tr>\n                ");
485     }
486     // 352, 23
487     jamonWriter.write("\n            </table>\n        </section>\n        </div>\n    </div> <!-- /container -->\n\n    <script src=\"/static/js/jquery.min.js\" type=\"text/javascript\"></script>\n    <script src=\"/static/js/jquery.tablesorter.min.js\" type=\"text/javascript\"></script>\n    <script src=\"/static/js/bootstrap.min.js\" type=\"text/javascript\"></script>\n    <script src=\"/static/js/tab.js\" type=\"text/javascript\"></script>\n    <script>\n        $(document).ready(function() \n            { \n                $(\"#baseStatsTable\").tablesorter();\n                $(\"#memoryStatsTable\").tablesorter();\n                $(\"#requestStatsTable\").tablesorter();\n                $(\"#storeStatsTable\").tablesorter();\n                $(\"#compactionStatsTable\").tablesorter();\n                \n                $(\"#userTables\").tablesorter();\n            } \n        );\n        </script>\n  </body>\n</html>\n\n");
488   }
489   
490   
491   // 525, 1
492   private void __jamon_innerUnit__deadRegionServers(final java.io.Writer jamonWriter)
493     throws java.io.IOException
494   {
495     // 527, 1
496     if ((deadServers != null && deadServers.size() > 0))
497     {
498       // 527, 55
499       jamonWriter.write("\n<h2>Dead Region Servers</h2>\n<table class=\"table table-striped\">\n    <tr>\n        <th></th>\n        <th>ServerName</th>\n        <th>Stop time</th>\n    </tr>\n    ");
500       // 535, 5
501       
502        DeadServer deadServerUtil = master.getServerManager().getDeadServers();
503        ServerName [] deadServerNames = deadServers.toArray(new ServerName[deadServers.size()]);
504          Arrays.sort(deadServerNames);
505          for (ServerName deadServerName: deadServerNames) {
506     
507       // 541, 5
508       jamonWriter.write("<tr>\n    \t<th></th>\n        <td>");
509       // 543, 13
510       org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(deadServerName), jamonWriter);
511       // 543, 33
512       jamonWriter.write("</td>\n        <td>");
513       // 544, 13
514       org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(deadServerUtil.getTimeOfDeath(deadServerName)), jamonWriter);
515       // 544, 64
516       jamonWriter.write("</td>\n    </tr>\n    ");
517       // 546, 5
518       
519         }
520     
521       // 549, 5
522       jamonWriter.write("<tr>\n        <th>Total: </th>\n        <td>servers: ");
523       // 551, 22
524       org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(deadServers.size()), jamonWriter);
525       // 551, 46
526       jamonWriter.write("</td>\n        <th></th>\n    </tr>\n</table>\n");
527     }
528     // 555, 7
529     jamonWriter.write("\n");
530   }
531   
532   
533   // 378, 1
534   private void __jamon_innerUnit__catalogTables(final java.io.Writer jamonWriter)
535     throws java.io.IOException
536   {
537     // 379, 1
538     
539  HTableDescriptor[] sysTables = null;
540  try (Admin admin = master.getConnection().getAdmin()) {
541    sysTables = master.isInitialized() ? admin.listTableDescriptorsByNamespace(
542      NamespaceDescriptor.SYSTEM_NAMESPACE_NAME_STR) : null;
543  }
544 
545     // 386, 1
546     if ((sysTables != null && sysTables.length > 0))
547     {
548       // 386, 51
549       jamonWriter.write("\n<table class=\"table table-striped\">\n<tr>\n    <th>Table Name</th>\n    ");
550       // 390, 5
551       if ((frags != null) )
552       {
553         // 390, 28
554         jamonWriter.write("\n        <th title=\"Fragmentation - Will be 0% after a major compaction and fluctuate during normal usage.\">Frag.</th>\n    ");
555       }
556       // 392, 11
557       jamonWriter.write("\n    <th>Description</th>\n</tr>\n");
558       // 395, 1
559       for (HTableDescriptor systemTable : sysTables)
560       {
561         // 395, 49
562         jamonWriter.write("\n<tr>\n");
563         // 397, 1
564         TableName tableName = systemTable.getTableName();
565         // 398, 5
566         jamonWriter.write("<td><a href=\"table.jsp?name=");
567         // 398, 33
568         org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tableName), jamonWriter);
569         // 398, 48
570         jamonWriter.write("\">");
571         // 398, 50
572         org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tableName), jamonWriter);
573         // 398, 65
574         jamonWriter.write("</a></td>\n    ");
575         // 399, 5
576         if ((frags != null))
577         {
578           // 399, 27
579           jamonWriter.write("\n        <td align=\"center\">");
580           // 400, 28
581           org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(frags.get(tableName.getNameAsString()) != null ? frags.get(tableName.getNameAsString())
582         .intValue() + "%" : "n/a"), jamonWriter);
583           // 401, 37
584           jamonWriter.write("</td>\n    ");
585         }
586         // 402, 11
587         jamonWriter.write("\n    ");
588         // 403, 5
589         String description = null;
590         if (tableName.equals(TableName.META_TABLE_NAME)){
591             description = "The hbase:meta table holds references to all User Table regions.";
592         } else if (tableName.equals(Canary.DEFAULT_WRITE_TABLE_NAME)){
593             description = "The hbase:canary table is used to sniff the write availbility of"
594               + " each regionserver.";
595         } else if (tableName.equals(AccessControlLists.ACL_TABLE_NAME)){
596             description = "The hbase:acl table holds information about acl";
597         } else if (tableName.equals(VisibilityConstants.LABELS_TABLE_NAME)){
598             description = "The hbase:labels table holds information about visibility labels.";
599         } else if (tableName.equals(TableName.NAMESPACE_TABLE_NAME)){
600             description = "The hbase:namespace table holds information about namespaces.";
601         } else if (tableName.equals(QuotaUtil.QUOTA_TABLE_NAME)){
602             description = "The hbase:quota table holds quota information about number" +
603             " or size of requests in a given time frame.";
604         } else if (tableName.equals(TableName.valueOf("hbase:rsgroup"))){
605             description = "The hbase:rsgroup table holds information about regionserver groups";
606         }
607     
608         // 422, 5
609         jamonWriter.write("<td>");
610         // 422, 9
611         org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(description), jamonWriter);
612         // 422, 26
613         jamonWriter.write("</td>\n</tr>\n");
614       }
615       // 424, 8
616       jamonWriter.write("\n</table>\n");
617     }
618     // 426, 7
619     jamonWriter.write("\n");
620   }
621   
622   
623   // 494, 1
624   private void __jamon_innerUnit__userSnapshots(final java.io.Writer jamonWriter)
625     throws java.io.IOException
626   {
627     // 495, 1
628     
629    List<SnapshotDescription> snapshots = null;
630    try (Admin admin = master.getConnection().getAdmin()) {
631      snapshots = master.isInitialized() ? admin.listSnapshots() : null;
632    }
633 
634     // 501, 1
635     if ((snapshots != null && snapshots.size() > 0))
636     {
637       // 501, 51
638       jamonWriter.write("\n<table class=\"table table-striped\">\n    <tr>\n        <th>Snapshot Name</th>\n        <th>Table</th>\n        <th>Creation Time</th>\n    </tr>\n    ");
639       // 508, 5
640       for (SnapshotDescription snapshotDesc : snapshots)
641       {
642         // 508, 57
643         jamonWriter.write("\n    ");
644         // 509, 5
645         
646         TableName snapshotTable = TableName.valueOf(snapshotDesc.getTable());
647     
648         // 512, 5
649         jamonWriter.write("<tr>\n        <td><a href=\"snapshot.jsp?name=");
650         // 513, 40
651         org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(snapshotDesc.getName()), jamonWriter);
652         // 513, 68
653         jamonWriter.write("\">");
654         // 513, 70
655         org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(snapshotDesc.getName()), jamonWriter);
656         // 513, 98
657         jamonWriter.write("</a> </td>\n        <td><a href=\"table.jsp?name=");
658         // 514, 37
659         org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(snapshotTable.getNameAsString()), jamonWriter);
660         // 514, 74
661         jamonWriter.write("\">");
662         // 514, 76
663         org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(snapshotTable.getNameAsString()), jamonWriter);
664         // 514, 113
665         jamonWriter.write("</a>\n        </td>\n        <td>");
666         // 516, 13
667         org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(new Date(snapshotDesc.getCreationTime())), jamonWriter);
668         // 516, 59
669         jamonWriter.write("</td>\n    </tr>\n    ");
670       }
671       // 518, 12
672       jamonWriter.write("\n    <p>");
673       // 519, 8
674       org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(snapshots.size()), jamonWriter);
675       // 519, 30
676       jamonWriter.write(" snapshot(s) in set. [<a href=\"/snapshotsStats.jsp\">Snapshot Storefile stats</a>]</p>\n</table>\n");
677     }
678     // 521, 7
679     jamonWriter.write("\n");
680   }
681   
682   
683   // 429, 1
684   private void __jamon_innerUnit__userTables(final java.io.Writer jamonWriter)
685     throws java.io.IOException
686   {
687     // 430, 1
688     
689    HTableDescriptor[] tables = null;
690    try (Admin admin = master.getConnection().getAdmin()) {
691      tables = master.isInitialized() ? admin.listTables() : null;
692    }
693 
694     // 436, 1
695     if ((tables != null && tables.length > 0))
696     {
697       // 436, 45
698       jamonWriter.write("\n<table id=\"userTables\" class=\"tablesorter table table-striped\">\n<thead>\n    <tr>\n        <th>Namespace</th>\n        <th>Table Name</th>\n        ");
699       // 442, 9
700       if ((frags != null) )
701       {
702         // 442, 32
703         jamonWriter.write("\n            <th title=\"Fragmentation - Will be 0% after a major compaction and fluctuate during normal usage.\">Frag.</th>\n        ");
704       }
705       // 444, 15
706       jamonWriter.write("\n        <th>Online Regions</th>\n        <th>Offline Regions</th>\n        <th>Failed Regions</th>\n        <th>Split Regions</th>\n        <th>Other Regions</th>\n        <th>Description</th>\n    </tr>\n</thead>\n<tbody>\n    ");
707       // 454, 5
708       for (HTableDescriptor htDesc : tables)
709       {
710         // 454, 45
711         jamonWriter.write("\n    ");
712         // 455, 5
713         
714       TableName tableName = htDesc.getTableName();
715       Map<RegionState.State, List<HRegionInfo>> tableRegions =
716           master.getAssignmentManager().getRegionStates()
717             .getRegionByStateOfTable(tableName);
718       int openRegionsCount = tableRegions.get(RegionState.State.OPEN).size();
719       int offlineRegionsCount = tableRegions.get(RegionState.State.OFFLINE).size();
720       int splitRegionsCount = tableRegions.get(RegionState.State.SPLIT).size();
721       int failedRegionsCount = tableRegions.get(RegionState.State.FAILED_OPEN).size()
722              + tableRegions.get(RegionState.State.FAILED_CLOSE).size();
723       int otherRegionsCount = 0;
724       for (List<HRegionInfo> list: tableRegions.values()) {
725          otherRegionsCount += list.size();
726       }
727       // now subtract known states
728       otherRegionsCount = otherRegionsCount - openRegionsCount
729                      - failedRegionsCount - offlineRegionsCount
730                      - splitRegionsCount;
731     
732         // 474, 5
733         jamonWriter.write("<tr>\n        <td>");
734         // 475, 13
735         org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tableName.getNamespaceAsString()), jamonWriter);
736         // 475, 51
737         jamonWriter.write("</td>\n        <td><a href=table.jsp?name=");
738         // 476, 36
739         org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tableName.getNameAsString()), jamonWriter);
740         // 476, 69
741         jamonWriter.write(">");
742         // 476, 70
743         org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tableName.getQualifierAsString()), jamonWriter);
744         // 476, 108
745         jamonWriter.write("</a> </td>\n        ");
746         // 477, 9
747         if ((frags != null) )
748         {
749           // 477, 32
750           jamonWriter.write("\n            <td align=\"center\">");
751           // 478, 32
752           org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(frags.get(tableName.getNameAsString()) != null ? frags.get(tableName.getNameAsString()).intValue() + "%" : "n/a"), jamonWriter);
753           // 478, 150
754           jamonWriter.write("</td>\n        ");
755         }
756         // 479, 15
757         jamonWriter.write("\n        <td>");
758         // 480, 13
759         org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(openRegionsCount), jamonWriter);
760         // 480, 35
761         jamonWriter.write("</td>\n        <td>");
762         // 481, 13
763         org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(offlineRegionsCount), jamonWriter);
764         // 481, 38
765         jamonWriter.write("</td>\n        <td>");
766         // 482, 13
767         org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(failedRegionsCount), jamonWriter);
768         // 482, 37
769         jamonWriter.write("</td>\n        <td>");
770         // 483, 13
771         org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(splitRegionsCount), jamonWriter);
772         // 483, 36
773         jamonWriter.write("</td>\n        <td>");
774         // 484, 13
775         org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(otherRegionsCount), jamonWriter);
776         // 484, 36
777         jamonWriter.write("</td>\n        <td>");
778         // 485, 13
779         org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(htDesc.toStringCustomizedValues()), jamonWriter);
780         // 485, 52
781         jamonWriter.write("</td>\n    </tr>\n    ");
782       }
783       // 487, 12
784       jamonWriter.write("\n    <p>");
785       // 488, 8
786       org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tables.length), jamonWriter);
787       // 488, 27
788       jamonWriter.write(" table(s) in set. [<a href=tablesDetailed.jsp>Details</a>]</p>\n</tbody>\n</table>\n");
789     }
790     // 491, 7
791     jamonWriter.write("\n");
792   }
793   
794   
795 }