View Javadoc

1   // Autogenerated Jamon implementation
2   // /home/zhangduo/hbase/code/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/AssignmentManagerStatusTmpl.jamon
3   
4   package org.apache.hadoop.hbase.tmpl.master;
5   
6   // 20, 1
7   import org.apache.hadoop.hbase.HRegionInfo;
8   // 21, 1
9   import org.apache.hadoop.hbase.master.AssignmentManager;
10  // 22, 1
11  import org.apache.hadoop.hbase.master.RegionState;
12  // 23, 1
13  import org.apache.hadoop.conf.Configuration;
14  // 24, 1
15  import org.apache.hadoop.hbase.HBaseConfiguration;
16  // 25, 1
17  import org.apache.hadoop.hbase.HConstants;
18  // 26, 1
19  import java.util.SortedSet;
20  // 27, 1
21  import java.util.Iterator;
22  // 28, 1
23  import java.util.List;
24  // 29, 1
25  import java.util.ArrayList;
26  // 30, 1
27  import java.util.Set;
28  // 31, 1
29  import java.util.HashSet;
30  // 32, 1
31  import java.lang.Integer;
32  // 33, 1
33  import java.util.Map;
34  // 34, 1
35  import java.util.concurrent.atomic.AtomicInteger;
36  
37  public class AssignmentManagerStatusTmplImpl
38    extends org.jamon.AbstractTemplateImpl
39    implements org.apache.hadoop.hbase.tmpl.master.AssignmentManagerStatusTmpl.Intf
40  
41  {
42    private final AssignmentManager assignmentManager;
43    private final int limit;
44    protected static org.apache.hadoop.hbase.tmpl.master.AssignmentManagerStatusTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.master.AssignmentManagerStatusTmpl.ImplData p_implData)
45    {
46      if(! p_implData.getLimit__IsNotDefault())
47      {
48        p_implData.setLimit(Integer.MAX_VALUE);
49      }
50      return p_implData;
51    }
52    public AssignmentManagerStatusTmplImpl(org.jamon.TemplateManager p_templateManager, org.apache.hadoop.hbase.tmpl.master.AssignmentManagerStatusTmpl.ImplData p_implData)
53    {
54      super(p_templateManager, __jamon_setOptionalArguments(p_implData));
55      assignmentManager = p_implData.getAssignmentManager();
56      limit = p_implData.getLimit();
57    }
58    
59    @Override public void renderNoFlush(final java.io.Writer jamonWriter)
60      throws java.io.IOException
61    {
62      // 41, 1
63      SortedSet<RegionState> rit = assignmentManager
64    .getRegionStates().getRegionsInTransitionOrderedByTimestamp();
65    Map<String, AtomicInteger> failedRegionTracker = assignmentManager.getFailedOpenTracker();
66     
67      // 46, 1
68      if (!rit.isEmpty() )
69      {
70        // 46, 23
71        jamonWriter.write("\n");
72        // 47, 1
73        
74  Set<String> ritsOverThreshold = new HashSet<>();
75  Set<String> ritsTwiceThreshold = new HashSet<>();
76  // process the map to find region in transition details
77  Configuration conf = HBaseConfiguration.create();
78  int ritThreshold = conf.getInt(HConstants.METRICS_RIT_STUCK_WARNING_THRESHOLD, 60000);
79  int numOfRITOverThreshold = 0;
80  long currentTime = System.currentTimeMillis();
81  List<RegionState> ritToDisplay = new ArrayList<>();
82  int count = 0;
83  for (RegionState rs : rit) {
84    long ritTime = currentTime - rs.getStamp();
85    if(ritTime > (ritThreshold * 2)) {
86       numOfRITOverThreshold++;
87       ritsTwiceThreshold.add(rs.getRegion().getEncodedName());
88    } else if (ritTime > ritThreshold) {
89       numOfRITOverThreshold++;
90       ritsOverThreshold.add(rs.getRegion().getEncodedName());
91    }
92    if (count++ < limit) {
93      ritToDisplay.add(rs);
94    }
95  }
96  int numOfRITs = rit.size();
97  int ritsPerPage = Math.min(5, numOfRITs);
98  int numOfPages = (int) Math.ceil(numOfRITs * 1.0 / ritsPerPage);
99  
100       // 74, 5
101       jamonWriter.write("<section>\n    <h2>Regions in Transition</h2>\n     <p><a href=\"/rits.jsp\">");
102       // 76, 29
103       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(numOfRITs), jamonWriter);
104       // 76, 44
105       jamonWriter.write(" region(s) in transition.</a>\n     ");
106       // 77, 6
107       if (!ritsTwiceThreshold.isEmpty()  )
108       {
109         // 77, 44
110         jamonWriter.write("\n         <span class=\"label label-danger\" style=\"font-size:100%;font-weight:normal\">\n     ");
111       }
112       // 79, 6
113       else if (!ritsOverThreshold.isEmpty() )
114       {
115         // 79, 46
116         jamonWriter.write("\n         <span class=\"label label-warning\" style=\"font-size:100%;font-weight:normal\">\n     ");
117       }
118       // 81, 6
119       else
120       {
121         // 81, 13
122         jamonWriter.write("\n         <span>\n     ");
123       }
124       // 83, 12
125       jamonWriter.write("\n         ");
126       // 84, 10
127       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(numOfRITOverThreshold), jamonWriter);
128       // 84, 37
129       jamonWriter.write(" region(s) in transition for\n             more than ");
130       // 85, 24
131       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(ritThreshold), jamonWriter);
132       // 85, 42
133       jamonWriter.write(" milliseconds.\n         </span>\n     </p>\n     <div class=\"tabbable\">\n         <div class=\"tab-content\">\n         ");
134       // 90, 10
135       int recordItr = 0; 
136       // 91, 13
137       for (RegionState rs : ritToDisplay )
138       {
139         // 91, 51
140         jamonWriter.write("\n              ");
141         // 92, 15
142         if ((recordItr % ritsPerPage) == 0 )
143         {
144           // 92, 53
145           jamonWriter.write("\n                  ");
146           // 93, 19
147           if (recordItr == 0 )
148           {
149             // 93, 41
150             jamonWriter.write("\n              <div class=\"tab-pane active\" id=\"tab_rits");
151             // 94, 56
152             org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf((recordItr / ritsPerPage) + 1), jamonWriter);
153             // 94, 91
154             jamonWriter.write("\">\n                  ");
155           }
156           // 95, 19
157           else
158           {
159             // 95, 26
160             jamonWriter.write("\n              <div class=\"tab-pane\" id=\"tab_rits");
161             // 96, 49
162             org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf((recordItr / ritsPerPage) + 1), jamonWriter);
163             // 96, 84
164             jamonWriter.write("\">\n                  ");
165           }
166           // 97, 25
167           jamonWriter.write("\n                  <table class=\"table table-striped\" style=\"margin-bottom:0px;\"><tr><th>Region</th>\n                      <th>State</th><th>RIT time (ms)</th><th>Retries </th></tr>\n              ");
168         }
169         // 100, 21
170         jamonWriter.write("\n\n              ");
171         // 102, 15
172         if (ritsOverThreshold.contains(rs.getRegion().getEncodedName()) )
173         {
174           // 102, 82
175           jamonWriter.write("\n                      <tr class=\"alert alert-warning\" role=\"alert\">\n              ");
176         }
177         // 104, 15
178         else if (ritsTwiceThreshold.contains(rs.getRegion().getEncodedName()) )
179         {
180           // 104, 87
181           jamonWriter.write("\n                      <tr class=\"alert alert-danger\" role=\"alert\">\n              ");
182         }
183         // 106, 15
184         else
185         {
186           // 106, 22
187           jamonWriter.write("\n                      <tr>\n              ");
188         }
189         // 108, 21
190         jamonWriter.write("\n               ");
191         // 109, 16
192         
193                   String retryStatus = "0";
194                   AtomicInteger numOpenRetries = failedRegionTracker.get(
195                       rs.getRegion().getEncodedName());
196                   if (numOpenRetries != null ) {
197                     retryStatus = Integer.toString(numOpenRetries.get());
198                   } else if (rs.getState() ==  RegionState.State.FAILED_OPEN) {
199                      retryStatus = "Failed";
200                   }
201                 
202         // 119, 15
203         jamonWriter.write("<td>");
204         // 119, 19
205         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(rs.getRegion().getEncodedName()), jamonWriter);
206         // 119, 56
207         jamonWriter.write("</td><td>\n              ");
208         // 120, 15
209         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(rs.toDescriptiveString()), jamonWriter);
210         // 120, 45
211         jamonWriter.write("</td>\n              <td>");
212         // 121, 19
213         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf((currentTime - rs.getStamp())), jamonWriter);
214         // 121, 54
215         jamonWriter.write(" </td>\n              <td>");
216         // 122, 19
217         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(retryStatus), jamonWriter);
218         // 122, 36
219         jamonWriter.write(" </td>\n              ");
220         // 123, 15
221         recordItr++; 
222         // 124, 15
223         if ((recordItr % ritsPerPage) == 0 )
224         {
225           // 124, 53
226           jamonWriter.write("\n                 </table>\n              </div>\n              ");
227         }
228         // 127, 21
229         jamonWriter.write("\n            ");
230       }
231       // 128, 20
232       jamonWriter.write("\n         ");
233       // 129, 10
234       if ((recordItr % ritsPerPage) != 0 )
235       {
236         // 129, 48
237         jamonWriter.write("\n             ");
238         // 130, 14
239         for (; (recordItr % ritsPerPage) != 0 ; recordItr++ )
240         {
241           // 130, 69
242           jamonWriter.write("\n             <tr><td colspan=\"3\" style=\"height:61px\"></td></tr>\n             ");
243         }
244         // 132, 21
245         jamonWriter.write("\n                   </table>\n             </div>\n         ");
246       }
247       // 135, 16
248       jamonWriter.write("\n         </div>\n         <nav>\n             <ul class=\"nav nav-pills pagination\">\n             ");
249       // 139, 14
250       for (int i = 1 ; i <= numOfPages; i++ )
251       {
252         // 139, 55
253         jamonWriter.write("\n                 ");
254         // 140, 18
255         if (i == 1 )
256         {
257           // 140, 32
258           jamonWriter.write("\n                 <li class=\"active\">\n                 ");
259         }
260         // 142, 18
261         else
262         {
263           // 142, 25
264           jamonWriter.write("\n                 <li>\n                 ");
265         }
266         // 144, 24
267         jamonWriter.write("\n                 <a href=\"#tab_rits");
268         // 145, 36
269         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(i), jamonWriter);
270         // 145, 43
271         jamonWriter.write("\">");
272         // 145, 45
273         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(i), jamonWriter);
274         // 145, 52
275         jamonWriter.write("</a></li>\n             ");
276       }
277       // 146, 21
278       jamonWriter.write("\n             </ul>\n         </nav>\n     </div>\n   </section>\n ");
279     }
280     // 151, 8
281     jamonWriter.write("\n\n");
282   }
283   
284   
285 }