001// Autogenerated Jamon implementation 002// /Users/petersomogyi/projects/hbase-upstream/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.AccessControlLists; 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.FSUtils; 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_0 = new org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl(this.getTemplateManager()); 197 __jamon__var_0.setFilter(filter); 198 __jamon__var_0.setFormat("json" ); 199 __jamon__var_0.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 } 239 // 154, 23 240 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 "); 241 // 161, 17 242 if (HBaseConfiguration.isShowConfInServlet()) 243 { 244 // 161, 64 245 jamonWriter.write("\n <li><a href=\"/conf\">HBase Configuration</a></li>\n "); 246 } 247 // 163, 23 248 jamonWriter.write("\n </ul>\n </div><!--/.nav-collapse -->\n </div>\n </div>\n\n <div class=\"container-fluid content\">\n\t"); 249 // 170, 2 250 if (master.isActiveMaster() ) 251 { 252 // 170, 33 253 jamonWriter.write("\n <div class=\"row inner_header\">\n <div class=\"page-header\">\n <h1>Master <small>"); 254 // 173, 35 255 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getServerName().getHostname()), jamonWriter); 256 // 173, 77 257 jamonWriter.write("</small></h1>\n </div>\n </div>\n\n <div class=\"row\">\n <!-- Various warnings that cluster admins should be aware of -->\n "); 258 // 179, 9 259 if (JvmVersion.isBadJvmVersion() ) 260 { 261 // 179, 45 262 jamonWriter.write("\n <div class=\"alert alert-error\">\n Your current JVM version "); 263 // 181, 36 264 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(System.getProperty("java.version")), jamonWriter); 265 // 181, 76 266 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 "); 267 } 268 // 186, 15 269 jamonWriter.write("\n "); 270 // 187, 9 271 if (master.isInitialized() && !catalogJanitorEnabled ) 272 { 273 // 187, 65 274 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 "); 275 } 276 // 192, 15 277 jamonWriter.write("\n "); 278 // 193, 9 279 if (master.isInMaintenanceMode() ) 280 { 281 // 193, 45 282 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 "); 283 } 284 // 198, 15 285 jamonWriter.write("\n "); 286 // 199, 9 287 if (!master.isBalancerOn() ) 288 { 289 // 199, 39 290 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 "); 291 } 292 // 205, 15 293 jamonWriter.write("\n "); 294 // 206, 9 295 if (!master.isSplitOrMergeEnabled(MasterSwitchType.SPLIT) ) 296 { 297 // 206, 70 298 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 "); 299 } 300 // 212, 15 301 jamonWriter.write("\n "); 302 // 213, 9 303 if (!master.isSplitOrMergeEnabled(MasterSwitchType.MERGE) ) 304 { 305 // 213, 70 306 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 "); 307 } 308 // 219, 15 309 jamonWriter.write("\n "); 310 // 220, 9 311 if (master.getAssignmentManager() != null ) 312 { 313 // 220, 54 314 jamonWriter.write("\n "); 315 // 221, 11 316 { 317 org.apache.hadoop.hbase.tmpl.master.AssignmentManagerStatusTmpl __jamon__var_1 = new org.apache.hadoop.hbase.tmpl.master.AssignmentManagerStatusTmpl(this.getTemplateManager()); 318 __jamon__var_1.renderNoFlush(jamonWriter, master.getAssignmentManager()); 319 } 320 // 221, 92 321 jamonWriter.write("\n "); 322 } 323 // 222, 15 324 jamonWriter.write("\n "); 325 // 223, 9 326 if (!master.isInMaintenanceMode() ) 327 { 328 // 223, 46 329 jamonWriter.write("\n "); 330 // 224, 11 331 if (master.getMasterCoprocessorHost().findCoprocessor("RSGroupAdminEndpoint") != null && 332 serverManager.getOnlineServersList().size() > 0 ) 333 { 334 // 225, 63 335 jamonWriter.write("\n <section>\n <h2><a name=\"rsgroup\">RSGroup</a></h2>\n "); 336 // 228, 15 337 { 338 org.apache.hadoop.hbase.tmpl.master.RSGroupListTmpl __jamon__var_2 = new org.apache.hadoop.hbase.tmpl.master.RSGroupListTmpl(this.getTemplateManager()); 339 __jamon__var_2.renderNoFlush(jamonWriter, master, serverManager); 340 } 341 // 228, 81 342 jamonWriter.write("\n </section>\n "); 343 } 344 // 230, 17 345 jamonWriter.write("\n "); 346 } 347 // 231, 15 348 jamonWriter.write("\n <section>\n <h2><a name=\"regionservers\">Region Servers</a></h2>\n "); 349 // 234, 13 350 { 351 org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl __jamon__var_3 = new org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl(this.getTemplateManager()); 352 __jamon__var_3.setServers(servers ); 353 __jamon__var_3.renderNoFlush(jamonWriter, master); 354 } 355 // 234, 74 356 jamonWriter.write("\n\n "); 357 // 236, 13 358 if ((deadServers != null) ) 359 { 360 // 236, 42 361 jamonWriter.write("\n "); 362 // 237, 17 363 { 364 // 237, 17 365 __jamon_innerUnit__deadRegionServers(jamonWriter); 366 } 367 // 237, 40 368 jamonWriter.write("\n "); 369 } 370 // 238, 19 371 jamonWriter.write("\n </section>\n <section>\n "); 372 // 241, 13 373 { 374 org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl __jamon__var_4 = new org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl(this.getTemplateManager()); 375 __jamon__var_4.renderNoFlush(jamonWriter, master ); 376 } 377 // 241, 58 378 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 "); 379 // 259, 25 380 if ((metaLocation != null) ) 381 { 382 // 259, 55 383 jamonWriter.write("\n "); 384 // 260, 29 385 { 386 // 260, 29 387 __jamon_innerUnit__userTables(jamonWriter); 388 } 389 // 260, 45 390 jamonWriter.write("\n "); 391 } 392 // 261, 31 393 jamonWriter.write("\n </div>\n <div class=\"tab-pane\" id=\"tab_catalogTables\">\n "); 394 // 264, 25 395 if ((metaLocation != null) ) 396 { 397 // 264, 55 398 jamonWriter.write("\n "); 399 // 265, 29 400 { 401 // 265, 29 402 __jamon_innerUnit__catalogTables(jamonWriter); 403 } 404 // 265, 48 405 jamonWriter.write("\n "); 406 } 407 // 266, 31 408 jamonWriter.write("\n </div>\n <div class=\"tab-pane\" id=\"tab_userSnapshots\">\n "); 409 // 269, 25 410 { 411 // 269, 25 412 __jamon_innerUnit__userSnapshots(jamonWriter); 413 } 414 // 269, 44 415 jamonWriter.write("\n </div>\n </div>\n </div>\n </section>\n <section>\n <h2><a name=\"peers\">Peers</a></h2>\n "); 416 // 276, 13 417 { 418 // 276, 13 419 __jamon_innerUnit__peerConfigs(jamonWriter); 420 } 421 // 276, 30 422 jamonWriter.write("\n </section>\n\t"); 423 } 424 // 278, 2 425 else 426 { 427 // 278, 9 428 jamonWriter.write("\n <section>\n "); 429 // 280, 13 430 { 431 org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl __jamon__var_5 = new org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl(this.getTemplateManager()); 432 __jamon__var_5.renderNoFlush(jamonWriter, master ); 433 } 434 // 280, 58 435 jamonWriter.write("\n </section>\n\t"); 436 } 437 // 282, 8 438 jamonWriter.write("\n\n\n <section>\n "); 439 // 286, 13 440 { 441 org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl __jamon__var_6 = new org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl(this.getTemplateManager()); 442 __jamon__var_6.setFilter(filter); 443 __jamon__var_6.setParent("/master-status" ); 444 __jamon__var_6.renderNoFlush(jamonWriter); 445 } 446 // 286, 88 447 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>"); 448 // 299, 25 449 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getVersion()), jamonWriter); 450 // 299, 84 451 jamonWriter.write(", revision="); 452 // 299, 95 453 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getRevision()), jamonWriter); 454 // 299, 155 455 jamonWriter.write("</td><td>HBase version and revision</td>\n </tr>\n <tr>\n <td>HBase Compiled</td>\n <td>"); 456 // 303, 25 457 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getDate()), jamonWriter); 458 // 303, 81 459 jamonWriter.write(", "); 460 // 303, 83 461 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getUser()), jamonWriter); 462 // 303, 139 463 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>"); 464 // 308, 25 465 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getSrcChecksum()), jamonWriter); 466 // 308, 88 467 jamonWriter.write("</td>\n <td>HBase source MD5 checksum</td>\n </tr>\n <tr>\n <td>Hadoop Version</td>\n <td>"); 468 // 313, 25 469 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.util.VersionInfo.getVersion()), jamonWriter); 470 // 313, 78 471 jamonWriter.write(", revision="); 472 // 313, 89 473 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.util.VersionInfo.getRevision()), jamonWriter); 474 // 313, 143 475 jamonWriter.write("</td>\n <td>Hadoop version and revision</td>\n </tr>\n <tr>\n <td>Hadoop Compiled</td>\n <td>"); 476 // 318, 25 477 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.util.VersionInfo.getDate()), jamonWriter); 478 // 318, 75 479 jamonWriter.write(", "); 480 // 318, 77 481 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.util.VersionInfo.getUser()), jamonWriter); 482 // 318, 127 483 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>"); 484 // 323, 25 485 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.util.VersionInfo.getSrcChecksum()), jamonWriter); 486 // 323, 82 487 jamonWriter.write("</td>\n <td>Hadoop source MD5 checksum</td>\n </tr>\n <tr>\n <td>ZooKeeper Client Version</td>\n <td>"); 488 // 328, 25 489 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.zookeeper.Version.getVersion()), jamonWriter); 490 // 328, 72 491 jamonWriter.write(", revision="); 492 // 328, 83 493 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.zookeeper.Version.getRevision()), jamonWriter); 494 // 328, 131 495 jamonWriter.write("</td>\n <td>ZooKeeper client version and revision</td>\n </tr>\n <tr>\n <td>ZooKeeper Client Compiled</td>\n <td>"); 496 // 333, 25 497 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.zookeeper.Version.getBuildDate()), jamonWriter); 498 // 333, 74 499 jamonWriter.write("</td>\n <td>When ZooKeeper client version was compiled</td>\n </tr>\n <tr>\n <td>ZooKeeper Quorum</td>\n <td> "); 500 // 339, 26 501 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(formatZKString()), jamonWriter); 502 // 339, 48 503 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> "); 504 // 344, 26 505 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getZooKeeper().getZNodePaths().baseZNode), jamonWriter); 506 // 344, 79 507 jamonWriter.write("</td>\n <td>Root node of this cluster in ZK.</td>\n </tr>\n <tr>\n <td>Cluster Key</td>\n <td> "); 508 // 349, 26 509 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(formatZKString()), jamonWriter); 510 // 349, 48 511 jamonWriter.write(":"); 512 // 349, 49 513 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getZooKeeper().getZNodePaths().baseZNode), jamonWriter); 514 // 349, 102 515 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>"); 516 // 354, 25 517 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(FSUtils.getRootDir(master.getConfiguration()).toString()), jamonWriter); 518 // 354, 87 519 jamonWriter.write("</td>\n <td>Location of HBase home directory</td>\n </tr>\n <tr>\n <td>HMaster Start Time</td>\n <td>"); 520 // 359, 25 521 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(new Date(master.getMasterStartTime())), jamonWriter); 522 // 359, 68 523 jamonWriter.write("</td>\n <td>Date stamp of when this HMaster was started</td>\n </tr>\n "); 524 // 362, 17 525 if (master.isActiveMaster() ) 526 { 527 // 362, 48 528 jamonWriter.write("\n\t <tr>\n\t <td>HMaster Active Time</td>\n\t <td>"); 529 // 365, 26 530 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(new Date(master.getMasterActiveTime())), jamonWriter); 531 // 365, 70 532 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>"); 533 // 370, 26 534 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getClusterId() != null ? master.getClusterId() : "Not set"), jamonWriter); 535 // 370, 97 536 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>"); 537 // 375, 26 538 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getServerManager() == null ? "0.00" : 539 StringUtils.limitDecimalTo2(master.getServerManager().getAverageLoad())), jamonWriter); 540 // 376, 98 541 jamonWriter.write("</td>\n\t <td>Average number of regions per regionserver. Naive computation.</td>\n\t </tr>\n\t "); 542 // 379, 18 543 if (frags != null ) 544 { 545 // 379, 39 546 jamonWriter.write("\n\t <tr>\n\t <td>Fragmentation</td>\n\t <td>"); 547 // 382, 26 548 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(frags.get("-TOTAL-") != null ? frags.get("-TOTAL-").intValue() + "%" : "n/a"), jamonWriter); 549 // 382, 108 550 jamonWriter.write("</td>\n\t <td>Overall fragmentation of all tables, including hbase:meta</td>\n\t </tr>\n\t "); 551 } 552 // 385, 24 553 jamonWriter.write("\n\t <tr>\n\t <td>Coprocessors</td>\n\t <td>"); 554 // 388, 26 555 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getMasterCoprocessorHost() == null ? "[]" : 556 java.util.Arrays.toString(master.getMasterCoprocessors())), jamonWriter); 557 // 389, 84 558 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>"); 559 // 394, 26 560 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getLoadBalancerClassName()), jamonWriter); 561 // 394, 65 562 jamonWriter.write("</td>\n\t <td>LoadBalancer to be used in the Master</td>\n\t </tr>\n "); 563 } 564 // 397, 23 565 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"); 566 } 567 568 569 // 423, 1 570 private void __jamon_innerUnit__catalogTables(final java.io.Writer jamonWriter) 571 throws java.io.IOException 572 { 573 // 424, 1 574 575 List<TableDescriptor> sysTables = master.isInitialized() ? 576 master.listTableDescriptorsByNamespace(NamespaceDescriptor.SYSTEM_NAMESPACE_NAME_STR) : null; 577 578 // 428, 1 579 if ((sysTables != null && sysTables.size() > 0)) 580 { 581 // 428, 51 582 jamonWriter.write("\n<table class=\"table table-striped\">\n<tr>\n <th>Table Name</th>\n "); 583 // 432, 5 584 if ((frags != null) ) 585 { 586 // 432, 28 587 jamonWriter.write("\n <th title=\"Fragmentation - Will be 0% after a major compaction and fluctuate during normal usage.\">Frag.</th>\n "); 588 } 589 // 434, 11 590 jamonWriter.write("\n <th>Description</th>\n</tr>\n"); 591 // 437, 1 592 for (TableDescriptor systemTable : sysTables) 593 { 594 // 437, 48 595 jamonWriter.write("\n<tr>\n"); 596 // 439, 1 597 TableName tableName = systemTable.getTableName(); 598 // 440, 5 599 jamonWriter.write("<td><a href=\"table.jsp?name="); 600 // 440, 33 601 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tableName), jamonWriter); 602 // 440, 48 603 jamonWriter.write("\">"); 604 // 440, 50 605 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tableName), jamonWriter); 606 // 440, 65 607 jamonWriter.write("</a></td>\n "); 608 // 441, 5 609 if ((frags != null)) 610 { 611 // 441, 27 612 jamonWriter.write("\n <td align=\"center\">"); 613 // 442, 28 614 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(frags.get(tableName.getNameAsString()) != null ? frags.get(tableName.getNameAsString()) 615 .intValue() + "%" : "n/a"), jamonWriter); 616 // 443, 37 617 jamonWriter.write("</td>\n "); 618 } 619 // 444, 11 620 jamonWriter.write("\n "); 621 // 445, 5 622 String description = null; 623 if (tableName.equals(TableName.META_TABLE_NAME)){ 624 description = "The hbase:meta table holds references to all User Table regions."; 625 } else if (tableName.equals(CanaryTool.DEFAULT_WRITE_TABLE_NAME)){ 626 description = "The hbase:canary table is used to sniff the write availbility of" 627 + " each regionserver."; 628 } else if (tableName.equals(AccessControlLists.ACL_TABLE_NAME)){ 629 description = "The hbase:acl table holds information about acl."; 630 } else if (tableName.equals(VisibilityConstants.LABELS_TABLE_NAME)){ 631 description = "The hbase:labels table holds information about visibility labels."; 632 } else if (tableName.equals(TableName.NAMESPACE_TABLE_NAME)){ 633 description = "The hbase:namespace table holds information about namespaces."; 634 } else if (tableName.equals(QuotaUtil.QUOTA_TABLE_NAME)){ 635 description = "The hbase:quota table holds quota information about number" + 636 " or size of requests in a given time frame."; 637 } else if (tableName.equals(TableName.valueOf("hbase:rsgroup"))){ 638 description = "The hbase:rsgroup table holds information about regionserver groups."; 639 } else if (tableName.equals(TableName.valueOf("hbase:replication"))) { 640 description = "The hbase:replication table tracks cross cluster replication through " + 641 "WAL file offsets."; 642 } 643 644 // 467, 5 645 jamonWriter.write("<td>"); 646 // 467, 9 647 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(description), jamonWriter); 648 // 467, 26 649 jamonWriter.write("</td>\n</tr>\n"); 650 } 651 // 469, 8 652 jamonWriter.write("\n</table>\n"); 653 } 654 // 471, 7 655 jamonWriter.write("\n"); 656 } 657 658 659 // 587, 1 660 private void __jamon_innerUnit__deadRegionServers(final java.io.Writer jamonWriter) 661 throws java.io.IOException 662 { 663 // 589, 1 664 if ((deadServers != null && deadServers.size() > 0)) 665 { 666 // 589, 55 667 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 "); 668 // 597, 5 669 670 DeadServer deadServerUtil = master.getServerManager().getDeadServers(); 671 ServerName [] deadServerNames = deadServers.toArray(new ServerName[deadServers.size()]); 672 Arrays.sort(deadServerNames); 673 for (ServerName deadServerName: deadServerNames) { 674 675 // 603, 5 676 jamonWriter.write("<tr>\n \t<th></th>\n <td>"); 677 // 605, 13 678 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(deadServerName), jamonWriter); 679 // 605, 33 680 jamonWriter.write("</td>\n <td>"); 681 // 606, 13 682 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(deadServerUtil.getTimeOfDeath(deadServerName)), jamonWriter); 683 // 606, 64 684 jamonWriter.write("</td>\n </tr>\n "); 685 // 608, 5 686 687 } 688 689 // 611, 5 690 jamonWriter.write("<tr>\n <th>Total: </th>\n <td>servers: "); 691 // 613, 22 692 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(deadServers.size()), jamonWriter); 693 // 613, 46 694 jamonWriter.write("</td>\n <th></th>\n </tr>\n</table>\n"); 695 } 696 // 617, 7 697 jamonWriter.write("\n"); 698 } 699 700 701 // 620, 1 702 private void __jamon_innerUnit__peerConfigs(final java.io.Writer jamonWriter) 703 throws java.io.IOException 704 { 705 // 621, 1 706 707 List<ReplicationPeerDescription> peers = null; 708 if (master.getReplicationPeerManager() != null) { 709 peers = master.getReplicationPeerManager().listPeers(null); 710 } 711 712 // 627, 1 713 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"); 714 // 641, 1 715 if ((peers != null && peers.size() > 0)) 716 { 717 // 641, 43 718 jamonWriter.write("\n "); 719 // 642, 5 720 for (ReplicationPeerDescription peer : peers ) 721 { 722 // 642, 53 723 jamonWriter.write("\n "); 724 // 643, 5 725 726 String peerId = peer.getPeerId(); 727 ReplicationPeerConfig peerConfig = peer.getPeerConfig(); 728 729 // 647, 5 730 jamonWriter.write("<tr>\n <td>"); 731 // 648, 13 732 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peerId), jamonWriter); 733 // 648, 25 734 jamonWriter.write("</td>\n <td>"); 735 // 649, 13 736 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peerConfig.getClusterKey()), jamonWriter); 737 // 649, 45 738 jamonWriter.write("</td>\n <td>"); 739 // 650, 13 740 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peerConfig.getReplicationEndpointImpl()), jamonWriter); 741 // 650, 58 742 jamonWriter.write("</td>\n <td>"); 743 // 651, 13 744 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peer.isEnabled() ? "ENABLED" : "DISABLED"), jamonWriter); 745 // 651, 60 746 jamonWriter.write("</td>\n <td>"); 747 // 652, 13 748 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peerConfig.isSerial()), jamonWriter); 749 // 652, 40 750 jamonWriter.write("</td>\n <td>"); 751 // 653, 13 752 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peerConfig.getBandwidth() == 0? "UNLIMITED" : StringUtils.humanReadableInt(peerConfig.getBandwidth())), jamonWriter); 753 // 653, 120 754 jamonWriter.write("</td>\n <td>"); 755 // 654, 13 756 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peerConfig.replicateAllUserTables()), jamonWriter); 757 // 654, 54 758 jamonWriter.write("</td>\n <td>\n "); 759 // 656, 12 760 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peerConfig.getNamespaces() == null ? "" : ReplicationPeerConfigUtil.convertToString(peerConfig.getNamespaces()).replaceAll(";", "; ")), jamonWriter); 761 // 656, 151 762 jamonWriter.write("\n </td>\n <td>\n "); 763 // 659, 13 764 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peerConfig.getExcludeNamespaces() == null ? "" : ReplicationPeerConfigUtil.convertToString(peerConfig.getExcludeNamespaces()).replaceAll(";", "; ")), jamonWriter); 765 // 659, 166 766 jamonWriter.write("\n </td>\n <td>\n "); 767 // 662, 12 768 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peerConfig.getTableCFsMap() == null ? "" : ReplicationPeerConfigUtil.convertToString(peerConfig.getTableCFsMap()).replaceAll(";", "; ")), jamonWriter); 769 // 662, 153 770 jamonWriter.write("\n </td>\n <td>\n "); 771 // 665, 12 772 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(peerConfig.getExcludeTableCFsMap() == null ? "" : ReplicationPeerConfigUtil.convertToString(peerConfig.getExcludeTableCFsMap()).replaceAll(";", "; ")), jamonWriter); 773 // 665, 167 774 jamonWriter.write("\n </td>\n </tr>\n "); 775 } 776 // 668, 12 777 jamonWriter.write("\n"); 778 } 779 // 669, 7 780 jamonWriter.write("\n<tr><td>Total: "); 781 // 670, 16 782 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf((peers != null) ? peers.size() : 0), jamonWriter); 783 // 670, 56 784 jamonWriter.write("</td></tr>\n</table>\n"); 785 } 786 787 788 // 558, 1 789 private void __jamon_innerUnit__userSnapshots(final java.io.Writer jamonWriter) 790 throws java.io.IOException 791 { 792 // 559, 1 793 794 List<SnapshotDescription> snapshots = master.isInitialized() ? 795 master.getSnapshotManager().getCompletedSnapshots() : null; 796 797 // 563, 1 798 if ((snapshots != null && snapshots.size() > 0)) 799 { 800 // 563, 51 801 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 "); 802 // 570, 5 803 for (SnapshotDescription snapshotDesc : snapshots) 804 { 805 // 570, 57 806 jamonWriter.write("\n "); 807 // 571, 5 808 809 TableName snapshotTable = TableName.valueOf(snapshotDesc.getTable()); 810 811 // 574, 5 812 jamonWriter.write("<tr>\n <td><a href=\"snapshot.jsp?name="); 813 // 575, 40 814 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(snapshotDesc.getName()), jamonWriter); 815 // 575, 68 816 jamonWriter.write("\">"); 817 // 575, 70 818 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(snapshotDesc.getName()), jamonWriter); 819 // 575, 98 820 jamonWriter.write("</a> </td>\n <td><a href=\"table.jsp?name="); 821 // 576, 37 822 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(snapshotTable.getNameAsString()), jamonWriter); 823 // 576, 74 824 jamonWriter.write("\">"); 825 // 576, 76 826 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(snapshotTable.getNameAsString()), jamonWriter); 827 // 576, 113 828 jamonWriter.write("</a>\n </td>\n <td>"); 829 // 578, 13 830 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(new Date(snapshotDesc.getCreationTime())), jamonWriter); 831 // 578, 59 832 jamonWriter.write("</td>\n </tr>\n "); 833 } 834 // 580, 12 835 jamonWriter.write("\n <p>"); 836 // 581, 8 837 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(snapshots.size()), jamonWriter); 838 // 581, 30 839 jamonWriter.write(" snapshot(s) in set. [<a href=\"/snapshotsStats.jsp\">Snapshot Storefile stats</a>]</p>\n</table>\n"); 840 } 841 // 583, 7 842 jamonWriter.write("\n"); 843 } 844 845 846 // 474, 1 847 private void __jamon_innerUnit__userTables(final java.io.Writer jamonWriter) 848 throws java.io.IOException 849 { 850 // 475, 1 851 852 List<TableDescriptor> tables = new ArrayList<TableDescriptor>(); 853 String errorMessage = getUserTables(master, tables); 854 855 // 479, 1 856 if ((tables.size() == 0 && errorMessage != null)) 857 { 858 // 479, 52 859 jamonWriter.write("\n<p> "); 860 // 480, 5 861 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(errorMessage), jamonWriter); 862 // 480, 23 863 jamonWriter.write(" </p>\n"); 864 } 865 // 481, 7 866 jamonWriter.write("\n\n"); 867 // 483, 1 868 if ((tables != null && tables.size() > 0)) 869 { 870 // 483, 45 871 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 "); 872 // 489, 9 873 if ((frags != null) ) 874 { 875 // 489, 32 876 jamonWriter.write("\n <th title=\"Fragmentation - Will be 0% after a major compaction and fluctuate during normal usage.\">Frag.</th>\n "); 877 } 878 // 491, 15 879 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 "); 880 // 508, 5 881 for (TableDescriptor desc : tables) 882 { 883 // 508, 42 884 jamonWriter.write("\n "); 885 // 509, 5 886 887 HTableDescriptor htDesc = new HTableDescriptor(desc); 888 TableName tableName = htDesc.getTableName(); 889 TableState tableState = master.getTableStateManager().getTableState(tableName); 890 Map<RegionState.State, List<RegionInfo>> tableRegions = 891 master.getAssignmentManager().getRegionStates() 892 .getRegionByStateOfTable(tableName); 893 int openRegionsCount = tableRegions.get(RegionState.State.OPEN).size(); 894 int openingRegionsCount = tableRegions.get(RegionState.State.OPENING).size(); 895 int closedRegionsCount = tableRegions.get(RegionState.State.CLOSED).size(); 896 int closingRegionsCount = tableRegions.get(RegionState.State.CLOSING).size(); 897 int offlineRegionsCount = tableRegions.get(RegionState.State.OFFLINE).size(); 898 int splitRegionsCount = tableRegions.get(RegionState.State.SPLIT).size(); 899 int failedRegionsCount = tableRegions.get(RegionState.State.FAILED_OPEN).size() 900 + tableRegions.get(RegionState.State.FAILED_CLOSE).size(); 901 int otherRegionsCount = 0; 902 for (List<RegionInfo> list: tableRegions.values()) { 903 otherRegionsCount += list.size(); 904 } 905 // now subtract known states 906 otherRegionsCount = otherRegionsCount - openRegionsCount 907 - failedRegionsCount - offlineRegionsCount 908 - splitRegionsCount - openingRegionsCount 909 - closedRegionsCount - closingRegionsCount; 910 911 // 534, 5 912 jamonWriter.write("<tr>\n <td>"); 913 // 535, 13 914 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tableName.getNamespaceAsString()), jamonWriter); 915 // 535, 51 916 jamonWriter.write("</td>\n <td><a href=table.jsp?name="); 917 // 536, 36 918 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tableName.getNameAsString()), jamonWriter); 919 // 536, 69 920 jamonWriter.write(">"); 921 // 536, 70 922 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tableName.getQualifierAsString()), jamonWriter); 923 // 536, 108 924 jamonWriter.write("</a> </td>\n "); 925 // 537, 9 926 if ((frags != null) ) 927 { 928 // 537, 32 929 jamonWriter.write("\n <td align=\"center\">"); 930 // 538, 32 931 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(frags.get(tableName.getNameAsString()) != null ? frags.get(tableName.getNameAsString()).intValue() + "%" : "n/a"), jamonWriter); 932 // 538, 150 933 jamonWriter.write("</td>\n "); 934 } 935 // 539, 15 936 jamonWriter.write("\n <td>"); 937 // 540, 13 938 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tableState.getState()), jamonWriter); 939 // 540, 40 940 jamonWriter.write("</td>\n <td>"); 941 // 541, 13 942 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(openRegionsCount), jamonWriter); 943 // 541, 35 944 jamonWriter.write("</td>\n "); 945 // 542, 9 946 if ((openingRegionsCount > 0) ) 947 { 948 // 542, 42 949 jamonWriter.write(" <td><a href=\"/rits.jsp?table="); 950 // 542, 72 951 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tableName.getNameAsString()), jamonWriter); 952 // 542, 105 953 jamonWriter.write("&state=OPENING\">"); 954 // 542, 121 955 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(openingRegionsCount), jamonWriter); 956 // 542, 146 957 jamonWriter.write("</td> "); 958 } 959 // 542, 152 960 else 961 { 962 // 542, 159 963 jamonWriter.write("<td>"); 964 // 542, 163 965 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(openingRegionsCount), jamonWriter); 966 // 542, 188 967 jamonWriter.write("</td> "); 968 } 969 // 542, 200 970 jamonWriter.write("\n <td>"); 971 // 543, 13 972 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(closedRegionsCount), jamonWriter); 973 // 543, 37 974 jamonWriter.write("</td>\n "); 975 // 544, 9 976 if ((closingRegionsCount > 0) ) 977 { 978 // 544, 42 979 jamonWriter.write(" <td><a href=\"/rits.jsp?table="); 980 // 544, 72 981 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tableName.getNameAsString()), jamonWriter); 982 // 544, 105 983 jamonWriter.write("&state=CLOSING\">"); 984 // 544, 121 985 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(closingRegionsCount), jamonWriter); 986 // 544, 146 987 jamonWriter.write("</td> "); 988 } 989 // 544, 152 990 else 991 { 992 // 544, 159 993 jamonWriter.write("<td>"); 994 // 544, 163 995 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(closingRegionsCount), jamonWriter); 996 // 544, 188 997 jamonWriter.write("</td> "); 998 } 999 // 544, 200 1000 jamonWriter.write("\n <td>"); 1001 // 545, 13 1002 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(offlineRegionsCount), jamonWriter); 1003 // 545, 38 1004 jamonWriter.write("</td>\n <td>"); 1005 // 546, 13 1006 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(failedRegionsCount), jamonWriter); 1007 // 546, 37 1008 jamonWriter.write("</td>\n <td>"); 1009 // 547, 13 1010 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(splitRegionsCount), jamonWriter); 1011 // 547, 36 1012 jamonWriter.write("</td>\n <td>"); 1013 // 548, 13 1014 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(otherRegionsCount), jamonWriter); 1015 // 548, 36 1016 jamonWriter.write("</td>\n <td>"); 1017 // 549, 13 1018 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(htDesc.toStringCustomizedValues()), jamonWriter); 1019 // 549, 52 1020 jamonWriter.write("</td>\n </tr>\n "); 1021 } 1022 // 551, 12 1023 jamonWriter.write("\n <p>"); 1024 // 552, 8 1025 org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(tables.size()), jamonWriter); 1026 // 552, 27 1027 jamonWriter.write(" table(s) in set. [<a href=tablesDetailed.jsp>Details</a>]</p>\n</tbody>\n</table>\n"); 1028 } 1029 // 555, 7 1030 jamonWriter.write("\n"); 1031 } 1032 1033 1034}