001// Autogenerated Jamon implementation 002// /home/vagrant/repos/hbase/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon 003 004package org.apache.hadoop.hbase.tmpl.master; 005 006// 32, 1 007import java.util.*; 008// 33, 1 009import java.io.IOException; 010// 34, 1 011import org.apache.hadoop.hbase.client.replication.ReplicationPeerConfigUtil; 012// 35, 1 013import org.apache.hadoop.hbase.client.RegionInfo; 014// 36, 1 015import org.apache.hadoop.hbase.client.TableDescriptor; 016// 37, 1 017import org.apache.hadoop.hbase.replication.ReplicationPeerConfig; 018// 38, 1 019import org.apache.hadoop.hbase.replication.ReplicationPeerDescription; 020// 39, 1 021import org.apache.hadoop.hbase.HBaseConfiguration; 022// 40, 1 023import org.apache.hadoop.hbase.HConstants; 024// 41, 1 025import org.apache.hadoop.hbase.HTableDescriptor; 026// 42, 1 027import org.apache.hadoop.hbase.NamespaceDescriptor; 028// 43, 1 029import org.apache.hadoop.hbase.ServerName; 030// 44, 1 031import org.apache.hadoop.hbase.TableName; 032// 45, 1 033import org.apache.hadoop.hbase.client.Admin; 034// 46, 1 035import org.apache.hadoop.hbase.client.MasterSwitchType; 036// 47, 1 037import org.apache.hadoop.hbase.client.TableState; 038// 48, 1 039import org.apache.hadoop.hbase.master.assignment.AssignmentManager; 040// 49, 1 041import org.apache.hadoop.hbase.master.DeadServer; 042// 50, 1 043import org.apache.hadoop.hbase.master.HMaster; 044// 51, 1 045import org.apache.hadoop.hbase.master.RegionState; 046// 52, 1 047import org.apache.hadoop.hbase.master.ServerManager; 048// 53, 1 049import org.apache.hadoop.hbase.protobuf.ProtobufUtil; 050// 54, 1 051import org.apache.hadoop.hbase.quotas.QuotaUtil; 052// 55, 1 053import org.apache.hadoop.hbase.security.access.PermissionStorage; 054// 56, 1 055import org.apache.hadoop.hbase.security.visibility.VisibilityConstants; 056// 57, 1 057import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription; 058// 58, 1 059import org.apache.hadoop.hbase.tool.CanaryTool; 060// 59, 1 061import org.apache.hadoop.hbase.util.Bytes; 062// 60, 1 063import org.apache.hadoop.hbase.util.CommonFSUtils; 064// 61, 1 065import org.apache.hadoop.hbase.util.JvmVersion; 066// 62, 1 067import org.apache.hadoop.util.StringUtils; 068 069public class MasterStatusTmplImpl 070 extends org.jamon.AbstractTemplateImpl 071 implements org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.Intf 072 073{ 074 private final HMaster master; 075 private final AssignmentManager assignmentManager; 076 private final boolean catalogJanitorEnabled; 077 private final Set<ServerName> deadServers; 078 private final String filter; 079 private final String format; 080 private final Map<String,Integer> frags; 081 private final ServerName metaLocation; 082 private final ServerManager serverManager; 083 private final List<ServerName> servers; 084 // 74, 1 085 086 public String formatZKString() { 087 StringBuilder quorums = new StringBuilder(); 088 String zkQuorum = master.getZooKeeper().getQuorum(); 089 090 if (null == zkQuorum) { 091 return quorums.toString(); 092 } 093 094 String[] zks = zkQuorum.split(","); 095 096 if (zks.length == 0) { 097 return quorums.toString(); 098 } 099 100 for(int i = 0; i < zks.length; ++i) { 101 quorums.append(zks[i].trim()); 102 103 if (i != (zks.length - 1)) { 104 quorums.append("<br/>"); 105 } 106 } 107 108 return quorums.toString(); 109 } 110 111 // 101, 1 112 113 public static String getUserTables(HMaster master, List<TableDescriptor> tables){ 114 if (master.isInitialized()){ 115 try { 116 Map<String, TableDescriptor> descriptorMap = master.getTableDescriptors().getAll(); 117 if (descriptorMap != null) { 118 for (TableDescriptor desc : descriptorMap.values()) { 119 if (!desc.getTableName().isSystemTable()) { 120 tables.add(desc); 121 } 122 } 123 } 124 } catch (IOException e) { 125 return "Got user tables error, " + e.getMessage(); 126 } 127 } 128 return null; 129 } 130 131 protected static org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData p_implData) 132 { 133 if(! p_implData.getAssignmentManager__IsNotDefault()) 134 { 135 p_implData.setAssignmentManager(null); 136 } 137 if(! p_implData.getCatalogJanitorEnabled__IsNotDefault()) 138 { 139 p_implData.setCatalogJanitorEnabled(true); 140 } 141 if(! p_implData.getDeadServers__IsNotDefault()) 142 { 143 p_implData.setDeadServers(null); 144 } 145 if(! p_implData.getFilter__IsNotDefault()) 146 { 147 p_implData.setFilter("general"); 148 } 149 if(! p_implData.getFormat__IsNotDefault()) 150 { 151 p_implData.setFormat("html"); 152 } 153 if(! p_implData.getFrags__IsNotDefault()) 154 { 155 p_implData.setFrags(null); 156 } 157 if(! p_implData.getMetaLocation__IsNotDefault()) 158 { 159 p_implData.setMetaLocation(null); 160 } 161 if(! p_implData.getServerManager__IsNotDefault()) 162 { 163 p_implData.setServerManager(null); 164 } 165 if(! p_implData.getServers__IsNotDefault()) 166 { 167 p_implData.setServers(null); 168 } 169 return p_implData; 170 } 171 public MasterStatusTmplImpl(org.jamon.TemplateManager p_templateManager, org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData p_implData) 172 { 173 super(p_templateManager, __jamon_setOptionalArguments(p_implData)); 174 master = p_implData.getMaster(); 175 assignmentManager = p_implData.getAssignmentManager(); 176 catalogJanitorEnabled = p_implData.getCatalogJanitorEnabled(); 177 deadServers = p_implData.getDeadServers(); 178 filter = p_implData.getFilter(); 179 format = p_implData.getFormat(); 180 frags = p_implData.getFrags(); 181 metaLocation = p_implData.getMetaLocation(); 182 serverManager = p_implData.getServerManager(); 183 servers = p_implData.getServers(); 184 } 185 186 @Override public void renderNoFlush(final java.io.Writer jamonWriter) 187 throws java.io.IOException 188 { 189 // 65, 1 190 if (format.equals("json") ) 191 { 192 // 65, 30 193 jamonWriter.write("\n "); 194 // 66, 3 195 { 196 org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl __jamon__var_7 = new org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl(this.getTemplateManager()); 197 __jamon__var_7.setFilter(filter); 198 __jamon__var_7.setFormat("json" ); 199 __jamon__var_7.renderNoFlush(jamonWriter); 200 } 201 // 66, 68 202 jamonWriter.write("\n "); 203 // 67, 3 204 return; 205 } 206 // 68, 7 207 jamonWriter.write("\n"); 208 // 69, 1 209 210ServerManager serverManager = master.getServerManager(); 211AssignmentManager assignmentManager = master.getAssignmentManager(); 212 213 // 121, 1 214 jamonWriter.write("<!DOCTYPE html>\n<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <title>"); 215 // 126, 12 216 if (master.isActiveMaster() ) 217 { 218 // 126, 43 219 jamonWriter.write("Master: "); 220 } 221 // 126, 51 222 else 223 { 224 // 126, 58 225 jamonWriter.write("Backup Master: "); 226 } 227 // 126, 79 228 jamonWriter.write("\n "); 229 // 127, 5 230 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getServerName().getHostname()), jamonWriter); 231 // 127, 47 232 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=\"/master-status\">Home</a></li>\n <li><a href=\"/tablesDetailed.jsp\">Table Details</a></li>\n "); 233 // 151, 17 234 if (master.isActiveMaster() ) 235 { 236 // 151, 48 237 jamonWriter.write("\n <li><a href=\"/procedures.jsp\">Procedures & Locks</a></li>\n <li><a href=\"/hbck.jsp\">HBCK Report</a></li>\n "); 238 // 154, 21 239 if (master.getConfiguration().getBoolean(QuotaUtil.QUOTA_CONF_KEY, false) ) 240 { 241 // 154, 98 242 jamonWriter.write("\n <li><a href=\"/quotas.jsp\">Quotas</a></li>\n "); 243 } 244 // 156, 27 245 jamonWriter.write("\n "); 246 } 247 // 157, 23 248 jamonWriter.write("\n <li><a href=\"/processMaster.jsp\">Process Metrics</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 <li><a href=\"/prof\">Profiler</a></li>\n "); 249 // 164, 17 250 if (HBaseConfiguration.isShowConfInServlet()) 251 { 252 // 164, 64 253 jamonWriter.write("\n <li><a href=\"/conf\">HBase Configuration</a></li>\n "); 254 } 255 // 166, 23 256 jamonWriter.write("\n </ul>\n </div><!--/.nav-collapse -->\n </div>\n </div>\n\n <div class=\"container-fluid content\">\n\t"); 257 // 173, 2 258 if (master.isActiveMaster() ) 259 { 260 // 173, 33 261 jamonWriter.write("\n <div class=\"row inner_header\">\n <div class=\"page-header\">\n <h1>Master <small>"); 262 // 176, 35 263 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getServerName().getHostname()), jamonWriter); 264 // 176, 77 265 jamonWriter.write("</small></h1>\n </div>\n </div>\n\n <div class=\"row\">\n <!-- Various warnings that cluster admins should be aware of -->\n "); 266 // 182, 9 267 if (JvmVersion.isBadJvmVersion() ) 268 { 269 // 182, 45 270 jamonWriter.write("\n <div class=\"alert alert-error\">\n Your current JVM version "); 271 // 184, 36 272 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(System.getProperty("java.version")), jamonWriter); 273 // 184, 76 274 jamonWriter.write(" is known to be\n unstable with HBase. Please see the\n <a href=\"http://hbase.apache.org/book.html#trouble.log.gc\">HBase Reference Guide</a>\n for details.\n </div>\n "); 275 } 276 // 189, 15 277 jamonWriter.write("\n "); 278 // 190, 9 279 if (master.isInitialized() && !catalogJanitorEnabled ) 280 { 281 // 190, 65 282 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 "); 283 } 284 // 195, 15 285 jamonWriter.write("\n "); 286 // 196, 9 287 if (master.isInMaintenanceMode() ) 288 { 289 // 196, 45 290 jamonWriter.write("\n <div class=\"alert alert-warning\">\n Your Master is in maintenance mode. This is because hbase.master.maintenance_mode is\n set to true. Under the maintenance mode, no quota or no Master coprocessor is loaded.\n </div>\n "); 291 } 292 // 201, 15 293 jamonWriter.write("\n "); 294 // 202, 9 295 if (!master.isBalancerOn() ) 296 { 297 // 202, 39 298 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 "); 299 } 300 // 208, 15 301 jamonWriter.write("\n "); 302 // 209, 9 303 if (!master.isSplitOrMergeEnabled(MasterSwitchType.SPLIT) ) 304 { 305 // 209, 70 306 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 "); 307 } 308 // 215, 15 309 jamonWriter.write("\n "); 310 // 216, 9 311 if (!master.isSplitOrMergeEnabled(MasterSwitchType.MERGE) ) 312 { 313 // 216, 70 314 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 "); 315 } 316 // 222, 15 317 jamonWriter.write("\n "); 318 // 223, 9 319 if (master.getAssignmentManager() != null ) 320 { 321 // 223, 54 322 jamonWriter.write("\n "); 323 // 224, 11 324 { 325 org.apache.hadoop.hbase.tmpl.master.AssignmentManagerStatusTmpl __jamon__var_8 = new org.apache.hadoop.hbase.tmpl.master.AssignmentManagerStatusTmpl(this.getTemplateManager()); 326 __jamon__var_8.renderNoFlush(jamonWriter, master.getAssignmentManager()); 327 } 328 // 224, 92 329 jamonWriter.write("\n "); 330 } 331 // 225, 15 332 jamonWriter.write("\n "); 333 // 226, 9 334 if (!master.isInMaintenanceMode() ) 335 { 336 // 226, 46 337 jamonWriter.write("\n "); 338 // 227, 11 339 if (master.getMasterCoprocessorHost().findCoprocessor("RSGroupAdminEndpoint") != null && 340 serverManager.getOnlineServersList().size() > 0 ) 341 { 342 // 228, 63 343 jamonWriter.write("\n <section>\n <h2><a name=\"rsgroup\">RSGroup</a></h2>\n "); 344 // 231, 15 345 { 346 org.apache.hadoop.hbase.tmpl.master.RSGroupListTmpl __jamon__var_9 = new org.apache.hadoop.hbase.tmpl.master.RSGroupListTmpl(this.getTemplateManager()); 347 __jamon__var_9.renderNoFlush(jamonWriter, master, serverManager); 348 } 349 // 231, 81 350 jamonWriter.write("\n </section>\n "); 351 } 352 // 233, 17 353 jamonWriter.write("\n "); 354 } 355 // 234, 15 356 jamonWriter.write("\n <section>\n <h2><a name=\"regionservers\">Region Servers</a></h2>\n "); 357 // 237, 13 358 { 359 org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl __jamon__var_10 = new org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl(this.getTemplateManager()); 360 __jamon__var_10.setServers(servers ); 361 __jamon__var_10.renderNoFlush(jamonWriter, master); 362 } 363 // 237, 74 364 jamonWriter.write("\n\n "); 365 // 239, 13 366 if ((deadServers != null) ) 367 { 368 // 239, 42 369 jamonWriter.write("\n "); 370 // 240, 17 371 { 372 // 240, 17 373 __jamon_innerUnit__deadRegionServers(jamonWriter); 374 } 375 // 240, 40 376 jamonWriter.write("\n "); 377 } 378 // 241, 19 379 jamonWriter.write("\n </section>\n <section>\n "); 380 // 244, 13 381 { 382 org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl __jamon__var_11 = new org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl(this.getTemplateManager()); 383 __jamon__var_11.renderNoFlush(jamonWriter, master ); 384 } 385 // 244, 58 386 jamonWriter.write("\n </section>\n <section>\n <h2><a name=\"tables\">Tables</a></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 "); 387 // 262, 25 388 if ((metaLocation != null) ) 389 { 390 // 262, 55 391 jamonWriter.write("\n "); 392 // 263, 29 393 { 394 // 263, 29 395 __jamon_innerUnit__userTables(jamonWriter); 396 } 397 // 263, 45 398 jamonWriter.write("\n "); 399 } 400 // 264, 31 401 jamonWriter.write("\n </div>\n <div class=\"tab-pane\" id=\"tab_catalogTables\">\n "); 402 // 267, 25 403 if ((metaLocation != null) ) 404 { 405 // 267, 55 406 jamonWriter.write("\n "); 407 // 268, 29 408 { 409 // 268, 29 410 __jamon_innerUnit__catalogTables(jamonWriter); 411 } 412 // 268, 48 413 jamonWriter.write("\n "); 414 } 415 // 269, 31 416 jamonWriter.write("\n </div>\n <div class=\"tab-pane\" id=\"tab_userSnapshots\">\n "); 417 // 272, 25 418 { 419 // 272, 25 420 __jamon_innerUnit__userSnapshots(jamonWriter); 421 } 422 // 272, 44 423 jamonWriter.write("\n </div>\n </div>\n </div>\n </section>\n <section>\n <h2><a name=\"peers\">Peers</a></h2>\n "); 424 // 279, 13 425 { 426 // 279, 13 427 __jamon_innerUnit__peerConfigs(jamonWriter); 428 } 429 // 279, 30 430 jamonWriter.write("\n </section>\n\t"); 431 } 432 // 281, 2 433 else 434 { 435 // 281, 9 436 jamonWriter.write("\n <section>\n "); 437 // 283, 13 438 { 439 org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl __jamon__var_12 = new org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl(this.getTemplateManager()); 440 __jamon__var_12.renderNoFlush(jamonWriter, master ); 441 } 442 // 283, 58 443 jamonWriter.write("\n </section>\n\t"); 444 } 445 // 285, 8 446 jamonWriter.write("\n\n\n <section>\n "); 447 // 289, 13 448 { 449 org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl __jamon__var_13 = new org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl(this.getTemplateManager()); 450 __jamon__var_13.setFilter(filter); 451 __jamon__var_13.setParent("/master-status" ); 452 __jamon__var_13.renderNoFlush(jamonWriter); 453 } 454 // 289, 88 455 jamonWriter.write("\n </section>\n\n <section>\n <h2><a name=\"attributes\">Software Attributes</a></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>"); 456 // 302, 25 457 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getVersion()), jamonWriter); 458 // 302, 84 459 jamonWriter.write(", revision="); 460 // 302, 95 461 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getRevision()), jamonWriter); 462 // 302, 155 463 jamonWriter.write("</td><td>HBase version and revision</td>\n </tr>\n <tr>\n <td>HBase Compiled</td>\n <td>"); 464 // 306, 25 465 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getDate()), jamonWriter); 466 // 306, 81 467 jamonWriter.write(", "); 468 // 306, 83 469 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getUser()), jamonWriter); 470 // 306, 139 471 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>"); 472 // 311, 25 473 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getSrcChecksum()), jamonWriter); 474 // 311, 88 475 jamonWriter.write("</td>\n <td>HBase source SHA512 checksum</td>\n </tr>\n <tr>\n <td>Hadoop Version</td>\n <td>"); 476 // 316, 25 477 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.util.VersionInfo.getVersion()), jamonWriter); 478 // 316, 78 479 jamonWriter.write(", revision="); 480 // 316, 89 481 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.util.VersionInfo.getRevision()), jamonWriter); 482 // 316, 143 483 jamonWriter.write("</td>\n <td>Hadoop version and revision</td>\n </tr>\n <tr>\n <td>Hadoop Compiled</td>\n <td>"); 484 // 321, 25 485 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.util.VersionInfo.getDate()), jamonWriter); 486 // 321, 75 487 jamonWriter.write(", "); 488 // 321, 77 489 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.util.VersionInfo.getUser()), jamonWriter); 490 // 321, 127 491 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>"); 492 // 326, 25 493 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.util.VersionInfo.getSrcChecksum()), jamonWriter); 494 // 326, 82 495 jamonWriter.write("</td>\n <td>Hadoop source MD5 checksum</td>\n </tr>\n <tr>\n <td>ZooKeeper Client Version</td>\n <td>"); 496 // 331, 25 497 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.zookeeper.Version.getVersion()), jamonWriter); 498 // 331, 72 499 jamonWriter.write(", revision="); 500 // 331, 83 501 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.zookeeper.Version.getRevisionHash()), jamonWriter); 502 // 331, 135 503 jamonWriter.write("</td>\n <td>ZooKeeper client version and revision hash</td>\n </tr>\n <tr>\n <td>ZooKeeper Client Compiled</td>\n <td>"); 504 // 336, 25 505 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.zookeeper.Version.getBuildDate()), jamonWriter); 506 // 336, 74 507 jamonWriter.write("</td>\n <td>When ZooKeeper client version was compiled</td>\n </tr>\n <tr>\n <td>ZooKeeper Quorum</td>\n <td> "); 508 // 342, 26 509 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(formatZKString()), jamonWriter); 510 // 342, 48 511 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> "); 512 // 347, 26 513 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getZooKeeper().getZNodePaths().baseZNode), jamonWriter); 514 // 347, 79 515 jamonWriter.write("</td>\n <td>Root node of this cluster in ZK.</td>\n </tr>\n <tr>\n <td>Cluster Key</td>\n <td> "); 516 // 352, 26 517 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(formatZKString()), jamonWriter); 518 // 352, 48 519 jamonWriter.write(":"); 520 // 352, 49 521 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getZooKeeper().getZNodePaths().baseZNode), jamonWriter); 522 // 352, 102 523 jamonWriter.write("</td>\n <td>Key to add this cluster as a peer for replication. Use 'help \"add_peer\"' in the shell for details.</td>\n </tr>\n <tr>\n <td>HBase Root Directory</td>\n <td>"); 524 // 357, 25 525 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(CommonFSUtils.getRootDir(master.getConfiguration()).toString()), jamonWriter); 526 // 357, 93 527 jamonWriter.write("</td>\n <td>Location of HBase home directory</td>\n </tr>\n <tr>\n <td>HMaster Start Time</td>\n <td>"); 528 // 362, 25 529 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(new Date(master.getMasterStartTime())), jamonWriter); 530 // 362, 68 531 jamonWriter.write("</td>\n <td>Date stamp of when this HMaster was started</td>\n </tr>\n "); 532 // 365, 17 533 if (master.isActiveMaster() ) 534 { 535 // 365, 48 536 jamonWriter.write("\n\t <tr>\n\t <td>HMaster Active Time</td>\n\t <td>"); 537 // 368, 26 538 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(new Date(master.getMasterActiveTime())), jamonWriter); 539 // 368, 70 540 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>"); 541 // 373, 26 542 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getClusterId() != null ? master.getClusterId() : "Not set"), jamonWriter); 543 // 373, 97 544 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>"); 545 // 378, 26 546 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getServerManager() == null ? "0.00" : 547 StringUtils.limitDecimalTo2(master.getServerManager().getAverageLoad())), jamonWriter); 548 // 379, 98 549 jamonWriter.write("</td>\n\t <td>Average number of regions per regionserver. Naive computation.</td>\n\t </tr>\n\t "); 550 // 382, 18 551 if (frags != null ) 552 { 553 // 382, 39 554 jamonWriter.write("\n\t <tr>\n\t <td>Fragmentation</td>\n\t <td>"); 555 // 385, 26 556 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(frags.get("-TOTAL-") != null ? frags.get("-TOTAL-").intValue() + "%" : "n/a"), jamonWriter); 557 // 385, 108 558 jamonWriter.write("</td>\n\t <td>Overall fragmentation of all tables, including hbase:meta</td>\n\t </tr>\n\t "); 559 } 560 // 388, 24 561 jamonWriter.write("\n\t <tr>\n\t <td>Coprocessors</td>\n\t <td>"); 562 // 391, 26 563 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getMasterCoprocessorHost() == null ? "[]" : 564 java.util.Arrays.toString(master.getMasterCoprocessors())), jamonWriter); 565 // 392, 84 566 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>"); 567 // 397, 26 568 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getLoadBalancerClassName()), jamonWriter); 569 // 397, 65 570 jamonWriter.write("</td>\n\t <td>LoadBalancer to be used in the Master</td>\n\t </tr>\n "); 571 } 572 // 400, 23 573 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 src=\"/static/js/jqSpager.js\" type=\"text/javascript\"></script>\n <script>\n $(document).ready(function()\n {\n $.tablesorter.addParser(\n {\n id: 'filesize',\n is: function(s) {\n return s.match(new RegExp( /([\\.0-9]+)\\ (B|KB|MB|GB|TB)/ ));\n },\n format: function(s) {\n var suf = s.match(new RegExp( /(KB|B|GB|MB|TB)$/ ))[1];\n var num = parseFloat(s.match( new RegExp( /([\\.0-9]+)\\ (B|KB|MB|GB|TB)/ ))[0]);\n switch(suf) {\n case 'B':\n return num;\n case 'KB':\n return num * 1024;\n case 'MB':\n return num * 1024 * 1024;\n case 'GB':\n return num * 1024 * 1024 * 1024;\n case 'TB':\n return num * 1024 * 1024 * 1024 * 1024;\n }\n },\n type: 'numeric'\n });\n $.tablesorter.addParser(\n {\n id: \"separator\",\n is: function (s) {\n return /^[0-9]?[0-9,]*$/.test(s);\n }, format: function (s) {\n return $.tablesorter.formatFloat( s.replace(/,/g,'') );\n }, type: \"numeric\"\n });\n $(\"#baseStatsTable\").tablesorter({\n headers: {\n 4: {sorter: 'separator'},\n 5: {sorter: 'separator'}\n }\n });\n $(\"#memoryStatsTable\").tablesorter({\n headers: {\n 1: {sorter: 'filesize'},\n 2: {sorter: 'filesize'},\n 3: {sorter: 'filesize'}\n }\n });\n $(\"#requestStatsTable\").tablesorter({\n headers: {\n 1: {sorter: 'separator'},\n 2: {sorter: 'separator'},\n 3: {sorter: 'separator'},\n 4: {sorter: 'separator'}\n }\n });\n $(\"#storeStatsTable\").tablesorter({\n headers: {\n 1: {sorter: 'separator'},\n 2: {sorter: 'separator'},\n 3: {sorter: 'filesize'},\n 4: {sorter: 'filesize'},\n 5: {sorter: 'filesize'},\n 6: {sorter: 'filesize'}\n }\n });\n $(\"#compactionStatsTable\").tablesorter({\n headers: {\n 1: {sorter: 'separator'},\n 2: {sorter: 'separator'},\n 3: {sorter: 'separator'}\n }\n });\n\n $(\"#userTables\").tablesorter();\n\n function showRitPages() {\n if (!$(\"#rit_page_num\")) {\n return;\n }\n var ritTotalNum = parseInt($(\"#rit_page_num\").val());\n if (!ritTotalNum || ritTotalNum < 1) {\n return;\n }\n\n $(\"#rit_pagination\").sPage({\n page:1,\n total:ritTotalNum,\n pageSize:5,\n noData: false,\n showPN:true,\n prevPage:\"prev\",\n nextPage:\"next\",\n fastForward: 5,\n backFun:function(page){\n $(\"div[id^='tab_rits']\").removeClass('active');\n $(\"#tab_rits\"+page).addClass('active');\n }\n });\n\n }\n showRitPages();\n\n }\n );\n </script>\n </body>\n</html>\n\n"); 574 } 575 576 577 // 521, 1 578 private void __jamon_innerUnit__catalogTables(final java.io.Writer jamonWriter) 579 throws java.io.IOException 580 { 581 // 522, 1 582 583 List<TableDescriptor> sysTables = master.isInitialized() ? 584 master.listTableDescriptorsByNamespace(NamespaceDescriptor.SYSTEM_NAMESPACE_NAME_STR) : null; 585 586 // 526, 1 587 if ((sysTables != null && sysTables.size() > 0)) 588 { 589 // 526, 51 590 jamonWriter.write("\n<table class=\"table table-striped\">\n<tr>\n <th>Table Name</th>\n "); 591 // 530, 5 592 if ((frags != null) ) 593 { 594 // 530, 28 595 jamonWriter.write("\n <th title=\"Fragmentation - Will be 0% after a major compaction and fluctuate during normal usage.\">Frag.</th>\n "); 596 } 597 // 532, 11 598 jamonWriter.write("\n <th>Description</th>\n</tr>\n"); 599 // 535, 1 600 for (TableDescriptor systemTable : sysTables) 601 { 602 // 535, 48 603 jamonWriter.write("\n<tr>\n"); 604 // 537, 1 605 TableName tableName = systemTable.getTableName(); 606 // 538, 5 607 jamonWriter.write("<td><a href=\"table.jsp?name="); 608 // 538, 33 609 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tableName), jamonWriter); 610 // 538, 48 611 jamonWriter.write("\">"); 612 // 538, 50 613 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tableName), jamonWriter); 614 // 538, 65 615 jamonWriter.write("</a></td>\n "); 616 // 539, 5 617 if ((frags != null)) 618 { 619 // 539, 27 620 jamonWriter.write("\n <td align=\"center\">"); 621 // 540, 28 622 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(frags.get(tableName.getNameAsString()) != null ? frags.get(tableName.getNameAsString()) 623 .intValue() + "%" : "n/a"), jamonWriter); 624 // 541, 37 625 jamonWriter.write("</td>\n "); 626 } 627 // 542, 11 628 jamonWriter.write("\n "); 629 // 543, 5 630 String description = null; 631 if (tableName.equals(TableName.META_TABLE_NAME)){ 632 description = "The hbase:meta table holds references to all User Table regions."; 633 } else if (tableName.equals(CanaryTool.DEFAULT_WRITE_TABLE_NAME)){ 634 description = "The hbase:canary table is used to sniff the write availbility of" 635 + " each regionserver."; 636 } else if (tableName.equals(PermissionStorage.ACL_TABLE_NAME)){ 637 description = "The hbase:acl table holds information about acl."; 638 } else if (tableName.equals(VisibilityConstants.LABELS_TABLE_NAME)){ 639 description = "The hbase:labels table holds information about visibility labels."; 640 } else if (tableName.equals(TableName.NAMESPACE_TABLE_NAME)){ 641 description = "The hbase:namespace table holds information about namespaces."; 642 } else if (tableName.equals(QuotaUtil.QUOTA_TABLE_NAME)){ 643 description = "The hbase:quota table holds quota information about number" + 644 " or size of requests in a given time frame."; 645 } else if (tableName.equals(TableName.valueOf("hbase:rsgroup"))){ 646 description = "The hbase:rsgroup table holds information about regionserver groups."; 647 } else if (tableName.equals(TableName.valueOf("hbase:replication"))) { 648 description = "The hbase:replication table tracks cross cluster replication through " + 649 "WAL file offsets."; 650 } 651 652 // 565, 5 653 jamonWriter.write("<td>"); 654 // 565, 9 655 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(description), jamonWriter); 656 // 565, 26 657 jamonWriter.write("</td>\n</tr>\n"); 658 } 659 // 567, 8 660 jamonWriter.write("\n</table>\n"); 661 } 662 // 569, 7 663 jamonWriter.write("\n"); 664 } 665 666 667 // 685, 1 668 private void __jamon_innerUnit__deadRegionServers(final java.io.Writer jamonWriter) 669 throws java.io.IOException 670 { 671 // 687, 1 672 if ((deadServers != null && deadServers.size() > 0)) 673 { 674 // 687, 55 675 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 "); 676 // 695, 5 677 678 DeadServer deadServerUtil = master.getServerManager().getDeadServers(); 679 ServerName [] deadServerNames = deadServers.toArray(new ServerName[deadServers.size()]); 680 Arrays.sort(deadServerNames); 681 for (ServerName deadServerName: deadServerNames) { 682 683 // 701, 5 684 jamonWriter.write("<tr>\n \t<th></th>\n <td>"); 685 // 703, 13 686 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(deadServerName), jamonWriter); 687 // 703, 33 688 jamonWriter.write("</td>\n <td>"); 689 // 704, 13 690 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(deadServerUtil.getTimeOfDeath(deadServerName)), jamonWriter); 691 // 704, 64 692 jamonWriter.write("</td>\n </tr>\n "); 693 // 706, 5 694 695 } 696 697 // 709, 5 698 jamonWriter.write("<tr>\n <th>Total: </th>\n <td>servers: "); 699 // 711, 22 700 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(deadServers.size()), jamonWriter); 701 // 711, 46 702 jamonWriter.write("</td>\n <th></th>\n </tr>\n</table>\n"); 703 } 704 // 715, 7 705 jamonWriter.write("\n"); 706 } 707 708 709 // 718, 1 710 private void __jamon_innerUnit__peerConfigs(final java.io.Writer jamonWriter) 711 throws java.io.IOException 712 { 713 // 719, 1 714 715 List<ReplicationPeerDescription> peers = null; 716 if (master.getReplicationPeerManager() != null) { 717 peers = master.getReplicationPeerManager().listPeers(null); 718 } 719 720 // 725, 1 721 jamonWriter.write("<table class=\"table table-striped\">\n <tr>\n <th>Peer Id</th>\n <th>Cluster Key</th>\n <th>Endpoint</th>\n <th>State</th>\n <th>IsSerial</th>\n <th>Bandwidth</th>\n <th>ReplicateAll</th>\n <th>Namespaces</th>\n <th>Exclude Namespaces</th>\n <th>Table Cfs</th>\n <th>Exclude Table Cfs</th>\n </tr>\n"); 722 // 739, 1 723 if ((peers != null && peers.size() > 0)) 724 { 725 // 739, 43 726 jamonWriter.write("\n "); 727 // 740, 5 728 for (ReplicationPeerDescription peer : peers ) 729 { 730 // 740, 53 731 jamonWriter.write("\n "); 732 // 741, 5 733 734 String peerId = peer.getPeerId(); 735 ReplicationPeerConfig peerConfig = peer.getPeerConfig(); 736 737 // 745, 5 738 jamonWriter.write("<tr>\n <td>"); 739 // 746, 13 740 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peerId), jamonWriter); 741 // 746, 25 742 jamonWriter.write("</td>\n <td>"); 743 // 747, 13 744 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peerConfig.getClusterKey()), jamonWriter); 745 // 747, 45 746 jamonWriter.write("</td>\n <td>"); 747 // 748, 13 748 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peerConfig.getReplicationEndpointImpl()), jamonWriter); 749 // 748, 58 750 jamonWriter.write("</td>\n <td>"); 751 // 749, 13 752 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peer.isEnabled() ? "ENABLED" : "DISABLED"), jamonWriter); 753 // 749, 60 754 jamonWriter.write("</td>\n <td>"); 755 // 750, 13 756 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peerConfig.isSerial()), jamonWriter); 757 // 750, 40 758 jamonWriter.write("</td>\n <td>"); 759 // 751, 13 760 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peerConfig.getBandwidth() == 0? "UNLIMITED" : StringUtils.humanReadableInt(peerConfig.getBandwidth())), jamonWriter); 761 // 751, 120 762 jamonWriter.write("</td>\n <td>"); 763 // 752, 13 764 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peerConfig.replicateAllUserTables()), jamonWriter); 765 // 752, 54 766 jamonWriter.write("</td>\n <td>\n "); 767 // 754, 12 768 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peerConfig.getNamespaces() == null ? "" : ReplicationPeerConfigUtil.convertToString(peerConfig.getNamespaces()).replaceAll(";", "; ")), jamonWriter); 769 // 754, 151 770 jamonWriter.write("\n </td>\n <td>\n "); 771 // 757, 13 772 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peerConfig.getExcludeNamespaces() == null ? "" : ReplicationPeerConfigUtil.convertToString(peerConfig.getExcludeNamespaces()).replaceAll(";", "; ")), jamonWriter); 773 // 757, 166 774 jamonWriter.write("\n </td>\n <td>\n "); 775 // 760, 12 776 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peerConfig.getTableCFsMap() == null ? "" : ReplicationPeerConfigUtil.convertToString(peerConfig.getTableCFsMap()).replaceAll(";", "; ")), jamonWriter); 777 // 760, 153 778 jamonWriter.write("\n </td>\n <td>\n "); 779 // 763, 12 780 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peerConfig.getExcludeTableCFsMap() == null ? "" : ReplicationPeerConfigUtil.convertToString(peerConfig.getExcludeTableCFsMap()).replaceAll(";", "; ")), jamonWriter); 781 // 763, 167 782 jamonWriter.write("\n </td>\n </tr>\n "); 783 } 784 // 766, 12 785 jamonWriter.write("\n"); 786 } 787 // 767, 7 788 jamonWriter.write("\n<tr><td>Total: "); 789 // 768, 16 790 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf((peers != null) ? peers.size() : 0), jamonWriter); 791 // 768, 56 792 jamonWriter.write("</td></tr>\n</table>\n"); 793 } 794 795 796 // 656, 1 797 private void __jamon_innerUnit__userSnapshots(final java.io.Writer jamonWriter) 798 throws java.io.IOException 799 { 800 // 657, 1 801 802 List<SnapshotDescription> snapshots = master.isInitialized() ? 803 master.getSnapshotManager().getCompletedSnapshots() : null; 804 805 // 661, 1 806 if ((snapshots != null && snapshots.size() > 0)) 807 { 808 // 661, 51 809 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 "); 810 // 668, 5 811 for (SnapshotDescription snapshotDesc : snapshots) 812 { 813 // 668, 57 814 jamonWriter.write("\n "); 815 // 669, 5 816 817 TableName snapshotTable = TableName.valueOf(snapshotDesc.getTable()); 818 819 // 672, 5 820 jamonWriter.write("<tr>\n <td><a href=\"snapshot.jsp?name="); 821 // 673, 40 822 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(snapshotDesc.getName()), jamonWriter); 823 // 673, 68 824 jamonWriter.write("\">"); 825 // 673, 70 826 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(snapshotDesc.getName()), jamonWriter); 827 // 673, 98 828 jamonWriter.write("</a> </td>\n <td><a href=\"table.jsp?name="); 829 // 674, 37 830 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(snapshotTable.getNameAsString()), jamonWriter); 831 // 674, 74 832 jamonWriter.write("\">"); 833 // 674, 76 834 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(snapshotTable.getNameAsString()), jamonWriter); 835 // 674, 113 836 jamonWriter.write("</a>\n </td>\n <td>"); 837 // 676, 13 838 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(new Date(snapshotDesc.getCreationTime())), jamonWriter); 839 // 676, 59 840 jamonWriter.write("</td>\n </tr>\n "); 841 } 842 // 678, 12 843 jamonWriter.write("\n <p>"); 844 // 679, 8 845 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(snapshots.size()), jamonWriter); 846 // 679, 30 847 jamonWriter.write(" snapshot(s) in set. [<a href=\"/snapshotsStats.jsp\">Snapshot Storefile stats</a>]</p>\n</table>\n"); 848 } 849 // 681, 7 850 jamonWriter.write("\n"); 851 } 852 853 854 // 572, 1 855 private void __jamon_innerUnit__userTables(final java.io.Writer jamonWriter) 856 throws java.io.IOException 857 { 858 // 573, 1 859 860 List<TableDescriptor> tables = new ArrayList<TableDescriptor>(); 861 String errorMessage = getUserTables(master, tables); 862 863 // 577, 1 864 if ((tables.size() == 0 && errorMessage != null)) 865 { 866 // 577, 52 867 jamonWriter.write("\n<p> "); 868 // 578, 5 869 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(errorMessage), jamonWriter); 870 // 578, 23 871 jamonWriter.write(" </p>\n"); 872 } 873 // 579, 7 874 jamonWriter.write("\n\n"); 875 // 581, 1 876 if ((tables != null && tables.size() > 0)) 877 { 878 // 581, 45 879 jamonWriter.write("\n<table id=\"userTables\" class=\"tablesorter table table-striped\">\n<thead>\n <tr>\n <th style=\"vertical-align: middle;\" rowspan=\"2\">Namespace</th>\n <th style=\"vertical-align: middle;\" rowspan=\"2\">Name</th>\n "); 880 // 587, 9 881 if ((frags != null) ) 882 { 883 // 587, 32 884 jamonWriter.write("\n <th title=\"Fragmentation - Will be 0% after a major compaction and fluctuate during normal usage.\">Frag.</th>\n "); 885 } 886 // 589, 15 887 jamonWriter.write("\n <th style=\"vertical-align:middle;\" rowspan=\"2\">State</th>\n <th style=\"text-align: center\" colspan=\"8\">Regions</th>\n <th style=\"vertical-align:middle;\" rowspan=\"2\">Description</th>\n </tr>\n <tr>\n <th>OPEN</th>\n <th>OPENING</th>\n <th>CLOSED</th>\n <th>CLOSING</th>\n <th>OFFLINE</th>\n <th>FAILED</th>\n <th>SPLIT</th>\n <th>Other</th>\n </tr>\n</thead>\n<tbody>\n "); 888 // 606, 5 889 for (TableDescriptor desc : tables) 890 { 891 // 606, 42 892 jamonWriter.write("\n "); 893 // 607, 5 894 895 HTableDescriptor htDesc = new HTableDescriptor(desc); 896 TableName tableName = htDesc.getTableName(); 897 TableState tableState = master.getTableStateManager().getTableState(tableName); 898 Map<RegionState.State, List<RegionInfo>> tableRegions = 899 master.getAssignmentManager().getRegionStates() 900 .getRegionByStateOfTable(tableName); 901 int openRegionsCount = tableRegions.get(RegionState.State.OPEN).size(); 902 int openingRegionsCount = tableRegions.get(RegionState.State.OPENING).size(); 903 int closedRegionsCount = tableRegions.get(RegionState.State.CLOSED).size(); 904 int closingRegionsCount = tableRegions.get(RegionState.State.CLOSING).size(); 905 int offlineRegionsCount = tableRegions.get(RegionState.State.OFFLINE).size(); 906 int splitRegionsCount = tableRegions.get(RegionState.State.SPLIT).size(); 907 int failedRegionsCount = tableRegions.get(RegionState.State.FAILED_OPEN).size() 908 + tableRegions.get(RegionState.State.FAILED_CLOSE).size(); 909 int otherRegionsCount = 0; 910 for (List<RegionInfo> list: tableRegions.values()) { 911 otherRegionsCount += list.size(); 912 } 913 // now subtract known states 914 otherRegionsCount = otherRegionsCount - openRegionsCount 915 - failedRegionsCount - offlineRegionsCount 916 - splitRegionsCount - openingRegionsCount 917 - closedRegionsCount - closingRegionsCount; 918 919 // 632, 5 920 jamonWriter.write("<tr>\n <td>"); 921 // 633, 13 922 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tableName.getNamespaceAsString()), jamonWriter); 923 // 633, 51 924 jamonWriter.write("</td>\n <td><a href=table.jsp?name="); 925 // 634, 36 926 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tableName.getNameAsString()), jamonWriter); 927 // 634, 69 928 jamonWriter.write(">"); 929 // 634, 70 930 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tableName.getQualifierAsString()), jamonWriter); 931 // 634, 108 932 jamonWriter.write("</a> </td>\n "); 933 // 635, 9 934 if ((frags != null) ) 935 { 936 // 635, 32 937 jamonWriter.write("\n <td align=\"center\">"); 938 // 636, 32 939 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(frags.get(tableName.getNameAsString()) != null ? frags.get(tableName.getNameAsString()).intValue() + "%" : "n/a"), jamonWriter); 940 // 636, 150 941 jamonWriter.write("</td>\n "); 942 } 943 // 637, 15 944 jamonWriter.write("\n <td>"); 945 // 638, 13 946 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tableState.getState()), jamonWriter); 947 // 638, 40 948 jamonWriter.write("</td>\n <td>"); 949 // 639, 13 950 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(openRegionsCount), jamonWriter); 951 // 639, 35 952 jamonWriter.write("</td>\n "); 953 // 640, 9 954 if ((openingRegionsCount > 0) ) 955 { 956 // 640, 42 957 jamonWriter.write(" <td><a href=\"/rits.jsp?table="); 958 // 640, 72 959 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tableName.getNameAsString()), jamonWriter); 960 // 640, 105 961 jamonWriter.write("&state=OPENING\">"); 962 // 640, 121 963 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(openingRegionsCount), jamonWriter); 964 // 640, 146 965 jamonWriter.write("</td> "); 966 } 967 // 640, 152 968 else 969 { 970 // 640, 159 971 jamonWriter.write("<td>"); 972 // 640, 163 973 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(openingRegionsCount), jamonWriter); 974 // 640, 188 975 jamonWriter.write("</td> "); 976 } 977 // 640, 200 978 jamonWriter.write("\n <td>"); 979 // 641, 13 980 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(closedRegionsCount), jamonWriter); 981 // 641, 37 982 jamonWriter.write("</td>\n "); 983 // 642, 9 984 if ((closingRegionsCount > 0) ) 985 { 986 // 642, 42 987 jamonWriter.write(" <td><a href=\"/rits.jsp?table="); 988 // 642, 72 989 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tableName.getNameAsString()), jamonWriter); 990 // 642, 105 991 jamonWriter.write("&state=CLOSING\">"); 992 // 642, 121 993 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(closingRegionsCount), jamonWriter); 994 // 642, 146 995 jamonWriter.write("</td> "); 996 } 997 // 642, 152 998 else 999 { 1000 // 642, 159 1001 jamonWriter.write("<td>"); 1002 // 642, 163 1003 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(closingRegionsCount), jamonWriter); 1004 // 642, 188 1005 jamonWriter.write("</td> "); 1006 } 1007 // 642, 200 1008 jamonWriter.write("\n <td>"); 1009 // 643, 13 1010 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(offlineRegionsCount), jamonWriter); 1011 // 643, 38 1012 jamonWriter.write("</td>\n <td>"); 1013 // 644, 13 1014 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(failedRegionsCount), jamonWriter); 1015 // 644, 37 1016 jamonWriter.write("</td>\n <td>"); 1017 // 645, 13 1018 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(splitRegionsCount), jamonWriter); 1019 // 645, 36 1020 jamonWriter.write("</td>\n <td>"); 1021 // 646, 13 1022 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(otherRegionsCount), jamonWriter); 1023 // 646, 36 1024 jamonWriter.write("</td>\n <td>"); 1025 // 647, 13 1026 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(htDesc.toStringCustomizedValues()), jamonWriter); 1027 // 647, 52 1028 jamonWriter.write("</td>\n </tr>\n "); 1029 } 1030 // 649, 12 1031 jamonWriter.write("\n <p>"); 1032 // 650, 8 1033 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tables.size()), jamonWriter); 1034 // 650, 27 1035 jamonWriter.write(" table(s) in set. [<a href=tablesDetailed.jsp>Details</a>]</p>\n</tbody>\n</table>\n"); 1036 } 1037 // 653, 7 1038 jamonWriter.write("\n"); 1039 } 1040 1041 1042}