View Javadoc

1   // Autogenerated Jamon implementation
2   // /home/zhangduo/hbase/code/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.jamon
3   
4   package org.apache.hadoop.hbase.tmpl.master;
5   
6   // 27, 9
7   import java.util.*;
8   // 28, 9
9   import org.apache.hadoop.hbase.master.HMaster;
10  // 29, 9
11  import org.apache.hadoop.hbase.procedure2.util.StringUtils;
12  // 30, 9
13  import org.apache.hadoop.hbase.replication.ReplicationLoadSource;
14  // 31, 9
15  import org.apache.hadoop.hbase.ServerLoad;
16  // 32, 9
17  import org.apache.hadoop.hbase.ServerName;
18  // 33, 9
19  import org.apache.hadoop.hbase.client.HBaseAdmin;
20  // 34, 9
21  import org.apache.hadoop.hbase.client.HConnectionManager;
22  // 35, 9
23  import org.apache.hadoop.hbase.HTableDescriptor;
24  // 36, 9
25  import org.apache.hadoop.hbase.HBaseConfiguration;
26  // 37, 9
27  import org.apache.hadoop.hbase.util.VersionInfo;
28  // 38, 9
29  import org.apache.hadoop.hbase.util.Pair;
30  // 39, 9
31  import org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;
32  
33  public class RegionServerListTmplImpl
34    extends org.jamon.AbstractTemplateImpl
35    implements org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl.Intf
36  
37  {
38    private final HMaster master;
39    private final List<ServerName> servers;
40    protected static org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl.ImplData p_implData)
41    {
42      if(! p_implData.getServers__IsNotDefault())
43      {
44        p_implData.setServers(null);
45      }
46      return p_implData;
47    }
48    public RegionServerListTmplImpl(org.jamon.TemplateManager p_templateManager, org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl.ImplData p_implData)
49    {
50      super(p_templateManager, __jamon_setOptionalArguments(p_implData));
51      master = p_implData.getMaster();
52      servers = p_implData.getServers();
53    }
54    
55    @Override public void renderNoFlush(final java.io.Writer jamonWriter)
56      throws java.io.IOException
57    {
58      // 43, 1
59      if ((servers != null && servers.size() > 0))
60      {
61        // 43, 47
62        jamonWriter.write("\n\n");
63        // 45, 1
64        
65  ServerName [] serverNames = servers.toArray(new ServerName[servers.size()]);
66  Arrays.sort(serverNames);
67  
68        // 50, 1
69        jamonWriter.write("<div class=\"tabbable\">\n    <ul class=\"nav nav-pills\">\n        <li class=\"active\"><a href=\"#tab_baseStats\" data-toggle=\"tab\">Base Stats</a></li>\n        <li class=\"\"><a href=\"#tab_memoryStats\" data-toggle=\"tab\">Memory</a></li>\n        <li class=\"\"><a href=\"#tab_requestStats\" data-toggle=\"tab\">Requests</a></li>\n        <li class=\"\"><a href=\"#tab_storeStats\" data-toggle=\"tab\">Storefiles</a></li>\n        <li class=\"\"><a href=\"#tab_compactStats\" data-toggle=\"tab\">Compactions</a></li>\n        <li class=\"\"><a href=\"#tab_replicationStats\" data-toggle=\"tab\">Replications</a></li>\n    </ul>\n    <div class=\"tab-content\" style=\"padding-bottom: 9px; border-bottom: 1px solid #ddd;\">\n        <div class=\"tab-pane active\" id=\"tab_baseStats\">\n            ");
70        // 61, 13
71        {
72          // 61, 13
73          __jamon_innerUnit__baseStats(jamonWriter, serverNames);
74        }
75        // 61, 56
76        jamonWriter.write("\n        </div>\n        <div class=\"tab-pane\" id=\"tab_memoryStats\">\n            ");
77        // 64, 13
78        {
79          // 64, 13
80          __jamon_innerUnit__memoryStats(jamonWriter, serverNames);
81        }
82        // 64, 58
83        jamonWriter.write("\n        </div>\n        <div class=\"tab-pane\" id=\"tab_requestStats\">\n            ");
84        // 67, 13
85        {
86          // 67, 13
87          __jamon_innerUnit__requestStats(jamonWriter, serverNames);
88        }
89        // 67, 59
90        jamonWriter.write("\n        </div>\n        <div class=\"tab-pane\" id=\"tab_storeStats\">\n            ");
91        // 70, 13
92        {
93          // 70, 13
94          __jamon_innerUnit__storeStats(jamonWriter, serverNames);
95        }
96        // 70, 57
97        jamonWriter.write("\n        </div>\n        <div class=\"tab-pane\" id=\"tab_compactStats\">\n            ");
98        // 73, 13
99        {
100         // 73, 13
101         __jamon_innerUnit__compactionStats(jamonWriter, serverNames);
102       }
103       // 73, 62
104       jamonWriter.write("\n        </div>\n        <div class=\"tab-pane\" id=\"tab_replicationStats\">\n            ");
105       // 76, 13
106       {
107         // 76, 13
108         __jamon_innerUnit__replicationStats(jamonWriter, serverNames);
109       }
110       // 76, 63
111       jamonWriter.write("\n        </div>\n    </div>\n</div>\n\n");
112     }
113     // 81, 7
114     jamonWriter.write("\n\n");
115   }
116   
117   
118   // 328, 1
119   private void __jamon_innerUnit__replicationStats(final java.io.Writer jamonWriter, final ServerName[] serverNames)
120     throws java.io.IOException
121   {
122     // 332, 1
123     
124         HashMap<String, List<Pair<ServerName, ReplicationLoadSource>>> replicationLoadSourceMap
125             = master.getReplicationLoad(serverNames);
126         List<String> peers = null;
127         if (replicationLoadSourceMap != null && replicationLoadSourceMap.size() > 0){
128             peers = new ArrayList<>(replicationLoadSourceMap.keySet());
129             Collections.sort(peers);
130         }
131 
132     // 342, 1
133     if ((replicationLoadSourceMap != null && replicationLoadSourceMap.size() > 0) )
134     {
135       // 342, 82
136       jamonWriter.write("\n\n<div class=\"tabbable\">\n    <ul class=\"nav nav-tabs\">\n        ");
137       // 346, 9
138       
139         String active = "active";
140         for (String peer : peers){
141         
142       // 350, 13
143       jamonWriter.write("<li class=");
144       // 350, 23
145       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(active), jamonWriter);
146       // 350, 35
147       jamonWriter.write("><a href=\"#tab_");
148       // 350, 50
149       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(peer), jamonWriter);
150       // 350, 60
151       jamonWriter.write("\" data-toggle=\"tab\">Peer ");
152       // 350, 85
153       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(peer), jamonWriter);
154       // 350, 95
155       jamonWriter.write("</a> </li>\n        ");
156       // 351, 9
157       
158         active = "";
159         }
160         
161       // 355, 5
162       jamonWriter.write("</ul>\n    <div class=\"tab-content\">\n        ");
163       // 357, 9
164       
165             active = "active";
166             for (String peer : peers){
167         
168       // 361, 13
169       jamonWriter.write("<div class=\"tab-pane ");
170       // 361, 34
171       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(active), jamonWriter);
172       // 361, 46
173       jamonWriter.write("\" id=\"tab_");
174       // 361, 56
175       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(peer), jamonWriter);
176       // 361, 66
177       jamonWriter.write("\">\n                <table class=\"table table-striped\">\n                    <tr>\n                        <th>Server</th>\n                        <th>AgeOfLastShippedOp</th>\n                        <th>SizeOfLogQueue</th>\n                        <th>ReplicationLag</th>\n                    </tr>\n\n                    ");
178       // 370, 21
179       for (Pair<ServerName, ReplicationLoadSource> pair: replicationLoadSourceMap.get(peer) )
180       {
181         // 370, 110
182         jamonWriter.write("\n                    <tr>\n                        <td>");
183         // 372, 29
184         {
185           // 372, 29
186           __jamon_innerUnit__serverNameLink(jamonWriter, pair.getFirst());
187         }
188         // 372, 78
189         jamonWriter.write("</td>\n                        <td>");
190         // 373, 29
191         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanTimeDiff(pair.getSecond().getAgeOfLastShippedOp())), jamonWriter);
192         // 373, 102
193         jamonWriter.write("</td>\n                        <td>");
194         // 374, 29
195         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(pair.getSecond().getSizeOfLogQueue()), jamonWriter);
196         // 374, 71
197         jamonWriter.write("</td>\n                        <td>");
198         // 375, 29
199         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanTimeDiff(pair.getSecond().getReplicationLag())), jamonWriter);
200         // 375, 98
201         jamonWriter.write("</td>\n                    </tr>\n                    ");
202       }
203       // 377, 28
204       jamonWriter.write("\n        </table>\n            </div>\n        ");
205       // 380, 9
206       
207                 active = "";
208                 }
209         
210       // 384, 5
211       jamonWriter.write("</div>\n</div>\n");
212     }
213     // 386, 1
214     else
215     {
216       // 386, 8
217       jamonWriter.write("\n    <p>No Peers Metrics</p>\n");
218     }
219     // 388, 7
220     jamonWriter.write("\n");
221   }
222   
223   
224   // 196, 1
225   private void __jamon_innerUnit__requestStats(final java.io.Writer jamonWriter, final ServerName[] serverNames)
226     throws java.io.IOException
227   {
228     // 200, 1
229     jamonWriter.write("<table id=\"requestStatsTable\" class=\"tablesorter table table-striped\">\n<thead>\n<tr>\n    <th>ServerName</th>\n    <th>Request Per Second</th>\n    <th>Read Request Count</th>\n    <th>Write Request Count</th>\n</tr>\n</thead>\n<tbody>\n");
230     // 210, 1
231     
232 for (ServerName serverName: serverNames) {
233 
234 ServerLoad sl = master.getServerManager().getLoad(serverName);
235 if (sl != null) {
236 
237     // 216, 1
238     jamonWriter.write("<tr>\n<td>");
239     // 217, 5
240     {
241       // 217, 5
242       __jamon_innerUnit__serverNameLink(jamonWriter, serverName);
243     }
244     // 217, 49
245     jamonWriter.write("</td>\n<td>");
246     // 218, 5
247     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%.0f", sl.getRequestsPerSecond())), jamonWriter);
248     // 218, 59
249     jamonWriter.write("</td>\n<td>");
250     // 219, 5
251     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(sl.getReadRequestsCount()), jamonWriter);
252     // 219, 36
253     jamonWriter.write("</td>\n<td>");
254     // 220, 5
255     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(sl.getWriteRequestsCount()), jamonWriter);
256     // 220, 37
257     jamonWriter.write("</td>\n</tr>\n");
258     // 222, 1
259     
260         }  else {
261         
262     // 225, 1
263     {
264       // 225, 1
265       __jamon_innerUnit__emptyStat(jamonWriter, serverName);
266     }
267     // 225, 40
268     jamonWriter.write("\n");
269     // 226, 1
270     
271         }
272 }
273 
274     // 230, 1
275     jamonWriter.write("</tbody>\n</table>\n");
276   }
277   
278   
279   // 407, 1
280   private void __jamon_innerUnit__emptyStat(final java.io.Writer jamonWriter, final ServerName serverName)
281     throws java.io.IOException
282   {
283     // 411, 5
284     jamonWriter.write("<tr>\n    <td>");
285     // 412, 9
286     {
287       // 412, 9
288       __jamon_innerUnit__serverNameLink(jamonWriter, serverName);
289     }
290     // 412, 53
291     jamonWriter.write("</td>\n    <td></td>\n    <td></td>\n    <td></td>\n    <td></td>\n    <td></td>\n    <td></td>\n    </tr>\n");
292   }
293   
294   
295   // 391, 1
296   private void __jamon_innerUnit__serverNameLink(final java.io.Writer jamonWriter, final ServerName serverName)
297     throws java.io.IOException
298   {
299     // 395, 9
300     
301         int infoPort = master.getRegionServerInfoPort(serverName);
302         String url = "//" + serverName.getHostname() + ":" + infoPort + "/rs-status";
303         
304     // 400, 9
305     if (infoPort > 0)
306     {
307       // 400, 28
308       jamonWriter.write("\n            <a href=\"");
309       // 401, 22
310       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(url), jamonWriter);
311       // 401, 31
312       jamonWriter.write("\">");
313       // 401, 33
314       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(serverName.getServerName()), jamonWriter);
315       // 401, 65
316       jamonWriter.write("</a>\n        ");
317     }
318     // 402, 9
319     else
320     {
321       // 402, 16
322       jamonWriter.write("\n            ");
323       // 403, 13
324       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(serverName.getServerName()), jamonWriter);
325       // 403, 45
326       jamonWriter.write("\n        ");
327     }
328     // 404, 15
329     jamonWriter.write("\n");
330   }
331   
332   
333   // 152, 1
334   private void __jamon_innerUnit__memoryStats(final java.io.Writer jamonWriter, final ServerName[] serverNames)
335     throws java.io.IOException
336   {
337     // 156, 1
338     jamonWriter.write("<table id=\"memoryStatsTable\" class=\"tablesorter table table-striped\">\n<thead>\n<tr>\n    <th>ServerName</th>\n    <th>Used Heap</th>\n    <th>Max Heap</th>\n    <th>Memstore Size</th>\n\n</tr>\n</thead>\n<tbody>\n");
339     // 167, 1
340     
341 for (ServerName serverName: serverNames) {
342 
343     ServerLoad sl = master.getServerManager().getLoad(serverName);
344     if (sl != null) {
345 
346     // 173, 1
347     jamonWriter.write("<tr>\n    <td>");
348     // 174, 9
349     {
350       // 174, 9
351       __jamon_innerUnit__serverNameLink(jamonWriter, serverName);
352     }
353     // 174, 53
354     jamonWriter.write("</td>\n    <td>");
355     // 175, 9
356     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(sl.getUsedHeapMB()
357       * TraditionalBinaryPrefix.MEGA.value, "B", 1)), jamonWriter);
358     // 176, 55
359     jamonWriter.write("</td>\n    <td>");
360     // 177, 9
361     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(sl.getMaxHeapMB()
362       * TraditionalBinaryPrefix.MEGA.value, "B", 1)), jamonWriter);
363     // 178, 55
364     jamonWriter.write("</td>\n    <td>");
365     // 179, 9
366     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(sl.getMemstoreSizeInMB()
367       * TraditionalBinaryPrefix.MEGA.value, "B", 1)), jamonWriter);
368     // 180, 55
369     jamonWriter.write("</td>\n\n</tr>\n");
370     // 183, 1
371     
372         }  else {
373 
374     // 186, 1
375     {
376       // 186, 1
377       __jamon_innerUnit__emptyStat(jamonWriter, serverName);
378     }
379     // 186, 40
380     jamonWriter.write("\n");
381     // 187, 1
382     
383         }
384 }
385 
386     // 191, 1
387     jamonWriter.write("</tbody>\n</table>\n");
388   }
389   
390   
391   // 83, 1
392   private void __jamon_innerUnit__baseStats(final java.io.Writer jamonWriter, final ServerName[] serverNames)
393     throws java.io.IOException
394   {
395     // 87, 1
396     jamonWriter.write("<table id=\"baseStatsTable\" class=\"tablesorter table table-striped\">\n<thead>\n<tr>\n    <th>ServerName</th>\n    <th>Start time</th>\n    <th>Last contact</th>\n    <th>Version</th>\n    <th>Requests Per Second</th>\n    <th>Num. Regions</th>\n</tr>\n</thead>\n<tbody> \n");
397     // 99, 1
398     
399     int totalRegions = 0;
400     int totalRequests = 0;
401     int inconsistentNodeNum = 0;
402     String masterVersion = VersionInfo.getVersion();
403     for (ServerName serverName: serverNames) {
404 
405     ServerLoad sl = master.getServerManager().getLoad(serverName);
406     String version = master.getRegionServerVersion(serverName);
407     if (!masterVersion.equals(version)) {
408         inconsistentNodeNum ++;
409     }
410     
411     double requestsPerSecond = 0.0;
412     int numRegionsOnline = 0;
413     long lastContact = 0;
414 
415     if (sl != null) {
416         requestsPerSecond = sl.getRequestsPerSecond();
417         numRegionsOnline = sl.getNumberOfRegions();
418         totalRegions += sl.getNumberOfRegions();
419         // Is this correct?  Adding a rate to a measure.
420         totalRequests += sl.getNumberOfRequests();
421         lastContact = (System.currentTimeMillis() - sl.getReportTime())/1000;
422     }
423     long startcode = serverName.getStartcode();
424 
425     // 126, 1
426     jamonWriter.write("<tr>\n    <td>");
427     // 127, 9
428     {
429       // 127, 9
430       __jamon_innerUnit__serverNameLink(jamonWriter, serverName);
431     }
432     // 127, 53
433     jamonWriter.write("</td>\n    <td>");
434     // 128, 9
435     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(new Date(startcode)), jamonWriter);
436     // 128, 34
437     jamonWriter.write("</td>\n    <td>");
438     // 129, 9
439     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(lastContact, "s", 1)), jamonWriter);
440     // 129, 71
441     jamonWriter.write("</td>\n    <td>");
442     // 130, 9
443     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(version), jamonWriter);
444     // 130, 22
445     jamonWriter.write("</td>\n    <td>");
446     // 131, 9
447     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%.0f", requestsPerSecond)), jamonWriter);
448     // 131, 55
449     jamonWriter.write("</td>\n    <td>");
450     // 132, 9
451     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(numRegionsOnline), jamonWriter);
452     // 132, 31
453     jamonWriter.write("</td>\n</tr>\n");
454     // 134, 1
455     
456 }
457 
458     // 137, 1
459     jamonWriter.write("</tbody> \n<tr><td>Total:");
460     // 138, 15
461     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(servers.size()), jamonWriter);
462     // 138, 35
463     jamonWriter.write("</td>\n<td></td>\n<td></td>\n");
464     // 141, 1
465     if (inconsistentNodeNum > 0)
466     {
467       // 141, 31
468       jamonWriter.write("\n  <td style=\"color:red;\">");
469       // 142, 26
470       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(inconsistentNodeNum), jamonWriter);
471       // 142, 51
472       jamonWriter.write(" nodes with inconsistent version</td>\n");
473     }
474     // 143, 1
475     else
476     {
477       // 143, 8
478       jamonWriter.write("\n   <td></td>\n");
479     }
480     // 145, 7
481     jamonWriter.write("\n<td>");
482     // 146, 5
483     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(totalRequests), jamonWriter);
484     // 146, 24
485     jamonWriter.write("</td>\n<td>");
486     // 147, 5
487     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(totalRegions), jamonWriter);
488     // 147, 23
489     jamonWriter.write("</td>\n</tr>\n</table>\n");
490   }
491   
492   
493   // 283, 1
494   private void __jamon_innerUnit__compactionStats(final java.io.Writer jamonWriter, final ServerName[] serverNames)
495     throws java.io.IOException
496   {
497     // 287, 1
498     jamonWriter.write("<table id=\"compactionStatsTable\" class=\"tablesorter table table-striped\">\n<thead>\n<tr>\n    <th>ServerName</th>\n    <th>Num. Compacting KVs</th>\n    <th>Num. Compacted KVs</th>\n    <th>Remaining KVs</th>\n    <th>Compaction Progress</th>\n</tr>\n</thead>\n<tbody>\n");
499     // 298, 1
500     
501 for (ServerName serverName: serverNames) {
502 
503 ServerLoad sl = master.getServerManager().getLoad(serverName);
504 if (sl != null) {
505 String percentDone = "";
506 if  (sl.getTotalCompactingKVs() > 0) {
507      percentDone = String.format("%.2f", 100 *
508         ((float) sl.getCurrentCompactedKVs() / sl.getTotalCompactingKVs())) + "%";
509 }
510 
511     // 309, 1
512     jamonWriter.write("<tr>\n<td>");
513     // 310, 5
514     {
515       // 310, 5
516       __jamon_innerUnit__serverNameLink(jamonWriter, serverName);
517     }
518     // 310, 49
519     jamonWriter.write("</td>\n<td>");
520     // 311, 5
521     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(sl.getTotalCompactingKVs()), jamonWriter);
522     // 311, 37
523     jamonWriter.write("</td>\n<td>");
524     // 312, 5
525     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(sl.getCurrentCompactedKVs()), jamonWriter);
526     // 312, 38
527     jamonWriter.write("</td>\n<td>");
528     // 313, 5
529     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(sl.getTotalCompactingKVs() - sl.getCurrentCompactedKVs()), jamonWriter);
530     // 313, 67
531     jamonWriter.write("</td>\n<td>");
532     // 314, 5
533     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(percentDone), jamonWriter);
534     // 314, 22
535     jamonWriter.write("</td>\n</tr>\n");
536     // 316, 1
537     
538         }  else {
539         
540     // 319, 1
541     {
542       // 319, 1
543       __jamon_innerUnit__emptyStat(jamonWriter, serverName);
544     }
545     // 319, 40
546     jamonWriter.write("\n");
547     // 320, 1
548     
549     }
550 }
551 
552     // 324, 1
553     jamonWriter.write("</tbody>\n</table>\n");
554   }
555   
556   
557   // 235, 1
558   private void __jamon_innerUnit__storeStats(final java.io.Writer jamonWriter, final ServerName[] serverNames)
559     throws java.io.IOException
560   {
561     // 239, 1
562     jamonWriter.write("<table id=\"storeStatsTable\" class=\"tablesorter table table-striped\">\n<thead>\n<tr>\n    <th>ServerName</th>\n    <th>Num. Stores</th>\n    <th>Num. Storefiles</th>\n    <th>Storefile Size Uncompressed</th>\n    <th>Storefile Size</th>\n    <th>Index Size</th>\n    <th>Bloom Size</th>\n</tr>\n</thead>\n<tbody>\n");
563     // 252, 1
564     
565 for (ServerName serverName: serverNames) {
566 
567 ServerLoad sl = master.getServerManager().getLoad(serverName);
568 if (sl != null) {
569 
570     // 258, 1
571     jamonWriter.write("<tr>\n<td>");
572     // 259, 5
573     {
574       // 259, 5
575       __jamon_innerUnit__serverNameLink(jamonWriter, serverName);
576     }
577     // 259, 49
578     jamonWriter.write("</td>\n<td>");
579     // 260, 5
580     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(sl.getStores()), jamonWriter);
581     // 260, 25
582     jamonWriter.write("</td>\n<td>");
583     // 261, 5
584     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(sl.getStorefiles()), jamonWriter);
585     // 261, 29
586     jamonWriter.write("</td>\n<td>");
587     // 262, 5
588     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(
589   sl.getStoreUncompressedSizeMB() * TraditionalBinaryPrefix.MEGA.value, "B", 1)), jamonWriter);
590     // 263, 83
591     jamonWriter.write("</td>\n<td>");
592     // 264, 5
593     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(sl.getStorefileSizeInMB()
594   * TraditionalBinaryPrefix.MEGA.value, "B", 1)), jamonWriter);
595     // 265, 51
596     jamonWriter.write("</td>\n<td>");
597     // 266, 5
598     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(sl.getTotalStaticIndexSizeKB()
599   * TraditionalBinaryPrefix.KILO.value, "B", 1)), jamonWriter);
600     // 267, 51
601     jamonWriter.write("</td>\n<td>");
602     // 268, 5
603     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(sl.getTotalStaticBloomSizeKB()
604   * TraditionalBinaryPrefix.KILO.value, "B", 1)), jamonWriter);
605     // 269, 51
606     jamonWriter.write("</td>\n</tr>\n");
607     // 271, 1
608     
609         }  else {
610         
611     // 274, 1
612     {
613       // 274, 1
614       __jamon_innerUnit__emptyStat(jamonWriter, serverName);
615     }
616     // 274, 40
617     jamonWriter.write("\n");
618     // 275, 1
619     
620     }
621 }
622 
623     // 279, 1
624     jamonWriter.write("</tbody>\n</table>\n");
625   }
626   
627   
628 }