You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gi...@apache.org on 2018/01/07 15:30:55 UTC

[01/36] hbase-site git commit: Published site at .

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site 8175cf199 -> f54ec79f7


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandlerWithLabels.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandlerWithLabels.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandlerWithLabels.html
index 42b808a..d775824 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandlerWithLabels.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandlerWithLabels.html
@@ -86,392 +86,395 @@
 <span class="sourceLineNo">078</span><a name="line.78"></a>
 <span class="sourceLineNo">079</span>  private static final Logger LOG = LoggerFactory<a name="line.79"></a>
 <span class="sourceLineNo">080</span>    .getLogger(TestThriftHBaseServiceHandlerWithLabels.class);<a name="line.80"></a>
-<span class="sourceLineNo">081</span>private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.81"></a>
+<span class="sourceLineNo">081</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.81"></a>
 <span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>// Static names for tables, columns, rows, and values<a name="line.83"></a>
-<span class="sourceLineNo">084</span>private static byte[] tableAname = Bytes.toBytes("tableA");<a name="line.84"></a>
-<span class="sourceLineNo">085</span>private static byte[] familyAname = Bytes.toBytes("familyA");<a name="line.85"></a>
-<span class="sourceLineNo">086</span>private static byte[] familyBname = Bytes.toBytes("familyB");<a name="line.86"></a>
-<span class="sourceLineNo">087</span>private static byte[] qualifierAname = Bytes.toBytes("qualifierA");<a name="line.87"></a>
-<span class="sourceLineNo">088</span>private static byte[] qualifierBname = Bytes.toBytes("qualifierB");<a name="line.88"></a>
-<span class="sourceLineNo">089</span>private static byte[] valueAname = Bytes.toBytes("valueA");<a name="line.89"></a>
-<span class="sourceLineNo">090</span>private static byte[] valueBname = Bytes.toBytes("valueB");<a name="line.90"></a>
-<span class="sourceLineNo">091</span>private static HColumnDescriptor[] families = new HColumnDescriptor[] {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    new HColumnDescriptor(familyAname).setMaxVersions(3),<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    new HColumnDescriptor(familyBname).setMaxVersions(2) };<a name="line.93"></a>
+<span class="sourceLineNo">083</span>  // Static names for tables, columns, rows, and values<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  private static byte[] tableAname = Bytes.toBytes("tableA");<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  private static byte[] familyAname = Bytes.toBytes("familyA");<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private static byte[] familyBname = Bytes.toBytes("familyB");<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  private static byte[] qualifierAname = Bytes.toBytes("qualifierA");<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private static byte[] qualifierBname = Bytes.toBytes("qualifierB");<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  private static byte[] valueAname = Bytes.toBytes("valueA");<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  private static byte[] valueBname = Bytes.toBytes("valueB");<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  private static HColumnDescriptor[] families = new HColumnDescriptor[] {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      new HColumnDescriptor(familyAname).setMaxVersions(3),<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      new HColumnDescriptor(familyBname).setMaxVersions(2) };<a name="line.93"></a>
 <span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>private final static String TOPSECRET = "topsecret";<a name="line.95"></a>
-<span class="sourceLineNo">096</span>private final static String PUBLIC = "public";<a name="line.96"></a>
-<span class="sourceLineNo">097</span>private final static String PRIVATE = "private";<a name="line.97"></a>
-<span class="sourceLineNo">098</span>private final static String CONFIDENTIAL = "confidential";<a name="line.98"></a>
-<span class="sourceLineNo">099</span>private final static String SECRET = "secret";<a name="line.99"></a>
-<span class="sourceLineNo">100</span>private static User SUPERUSER;<a name="line.100"></a>
+<span class="sourceLineNo">095</span>  private final static String TOPSECRET = "topsecret";<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private final static String PUBLIC = "public";<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  private final static String PRIVATE = "private";<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  private final static String CONFIDENTIAL = "confidential";<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  private final static String SECRET = "secret";<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  private static User SUPERUSER;<a name="line.100"></a>
 <span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>private static Configuration conf;<a name="line.102"></a>
+<span class="sourceLineNo">102</span>  private static Configuration conf;<a name="line.102"></a>
 <span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>public void assertTColumnValuesEqual(List&lt;TColumnValue&gt; columnValuesA,<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    List&lt;TColumnValue&gt; columnValuesB) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  assertEquals(columnValuesA.size(), columnValuesB.size());<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  Comparator&lt;TColumnValue&gt; comparator = new Comparator&lt;TColumnValue&gt;() {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    @Override<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    public int compare(TColumnValue o1, TColumnValue o2) {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      return Bytes.compareTo(Bytes.add(o1.getFamily(), o1.getQualifier()),<a name="line.110"></a>
-<span class="sourceLineNo">111</span>          Bytes.add(o2.getFamily(), o2.getQualifier()));<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  };<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  Collections.sort(columnValuesA, comparator);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  Collections.sort(columnValuesB, comparator);<a name="line.115"></a>
+<span class="sourceLineNo">104</span>  public void assertTColumnValuesEqual(List&lt;TColumnValue&gt; columnValuesA,<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      List&lt;TColumnValue&gt; columnValuesB) {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    assertEquals(columnValuesA.size(), columnValuesB.size());<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    Comparator&lt;TColumnValue&gt; comparator = new Comparator&lt;TColumnValue&gt;() {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      @Override<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      public int compare(TColumnValue o1, TColumnValue o2) {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        return Bytes.compareTo(Bytes.add(o1.getFamily(), o1.getQualifier()),<a name="line.110"></a>
+<span class="sourceLineNo">111</span>            Bytes.add(o2.getFamily(), o2.getQualifier()));<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      }<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    };<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    Collections.sort(columnValuesA, comparator);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    Collections.sort(columnValuesB, comparator);<a name="line.115"></a>
 <span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  for (int i = 0; i &lt; columnValuesA.size(); i++) {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    TColumnValue a = columnValuesA.get(i);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    TColumnValue b = columnValuesB.get(i);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    assertArrayEquals(a.getFamily(), b.getFamily());<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    assertArrayEquals(a.getQualifier(), b.getQualifier());<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    assertArrayEquals(a.getValue(), b.getValue());<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>}<a name="line.124"></a>
+<span class="sourceLineNo">117</span>    for (int i = 0; i &lt; columnValuesA.size(); i++) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      TColumnValue a = columnValuesA.get(i);<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      TColumnValue b = columnValuesB.get(i);<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      assertArrayEquals(a.getFamily(), b.getFamily());<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      assertArrayEquals(a.getQualifier(), b.getQualifier());<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      assertArrayEquals(a.getValue(), b.getValue());<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    }<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
 <span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>@BeforeClass<a name="line.126"></a>
-<span class="sourceLineNo">127</span>public static void beforeClass() throws Exception {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  SUPERUSER = User.createUserForTesting(conf, "admin",<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      new String[] { "supergroup" });<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  conf = UTIL.getConfiguration();<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  conf.setClass(VisibilityUtils.VISIBILITY_LABEL_GENERATOR_CLASS,<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      SimpleScanLabelGenerator.class, ScanLabelGenerator.class);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  conf.set("hbase.superuser", SUPERUSER.getShortName());<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  conf.set("hbase.coprocessor.master.classes",<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      VisibilityController.class.getName());<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  conf.set("hbase.coprocessor.region.classes",<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      VisibilityController.class.getName());<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  conf.setInt("hfile.format.version", 3);<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  UTIL.startMiniCluster(1);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  // Wait for the labels table to become available<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  UTIL.waitTableEnabled(VisibilityConstants.LABELS_TABLE_NAME.getName(), 50000);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  createLabels();<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  Admin admin = UTIL.getAdmin();<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  HTableDescriptor tableDescriptor = new HTableDescriptor(<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      TableName.valueOf(tableAname));<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  for (HColumnDescriptor family : families) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    tableDescriptor.addFamily(family);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  admin.createTable(tableDescriptor);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  admin.close();<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  setAuths();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>}<a name="line.152"></a>
+<span class="sourceLineNo">126</span>  @BeforeClass<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  public static void beforeClass() throws Exception {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    SUPERUSER = User.createUserForTesting(conf, "admin",<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        new String[] { "supergroup" });<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    conf = UTIL.getConfiguration();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    conf.setClass(VisibilityUtils.VISIBILITY_LABEL_GENERATOR_CLASS,<a name="line.131"></a>
+<span class="sourceLineNo">132</span>        SimpleScanLabelGenerator.class, ScanLabelGenerator.class);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    conf.set("hbase.superuser", SUPERUSER.getShortName());<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    conf.set("hbase.coprocessor.master.classes",<a name="line.134"></a>
+<span class="sourceLineNo">135</span>        VisibilityController.class.getName());<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    conf.set("hbase.coprocessor.region.classes",<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        VisibilityController.class.getName());<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    conf.setInt("hfile.format.version", 3);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    UTIL.startMiniCluster(1);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    // Wait for the labels table to become available<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    UTIL.waitTableEnabled(VisibilityConstants.LABELS_TABLE_NAME.getName(), 50000);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    createLabels();<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    Admin admin = UTIL.getAdmin();<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    HTableDescriptor tableDescriptor = new HTableDescriptor(<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        TableName.valueOf(tableAname));<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    for (HColumnDescriptor family : families) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      tableDescriptor.addFamily(family);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    admin.createTable(tableDescriptor);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    admin.close();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    setAuths();<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
 <span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>private static void createLabels() throws IOException, InterruptedException {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  PrivilegedExceptionAction&lt;VisibilityLabelsResponse&gt; action =<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      new PrivilegedExceptionAction&lt;VisibilityLabelsResponse&gt;() {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    public VisibilityLabelsResponse run() throws Exception {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      String[] labels = { SECRET, CONFIDENTIAL, PRIVATE, PUBLIC, TOPSECRET };<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      try (Connection conn = ConnectionFactory.createConnection(conf)) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>        VisibilityClient.addLabels(conn, labels);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      } catch (Throwable t) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        throw new IOException(t);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      }<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      return null;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  };<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  SUPERUSER.runAs(action);<a name="line.167"></a>
-<span class="sourceLineNo">168</span>}<a name="line.168"></a>
+<span class="sourceLineNo">154</span>  private static void createLabels() throws IOException, InterruptedException {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    PrivilegedExceptionAction&lt;VisibilityLabelsResponse&gt; action =<a name="line.155"></a>
+<span class="sourceLineNo">156</span>        new PrivilegedExceptionAction&lt;VisibilityLabelsResponse&gt;() {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      public VisibilityLabelsResponse run() throws Exception {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        String[] labels = { SECRET, CONFIDENTIAL, PRIVATE, PUBLIC, TOPSECRET };<a name="line.158"></a>
+<span class="sourceLineNo">159</span>        try (Connection conn = ConnectionFactory.createConnection(conf)) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>          VisibilityClient.addLabels(conn, labels);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        } catch (Throwable t) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>          throw new IOException(t);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        }<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        return null;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    };<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    SUPERUSER.runAs(action);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  }<a name="line.168"></a>
 <span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>private static void setAuths() throws IOException {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  String[] labels = { SECRET, CONFIDENTIAL, PRIVATE, PUBLIC, TOPSECRET };<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  try {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    VisibilityClient.setAuths(UTIL.getConnection(), labels, User.getCurrent().getShortName());<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  } catch (Throwable t) {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    throw new IOException(t);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  }<a name="line.176"></a>
-<span class="sourceLineNo">177</span>}<a name="line.177"></a>
+<span class="sourceLineNo">170</span>  private static void setAuths() throws IOException {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    String[] labels = { SECRET, CONFIDENTIAL, PRIVATE, PUBLIC, TOPSECRET };<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    try {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      VisibilityClient.setAuths(UTIL.getConnection(), labels, User.getCurrent().getShortName());<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    } catch (Throwable t) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      throw new IOException(t);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    }<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  }<a name="line.177"></a>
 <span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>@AfterClass<a name="line.179"></a>
-<span class="sourceLineNo">180</span>public static void afterClass() throws Exception {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  UTIL.shutdownMiniCluster();<a name="line.181"></a>
-<span class="sourceLineNo">182</span>}<a name="line.182"></a>
+<span class="sourceLineNo">179</span>  @AfterClass<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  public static void afterClass() throws Exception {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    UTIL.shutdownMiniCluster();<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
 <span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>@Before<a name="line.184"></a>
-<span class="sourceLineNo">185</span>public void setup() throws Exception {<a name="line.185"></a>
+<span class="sourceLineNo">184</span>  @Before<a name="line.184"></a>
+<span class="sourceLineNo">185</span>  public void setup() throws Exception {<a name="line.185"></a>
 <span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>}<a name="line.187"></a>
+<span class="sourceLineNo">187</span>  }<a name="line.187"></a>
 <span class="sourceLineNo">188</span><a name="line.188"></a>
-<span class="sourceLineNo">189</span>private ThriftHBaseServiceHandler createHandler() throws IOException {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  return new ThriftHBaseServiceHandler(conf, UserProvider.instantiate(conf));<a name="line.190"></a>
-<span class="sourceLineNo">191</span>}<a name="line.191"></a>
+<span class="sourceLineNo">189</span>  private ThriftHBaseServiceHandler createHandler() throws IOException {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    return new ThriftHBaseServiceHandler(conf, UserProvider.instantiate(conf));<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
 <span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>@Test<a name="line.193"></a>
-<span class="sourceLineNo">194</span>public void testScanWithVisibilityLabels() throws Exception {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>  ThriftHBaseServiceHandler handler = createHandler();<a name="line.195"></a>
-<span class="sourceLineNo">196</span>  ByteBuffer table = wrap(tableAname);<a name="line.196"></a>
+<span class="sourceLineNo">193</span>  @Test<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  public void testScanWithVisibilityLabels() throws Exception {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    ByteBuffer table = wrap(tableAname);<a name="line.196"></a>
 <span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>  // insert data<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  TColumnValue columnValue = new TColumnValue(wrap(familyAname),<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      wrap(qualifierAname), wrap(valueAname));<a name="line.200"></a>
-<span class="sourceLineNo">201</span>  List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>  columnValues.add(columnValue);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  for (int i = 0; i &lt; 10; i++) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    TPut put = new TPut(wrap(("testScan" + i).getBytes()), columnValues);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    if (i == 5) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      put.setCellVisibility(new TCellVisibility().setExpression(PUBLIC));<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    } else {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      put.setCellVisibility(new TCellVisibility().setExpression("(" + SECRET<a name="line.208"></a>
-<span class="sourceLineNo">209</span>          + "|" + CONFIDENTIAL + ")" + "&amp;" + "!" + TOPSECRET));<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    }<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    handler.put(table, put);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  }<a name="line.212"></a>
+<span class="sourceLineNo">198</span>    // insert data<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname),<a name="line.199"></a>
+<span class="sourceLineNo">200</span>        wrap(qualifierAname), wrap(valueAname));<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    columnValues.add(columnValue);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      TPut put = new TPut(wrap(("testScan" + i).getBytes()), columnValues);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      if (i == 5) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        put.setCellVisibility(new TCellVisibility().setExpression(PUBLIC));<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      } else {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>        put.setCellVisibility(new TCellVisibility().setExpression("(" + SECRET<a name="line.208"></a>
+<span class="sourceLineNo">209</span>            + "|" + CONFIDENTIAL + ")" + "&amp;" + "!" + TOPSECRET));<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      }<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      handler.put(table, put);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
 <span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>  // create scan instance<a name="line.214"></a>
-<span class="sourceLineNo">215</span>  TScan scan = new TScan();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  TColumn column = new TColumn();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  column.setFamily(familyAname);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  column.setQualifier(qualifierAname);<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  columns.add(column);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  scan.setColumns(columns);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  scan.setStartRow("testScan".getBytes());<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  scan.setStopRow("testScan\uffff".getBytes());<a name="line.223"></a>
+<span class="sourceLineNo">214</span>    // create scan instance<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    TScan scan = new TScan();<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    TColumn column = new TColumn();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    column.setFamily(familyAname);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    column.setQualifier(qualifierAname);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    columns.add(column);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    scan.setColumns(columns);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    scan.setStartRow("testScan".getBytes());<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    scan.setStopRow("testScan\uffff".getBytes());<a name="line.223"></a>
 <span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>  TAuthorization tauth = new TAuthorization();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  List&lt;String&gt; labels = new ArrayList&lt;&gt;(2);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  labels.add(SECRET);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  labels.add(PRIVATE);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  tauth.setLabels(labels);<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  scan.setAuthorizations(tauth);<a name="line.230"></a>
-<span class="sourceLineNo">231</span>  // get scanner and rows<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  int scanId = handler.openScanner(table, scan);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  List&lt;TResult&gt; results = handler.getScannerRows(scanId, 10);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>  assertEquals(9, results.size());<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  Assert.assertFalse(Bytes.equals(results.get(5).getRow(),<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      ("testScan" + 5).getBytes()));<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  for (int i = 0; i &lt; 9; i++) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    if (i &lt; 5) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      assertArrayEquals(("testScan" + i).getBytes(), results.get(i).getRow());<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    } else if (i == 5) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      continue;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    } else {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      assertArrayEquals(("testScan" + (i + 1)).getBytes(), results.get(i)<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          .getRow());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>  }<a name="line.246"></a>
+<span class="sourceLineNo">225</span>    TAuthorization tauth = new TAuthorization();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    List&lt;String&gt; labels = new ArrayList&lt;&gt;(2);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    labels.add(SECRET);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    labels.add(PRIVATE);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    tauth.setLabels(labels);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    scan.setAuthorizations(tauth);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    // get scanner and rows<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    int scanId = handler.openScanner(table, scan);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    List&lt;TResult&gt; results = handler.getScannerRows(scanId, 10);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    assertEquals(9, results.size());<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    Assert.assertFalse(Bytes.equals(results.get(5).getRow(),<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        ("testScan" + 5).getBytes()));<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    for (int i = 0; i &lt; 9; i++) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      if (i &lt; 5) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        assertArrayEquals(("testScan" + i).getBytes(), results.get(i).getRow());<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      } else if (i == 5) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        continue;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      } else {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        assertArrayEquals(("testScan" + (i + 1)).getBytes(), results.get(i)<a name="line.243"></a>
+<span class="sourceLineNo">244</span>            .getRow());<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      }<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    }<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>  // check that we are at the end of the scan<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  results = handler.getScannerRows(scanId, 9);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  assertEquals(0, results.size());<a name="line.250"></a>
+<span class="sourceLineNo">248</span>    // check that we are at the end of the scan<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    results = handler.getScannerRows(scanId, 9);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    assertEquals(0, results.size());<a name="line.250"></a>
 <span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  // close scanner and check that it was indeed closed<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  handler.closeScanner(scanId);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  try {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    handler.getScannerRows(scanId, 9);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    fail("Scanner id should be invalid");<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  } catch (TIllegalArgument e) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>  }<a name="line.258"></a>
-<span class="sourceLineNo">259</span>}<a name="line.259"></a>
+<span class="sourceLineNo">252</span>    // close scanner and check that it was indeed closed<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    handler.closeScanner(scanId);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    try {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      handler.getScannerRows(scanId, 9);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      fail("Scanner id should be invalid");<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    } catch (TIllegalArgument e) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    }<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  }<a name="line.259"></a>
 <span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>@Test<a name="line.261"></a>
-<span class="sourceLineNo">262</span>public void testGetScannerResultsWithAuthorizations() throws Exception {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  ThriftHBaseServiceHandler handler = createHandler();<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  ByteBuffer table = wrap(tableAname);<a name="line.264"></a>
+<span class="sourceLineNo">261</span>  @Test<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  public void testGetScannerResultsWithAuthorizations() throws Exception {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    ByteBuffer table = wrap(tableAname);<a name="line.264"></a>
 <span class="sourceLineNo">265</span><a name="line.265"></a>
-<span class="sourceLineNo">266</span>  // insert data<a name="line.266"></a>
-<span class="sourceLineNo">267</span>  TColumnValue columnValue = new TColumnValue(wrap(familyAname),<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      wrap(qualifierAname), wrap(valueAname));<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  columnValues.add(columnValue);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  for (int i = 0; i &lt; 20; i++) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    TPut put = new TPut(<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        wrap(("testGetScannerResults" + pad(i, (byte) 2)).getBytes()),<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        columnValues);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    if (i == 3) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      put.setCellVisibility(new TCellVisibility().setExpression(PUBLIC));<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    } else {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      put.setCellVisibility(new TCellVisibility().setExpression("(" + SECRET<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          + "|" + CONFIDENTIAL + ")" + "&amp;" + "!" + TOPSECRET));<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    }<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    handler.put(table, put);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  }<a name="line.282"></a>
+<span class="sourceLineNo">266</span>    // insert data<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname),<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        wrap(qualifierAname), wrap(valueAname));<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    columnValues.add(columnValue);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    for (int i = 0; i &lt; 20; i++) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      TPut put = new TPut(<a name="line.272"></a>
+<span class="sourceLineNo">273</span>          wrap(("testGetScannerResults" + pad(i, (byte) 2)).getBytes()),<a name="line.273"></a>
+<span class="sourceLineNo">274</span>          columnValues);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      if (i == 3) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        put.setCellVisibility(new TCellVisibility().setExpression(PUBLIC));<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      } else {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        put.setCellVisibility(new TCellVisibility().setExpression("(" + SECRET<a name="line.278"></a>
+<span class="sourceLineNo">279</span>            + "|" + CONFIDENTIAL + ")" + "&amp;" + "!" + TOPSECRET));<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      handler.put(table, put);<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    }<a name="line.282"></a>
 <span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>  // create scan instance<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  TScan scan = new TScan();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  TColumn column = new TColumn();<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  column.setFamily(familyAname);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  column.setQualifier(qualifierAname);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  columns.add(column);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  scan.setColumns(columns);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  scan.setStartRow("testGetScannerResults".getBytes());<a name="line.292"></a>
+<span class="sourceLineNo">284</span>    // create scan instance<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    TScan scan = new TScan();<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    TColumn column = new TColumn();<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    column.setFamily(familyAname);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    column.setQualifier(qualifierAname);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    columns.add(column);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    scan.setColumns(columns);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    scan.setStartRow("testGetScannerResults".getBytes());<a name="line.292"></a>
 <span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>  // get 5 rows and check the returned results<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  scan.setStopRow("testGetScannerResults05".getBytes());<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  TAuthorization tauth = new TAuthorization();<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  List&lt;String&gt; labels = new ArrayList&lt;&gt;(2);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  labels.add(SECRET);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  labels.add(PRIVATE);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  tauth.setLabels(labels);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  scan.setAuthorizations(tauth);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  List&lt;TResult&gt; results = handler.getScannerResults(table, scan, 5);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  assertEquals(4, results.size());<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  for (int i = 0; i &lt; 4; i++) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    if (i &lt; 3) {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      assertArrayEquals(<a name="line.306"></a>
-<span class="sourceLineNo">307</span>          ("testGetScannerResults" + pad(i, (byte) 2)).getBytes(),<a name="line.307"></a>
-<span class="sourceLineNo">308</span>          results.get(i).getRow());<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    } else if (i == 3) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      continue;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    } else {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      assertArrayEquals(<a name="line.312"></a>
-<span class="sourceLineNo">313</span>          ("testGetScannerResults" + pad(i + 1, (byte) 2)).getBytes(), results<a name="line.313"></a>
-<span class="sourceLineNo">314</span>              .get(i).getRow());<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>}<a name="line.317"></a>
+<span class="sourceLineNo">294</span>    // get 5 rows and check the returned results<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    scan.setStopRow("testGetScannerResults05".getBytes());<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    TAuthorization tauth = new TAuthorization();<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    List&lt;String&gt; labels = new ArrayList&lt;&gt;(2);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    labels.add(SECRET);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    labels.add(PRIVATE);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    tauth.setLabels(labels);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    scan.setAuthorizations(tauth);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    List&lt;TResult&gt; results = handler.getScannerResults(table, scan, 5);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    assertEquals(4, results.size());<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    for (int i = 0; i &lt; 4; i++) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      if (i &lt; 3) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        assertArrayEquals(<a name="line.306"></a>
+<span class="sourceLineNo">307</span>            ("testGetScannerResults" + pad(i, (byte) 2)).getBytes(),<a name="line.307"></a>
+<span class="sourceLineNo">308</span>            results.get(i).getRow());<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      } else if (i == 3) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        continue;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      } else {<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        assertArrayEquals(<a name="line.312"></a>
+<span class="sourceLineNo">313</span>            ("testGetScannerResults" + pad(i + 1, (byte) 2)).getBytes(), results<a name="line.313"></a>
+<span class="sourceLineNo">314</span>                .get(i).getRow());<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      }<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    }<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  }<a name="line.317"></a>
 <span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>@Test<a name="line.319"></a>
-<span class="sourceLineNo">320</span>public void testGetsWithLabels() throws Exception {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  ThriftHBaseServiceHandler handler = createHandler();<a name="line.321"></a>
-<span class="sourceLineNo">322</span>  byte[] rowName = "testPutGet".getBytes();<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  ByteBuffer table = wrap(tableAname);<a name="line.323"></a>
+<span class="sourceLineNo">319</span>  @Test<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  public void testGetsWithLabels() throws Exception {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    byte[] rowName = "testPutGet".getBytes();<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    ByteBuffer table = wrap(tableAname);<a name="line.323"></a>
 <span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(2);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  columnValues.add(new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      wrap(valueAname)));<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  columnValues.add(new TColumnValue(wrap(familyBname), wrap(qualifierBname),<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      wrap(valueBname)));<a name="line.329"></a>
-<span class="sourceLineNo">330</span>  TPut put = new TPut(wrap(rowName), columnValues);<a name="line.330"></a>
+<span class="sourceLineNo">325</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(2);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    columnValues.add(new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.326"></a>
+<span class="sourceLineNo">327</span>        wrap(valueAname)));<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    columnValues.add(new TColumnValue(wrap(familyBname), wrap(qualifierBname),<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        wrap(valueBname)));<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    TPut put = new TPut(wrap(rowName), columnValues);<a name="line.330"></a>
 <span class="sourceLineNo">331</span><a name="line.331"></a>
-<span class="sourceLineNo">332</span>  put.setColumnValues(columnValues);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  put.setCellVisibility(new TCellVisibility().setExpression("(" + SECRET + "|"<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      + CONFIDENTIAL + ")" + "&amp;" + "!" + TOPSECRET));<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  handler.put(table, put);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  TGet get = new TGet(wrap(rowName));<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  TAuthorization tauth = new TAuthorization();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  List&lt;String&gt; labels = new ArrayList&lt;&gt;(2);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  labels.add(SECRET);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  labels.add(PRIVATE);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  tauth.setLabels(labels);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  get.setAuthorizations(tauth);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  TResult result = handler.get(table, get);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  assertArrayEquals(rowName, result.getRow());<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  List&lt;TColumnValue&gt; returnedColumnValues = result.getColumnValues();<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  assertTColumnValuesEqual(columnValues, returnedColumnValues);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>}<a name="line.347"></a>
+<span class="sourceLineNo">332</span>    put.setColumnValues(columnValues);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    put.setCellVisibility(new TCellVisibility().setExpression("(" + SECRET + "|"<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        + CONFIDENTIAL + ")" + "&amp;" + "!" + TOPSECRET));<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    handler.put(table, put);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    TGet get = new TGet(wrap(rowName));<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    TAuthorization tauth = new TAuthorization();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    List&lt;String&gt; labels = new ArrayList&lt;&gt;(2);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    labels.add(SECRET);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    labels.add(PRIVATE);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    tauth.setLabels(labels);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    get.setAuthorizations(tauth);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    TResult result = handler.get(table, get);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    assertArrayEquals(rowName, result.getRow());<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    List&lt;TColumnValue&gt; returnedColumnValues = result.getColumnValues();<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    assertTColumnValuesEqual(columnValues, returnedColumnValues);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
 <span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>@Test<a name="line.349"></a>
-<span class="sourceLineNo">350</span>public void testIncrementWithTags() throws Exception {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  ThriftHBaseServiceHandler handler = createHandler();<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  byte[] rowName = "testIncrementWithTags".getBytes();<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  ByteBuffer table = wrap(tableAname);<a name="line.353"></a>
+<span class="sourceLineNo">349</span>  @Test<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  public void testIncrementWithTags() throws Exception {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    byte[] rowName = "testIncrementWithTags".getBytes();<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    ByteBuffer table = wrap(tableAname);<a name="line.353"></a>
 <span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>  List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  columnValues.add(new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      wrap(Bytes.toBytes(1L))));<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  TPut put = new TPut(wrap(rowName), columnValues);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  put.setColumnValues(columnValues);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  put.setCellVisibility(new TCellVisibility().setExpression(PRIVATE));<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  handler.put(table, put);<a name="line.361"></a>
+<span class="sourceLineNo">355</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    columnValues.add(new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        wrap(Bytes.toBytes(1L))));<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    TPut put = new TPut(wrap(rowName), columnValues);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    put.setColumnValues(columnValues);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    put.setCellVisibility(new TCellVisibility().setExpression(PRIVATE));<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    handler.put(table, put);<a name="line.361"></a>
 <span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>  List&lt;TColumnIncrement&gt; incrementColumns = new ArrayList&lt;&gt;(1);<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  incrementColumns.add(new TColumnIncrement(wrap(familyAname),<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      wrap(qualifierAname)));<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  TIncrement increment = new TIncrement(wrap(rowName), incrementColumns);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  increment.setCellVisibility(new TCellVisibility().setExpression(SECRET));<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  handler.increment(table, increment);<a name="line.368"></a>
+<span class="sourceLineNo">363</span>    List&lt;TColumnIncrement&gt; incrementColumns = new ArrayList&lt;&gt;(1);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    incrementColumns.add(new TColumnIncrement(wrap(familyAname),<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        wrap(qualifierAname)));<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    TIncrement increment = new TIncrement(wrap(rowName), incrementColumns);<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    increment.setCellVisibility(new TCellVisibility().setExpression(SECRET));<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    handler.increment(table, increment);<a name="line.368"></a>
 <span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  TGet get = new TGet(wrap(rowName));<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  TAuthorization tauth = new TAuthorization();<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  List&lt;String&gt; labels = new ArrayList&lt;&gt;(1);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  labels.add(SECRET);<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  tauth.setLabels(labels);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  get.setAuthorizations(tauth);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  TResult result = handler.get(table, get);<a name="line.376"></a>
+<span class="sourceLineNo">370</span>    TGet get = new TGet(wrap(rowName));<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    TAuthorization tauth = new TAuthorization();<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    List&lt;String&gt; labels = new ArrayList&lt;&gt;(1);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    labels.add(SECRET);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    tauth.setLabels(labels);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    get.setAuthorizations(tauth);<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    TResult result = handler.get(table, get);<a name="line.376"></a>
 <span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>  assertArrayEquals(rowName, result.getRow());<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  assertEquals(1, result.getColumnValuesSize());<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  TColumnValue columnValue = result.getColumnValues().get(0);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  assertArrayEquals(Bytes.toBytes(2L), columnValue.getValue());<a name="line.381"></a>
-<span class="sourceLineNo">382</span>}<a name="line.382"></a>
+<span class="sourceLineNo">378</span>    assertArrayEquals(rowName, result.getRow());<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    assertEquals(1, result.getColumnValuesSize());<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    TColumnValue columnValue = result.getColumnValues().get(0);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    assertArrayEquals(Bytes.toBytes(2L), columnValue.getValue());<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
 <span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>@Test<a name="line.384"></a>
-<span class="sourceLineNo">385</span>public void testIncrementWithTagsWithNotMatchLabels() throws Exception {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  ThriftHBaseServiceHandler handler = createHandler();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  byte[] rowName = "testIncrementWithTagsWithNotMatchLabels".getBytes();<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  ByteBuffer table = wrap(tableAname);<a name="line.388"></a>
+<span class="sourceLineNo">384</span>  @Test<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  public void testIncrementWithTagsWithNotMatchLabels() throws Exception {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    byte[] rowName = "testIncrementWithTagsWithNotMatchLabels".getBytes();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    ByteBuffer table = wrap(tableAname);<a name="line.388"></a>
 <span class="sourceLineNo">389</span><a name="line.389"></a>
-<span class="sourceLineNo">390</span>  List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  columnValues.add(new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      wrap(Bytes.toBytes(1L))));<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  TPut put = new TPut(wrap(rowName), columnValues);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  put.setColumnValues(columnValues);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  put.setCellVisibility(new TCellVisibility().setExpression(PRIVATE));<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  handler.put(table, put);<a name="line.396"></a>
+<span class="sourceLineNo">390</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    columnValues.add(new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        wrap(Bytes.toBytes(1L))));<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    TPut put = new TPut(wrap(rowName), columnValues);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    put.setColumnValues(columnValues);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    put.setCellVisibility(new TCellVisibility().setExpression(PRIVATE));<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    handler.put(table, put);<a name="line.396"></a>
 <span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  List&lt;TColumnIncrement&gt; incrementColumns = new ArrayList&lt;&gt;(1);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  incrementColumns.add(new TColumnIncrement(wrap(familyAname),<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      wrap(qualifierAname)));<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  TIncrement increment = new TIncrement(wrap(rowName), incrementColumns);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  increment.setCellVisibility(new TCellVisibility().setExpression(SECRET));<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  handler.increment(table, increment);<a name="line.403"></a>
+<span class="sourceLineNo">398</span>    List&lt;TColumnIncrement&gt; incrementColumns = new ArrayList&lt;&gt;(1);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    incrementColumns.add(new TColumnIncrement(wrap(familyAname),<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        wrap(qualifierAname)));<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    TIncrement increment = new TIncrement(wrap(rowName), incrementColumns);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    increment.setCellVisibility(new TCellVisibility().setExpression(SECRET));<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    handler.increment(table, increment);<a name="line.403"></a>
 <span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>  TGet get = new TGet(wrap(rowName));<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  TAuthorization tauth = new TAuthorization();<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  List&lt;String&gt; labels = new ArrayList&lt;&gt;(1);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  labels.add(PUBLIC);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>  tauth.setLabels(labels);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  get.setAuthorizations(tauth);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  TResult result = handler.get(table, get);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  assertNull(result.getRow());<a name="line.412"></a>
-<span class="sourceLineNo">413</span>}<a name="line.413"></a>
+<span class="sourceLineNo">405</span>    TGet get = new TGet(wrap(rowName));<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    TAuthorization tauth = new TAuthorization();<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    List&lt;String&gt; labels = new ArrayList&lt;&gt;(1);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    labels.add(PUBLIC);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    tauth.setLabels(labels);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    get.setAuthorizations(tauth);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    TResult result = handler.get(table, get);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    assertNull(result.getRow());<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  }<a name="line.413"></a>
 <span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>@Test<a name="line.415"></a>
-<span class="sourceLineNo">416</span>public void testAppend() throws Exception {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>  ThriftHBaseServiceHandler handler = createHandler();<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  byte[] rowName = "testAppend".getBytes();<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  ByteBuffer table = wrap(tableAname);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  byte[] v1 = Bytes.toBytes(1L);<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  byte[] v2 = Bytes.toBytes(5L);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  columnValues.add(new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      wrap(Bytes.toBytes(1L))));<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  TPut put = new TPut(wrap(rowName), columnValues);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  put.setColumnValues(columnValues);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>  put.setCellVisibility(new TCellVisibility().setExpression(PRIVATE));<a name="line.427"></a>
-<span class="sourceLineNo">428</span>  handler.put(table, put);<a name="line.428"></a>
+<span class="sourceLineNo">415</span>  @Test<a name="line.415"></a>
+<span class="sourceLineNo">416</span>  public void testAppend() throws Exception {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    byte[] rowName = "testAppend".getBytes();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    ByteBuffer table = wrap(tableAname);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    byte[] v1 = Bytes.toBytes(1L);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    byte[] v2 = Bytes.toBytes(5L);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    columnValues.add(new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        wrap(Bytes.toBytes(1L))));<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    TPut put = new TPut(wrap(rowName), columnValues);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    put.setColumnValues(columnValues);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    put.setCellVisibility(new TCellVisibility().setExpression(PRIVATE));<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    handler.put(table, put);<a name="line.428"></a>
 <span class="sourceLineNo">429</span><a name="line.429"></a>
-<span class="sourceLineNo">430</span>  List&lt;TColumnValue&gt; appendColumns = new ArrayList&lt;&gt;(1);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>  appendColumns.add(new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      wrap(v2)));<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  TAppend append = new TAppend(wrap(rowName), appendColumns);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>  append.setCellVisibility(new TCellVisibility().setExpression(SECRET));<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  handler.append(table, append);<a name="line.435"></a>
+<span class="sourceLineNo">430</span>    List&lt;TColumnValue&gt; appendColumns = new ArrayList&lt;&gt;(1);<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    appendColumns.add(new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.431"></a>
+<span class="sourceLineNo">432</span>        wrap(v2)));<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    TAppend append = new TAppend(wrap(rowName), appendColumns);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    append.setCellVisibility(new TCellVisibility().setExpression(SECRET));<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    handler.append(table, append);<a name="line.435"></a>
 <span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  TGet get = new TGet(wrap(rowName));<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  TAuthorization tauth = new TAuthorization();<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  List&lt;String&gt; labels = new ArrayList&lt;&gt;(1);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  labels.add(SECRET);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  tauth.setLabels(labels);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  get.setAuthorizations(tauth);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  TResult result = handler.get(table, get);<a name="line.443"></a>
+<span class="sourceLineNo">437</span>    TGet get = new TGet(wrap(rowName));<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    TAuthorization tauth = new TAuthorization();<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    List&lt;String&gt; labels = new ArrayList&lt;&gt;(1);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    labels.add(SECRET);<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    tauth.setLabels(labels);<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    get.setAuthorizations(tauth);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    TResult result = handler.get(table, get);<a name="line.443"></a>
 <span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>  assertArrayEquals(rowName, result.getRow());<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  assertEquals(1, result.getColumnValuesSize());<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  TColumnValue columnValue = result.getColumnValues().get(0);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  assertArrayEquals(Bytes.add(v1, v2), columnValue.getValue());<a name="line.448"></a>
-<span class="sourceLineNo">449</span>}<a name="line.449"></a>
+<span class="sourceLineNo">445</span>    assertArrayEquals(rowName, result.getRow());<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    assertEquals(1, result.getColumnValuesSize());<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    TColumnValue columnValue = result.getColumnValues().get(0);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    assertArrayEquals(Bytes.add(v1, v2), columnValue.getValue());<a name="line.448"></a>
+<span class="sourceLineNo">449</span>  }<a name="line.449"></a>
 <span class="sourceLineNo">450</span><a name="line.450"></a>
-<span class="sourceLineNo">451</span>/**<a name="line.451"></a>
-<span class="sourceLineNo">452</span> * Padding numbers to make comparison of sort order easier in a for loop<a name="line.452"></a>
-<span class="sourceLineNo">453</span> * <a name="line.453"></a>
-<span class="sourceLineNo">454</span> * @param n<a name="line.454"></a>
-<span class="sourceLineNo">455</span> *          The number to pad.<a name="line.455"></a>
-<span class="sourceLineNo">456</span> * @param pad<a name="line.456"></a>
-<span class="sourceLineNo">457</span> *          The length to pad up to.<a name="line.457"></a>
-<span class="sourceLineNo">458</span> * @return The padded number as a string.<a name="line.458"></a>
-<span class="sourceLineNo">459</span> */<a name="line.459"></a>
-<span class="sourceLineNo">460</span>private String pad(int n, byte pad) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>  String res = Integer.toString(n);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>  while (res.length() &lt; pad)<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    res = "0" + res;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>  return res;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>}<a name="line.465"></a>
-<span class="sourceLineNo">466</span>}<a name="line.466"></a>
+<span class="sourceLineNo">451</span>  /**<a name="line.451"></a>
+<span class="sourceLineNo">452</span>   * Padding numbers to make comparison of sort order easier in a for loop<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   *<a name="line.453"></a>
+<span class="sourceLineNo">454</span>   * @param n<a name="line.454"></a>
+<span class="sourceLineNo">455</span>   *          The number to pad.<a name="line.455"></a>
+<span class="sourceLineNo">456</span>   * @param pad<a name="line.456"></a>
+<span class="sourceLineNo">457</span>   *          The length to pad up to.<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   * @return The padded number as a string.<a name="line.458"></a>
+<span class="sourceLineNo">459</span>   */<a name="line.459"></a>
+<span class="sourceLineNo">460</span>  private String pad(int n, byte pad) {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    String res = Integer.toString(n);<a name="line.461"></a>
+<span class="sourceLineNo">462</span><a name="line.462"></a>
+<span class="sourceLineNo">463</span>    while (res.length() &lt; pad) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      res = "0" + res;<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>    return res;<a name="line.467"></a>
+<span class="sourceLineNo">468</span>  }<a name="line.468"></a>
+<span class="sourceLineNo">469</span>}<a name="line.469"></a>
 
 
 


[05/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html
index 10c9d49..7dab9fc 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html
@@ -109,7 +109,7 @@
 <span class="sourceLineNo">101</span>  private static ByteBuffer valueBname = asByteBuffer("valueB");<a name="line.101"></a>
 <span class="sourceLineNo">102</span>  private static ByteBuffer valueCname = asByteBuffer("valueC");<a name="line.102"></a>
 <span class="sourceLineNo">103</span>  private static ByteBuffer valueDname = asByteBuffer("valueD");<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  private static ByteBuffer valueEname = asByteBuffer(100l);<a name="line.104"></a>
+<span class="sourceLineNo">104</span>  private static ByteBuffer valueEname = asByteBuffer(100L);<a name="line.104"></a>
 <span class="sourceLineNo">105</span><a name="line.105"></a>
 <span class="sourceLineNo">106</span>  @Rule<a name="line.106"></a>
 <span class="sourceLineNo">107</span>  public TestName name = new TestName();<a name="line.107"></a>
@@ -132,761 +132,748 @@
 <span class="sourceLineNo">124</span>   * consolidate all testing to one method because HBaseClusterTestCase<a name="line.124"></a>
 <span class="sourceLineNo">125</span>   * is prone to OutOfMemoryExceptions when there are three or more<a name="line.125"></a>
 <span class="sourceLineNo">126</span>   * JUnit test methods.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   *<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   * @throws Exception<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   */<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  @Test<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  public void testAll() throws Exception {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    // Run all tests<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    doTestTableCreateDrop();<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    doTestThriftMetrics();<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    doTestTableMutations();<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    doTestTableTimestampsAndColumns();<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    doTestTableScanners();<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    doTestGetTableRegions();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    doTestFilterRegistration();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    doTestGetRegionInfo();<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    doTestIncrements();<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    doTestAppend();<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    doTestCheckAndPut();<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  }<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>  /**<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * Tests for creating, enabling, disabling, and deleting tables.  Also<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * tests that creating a table with an invalid column name yields an<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * IllegalArgument exception.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   *<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * @throws Exception<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public void doTestTableCreateDrop() throws Exception {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    doTestTableCreateDrop(handler);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>  public static void doTestTableCreateDrop(Hbase.Iface handler) throws Exception {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    createTestTables(handler);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    dropTestTables(handler);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>  public static final class MySlowHBaseHandler extends ThriftServerRunner.HBaseHandler<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      implements Hbase.Iface {<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span>    protected MySlowHBaseHandler(Configuration c)<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        throws IOException {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      super(c, UserProvider.instantiate(c));<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>    @Override<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public List&lt;ByteBuffer&gt; getTableNames() throws IOError {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      Threads.sleepWithoutInterrupt(3000);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      return super.getTableNames();<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  }<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>  /**<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   * TODO: These counts are supposed to be zero but sometimes they are not, they are equal to the<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   * passed in maybe.  Investigate why.  My guess is they are set by the test that runs just<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * previous to this one.  Sometimes they are cleared.  Sometimes not.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * @param name<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * @param maybe<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * @param metrics<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * @return<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   */<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  private int getCurrentCount(final String name, final int maybe, final ThriftMetrics metrics) {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    int currentCount = 0;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    try {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      metricsHelper.assertCounter(name, maybe, metrics.getSource());<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      LOG.info("Shouldn't this be null? name=" + name + ", equals=" + maybe);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      currentCount = maybe;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    } catch (AssertionError e) {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      // Ignore<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    }<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    return currentCount;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  }<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>  /**<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   * Tests if the metrics for thrift handler work correctly<a name="line.202"></a>
-<span class="sourceLineNo">203</span>   */<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  public void doTestThriftMetrics() throws Exception {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    LOG.info("START doTestThriftMetrics");<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    Configuration conf = UTIL.getConfiguration();<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    ThriftMetrics metrics = getMetrics(conf);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    Hbase.Iface handler = getHandlerForMetricsTest(metrics, conf);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    int currentCountCreateTable = getCurrentCount("createTable_num_ops", 2, metrics);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    int currentCountDeleteTable = getCurrentCount("deleteTable_num_ops", 2, metrics);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    int currentCountDisableTable = getCurrentCount("disableTable_num_ops", 2, metrics);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    createTestTables(handler);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    dropTestTables(handler);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    metricsHelper.assertCounter("createTable_num_ops", currentCountCreateTable + 2,<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      metrics.getSource());<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    metricsHelper.assertCounter("deleteTable_num_ops", currentCountDeleteTable + 2,<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      metrics.getSource());<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    metricsHelper.assertCounter("disableTable_num_ops", currentCountDisableTable + 2,<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      metrics.getSource());<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    handler.getTableNames(); // This will have an artificial delay.<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>    // 3 to 6 seconds (to account for potential slowness), measured in nanoseconds<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   try {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>     metricsHelper.assertGaugeGt("getTableNames_avg_time", 3L * 1000 * 1000 * 1000, metrics.getSource());<a name="line.224"></a>
-<span class="sourceLineNo">225</span>     metricsHelper.assertGaugeLt("getTableNames_avg_time",6L * 1000 * 1000 * 1000, metrics.getSource());<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   } catch (AssertionError e) {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>     LOG.info("Fix me!  Why does this happen?  A concurrent cluster running?", e);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   }<a name="line.228"></a>
+<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  @Test<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  public void testAll() throws Exception {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    // Run all tests<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    doTestTableCreateDrop();<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    doTestThriftMetrics();<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    doTestTableMutations();<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    doTestTableTimestampsAndColumns();<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    doTestTableScanners();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    doTestGetTableRegions();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    doTestFilterRegistration();<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    doTestGetRegionInfo();<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    doTestIncrements();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    doTestAppend();<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    doTestCheckAndPut();<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>  /**<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * Tests for creating, enabling, disabling, and deleting tables.  Also<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   * tests that creating a table with an invalid column name yields an<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * IllegalArgument exception.<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   */<a name="line.148"></a>
+<span class="sourceLineNo">149</span>  public void doTestTableCreateDrop() throws Exception {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    doTestTableCreateDrop(handler);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  }<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span>  public static void doTestTableCreateDrop(Hbase.Iface handler) throws Exception {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    createTestTables(handler);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    dropTestTables(handler);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>  public static final class MySlowHBaseHandler extends ThriftServerRunner.HBaseHandler<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      implements Hbase.Iface {<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>    protected MySlowHBaseHandler(Configuration c)<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        throws IOException {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      super(c, UserProvider.instantiate(c));<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    }<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>    @Override<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    public List&lt;ByteBuffer&gt; getTableNames() throws IOError {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      Threads.sleepWithoutInterrupt(3000);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      return super.getTableNames();<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    }<a name="line.173"></a>
+<span class="sourceLineNo">174</span>  }<a name="line.174"></a>
+<span class="sourceLineNo">175</span><a name="line.175"></a>
+<span class="sourceLineNo">176</span>  /**<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   * TODO: These counts are supposed to be zero but sometimes they are not, they are equal to the<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   * passed in maybe.  Investigate why.  My guess is they are set by the test that runs just<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   * previous to this one.  Sometimes they are cleared.  Sometimes not.<a name="line.179"></a>
+<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  private int getCurrentCount(final String name, final int maybe, final ThriftMetrics metrics) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    int currentCount = 0;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    try {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      metricsHelper.assertCounter(name, maybe, metrics.getSource());<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      LOG.info("Shouldn't this be null? name=" + name + ", equals=" + maybe);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      currentCount = maybe;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    } catch (AssertionError e) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      // Ignore<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    return currentCount;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  /**<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * Tests if the metrics for thrift handler work correctly<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   */<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  public void doTestThriftMetrics() throws Exception {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    LOG.info("START doTestThriftMetrics");<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    Configuration conf = UTIL.getConfiguration();<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    ThriftMetrics metrics = getMetrics(conf);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    Hbase.Iface handler = getHandlerForMetricsTest(metrics, conf);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    int currentCountCreateTable = getCurrentCount("createTable_num_ops", 2, metrics);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    int currentCountDeleteTable = getCurrentCount("deleteTable_num_ops", 2, metrics);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    int currentCountDisableTable = getCurrentCount("disableTable_num_ops", 2, metrics);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    createTestTables(handler);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    dropTestTables(handler);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    metricsHelper.assertCounter("createTable_num_ops", currentCountCreateTable + 2,<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      metrics.getSource());<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    metricsHelper.assertCounter("deleteTable_num_ops", currentCountDeleteTable + 2,<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      metrics.getSource());<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    metricsHelper.assertCounter("disableTable_num_ops", currentCountDisableTable + 2,<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      metrics.getSource());<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    handler.getTableNames(); // This will have an artificial delay.<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>    // 3 to 6 seconds (to account for potential slowness), measured in nanoseconds<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    try {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      metricsHelper.assertGaugeGt("getTableNames_avg_time", 3L * 1000 * 1000 * 1000,<a name="line.216"></a>
+<span class="sourceLineNo">217</span>              metrics.getSource());<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      metricsHelper.assertGaugeLt("getTableNames_avg_time",6L * 1000 * 1000 * 1000,<a name="line.218"></a>
+<span class="sourceLineNo">219</span>              metrics.getSource());<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    } catch (AssertionError e) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      LOG.info("Fix me!  Why does this happen?  A concurrent cluster running?", e);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>  private static Hbase.Iface getHandlerForMetricsTest(ThriftMetrics metrics, Configuration conf)<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      throws Exception {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    Hbase.Iface handler = new MySlowHBaseHandler(conf);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    return HbaseHandlerMetricsProxy.newInstance(handler, metrics, conf);<a name="line.228"></a>
 <span class="sourceLineNo">229</span>  }<a name="line.229"></a>
 <span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  private static Hbase.Iface getHandlerForMetricsTest(ThriftMetrics metrics, Configuration conf)<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      throws Exception {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    Hbase.Iface handler = new MySlowHBaseHandler(conf);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    return HbaseHandlerMetricsProxy.newInstance(handler, metrics, conf);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  }<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>  private static ThriftMetrics getMetrics(Configuration conf) throws Exception {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    return new ThriftMetrics( conf, ThriftMetrics.ThriftServerType.ONE);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>  }<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>  public static void createTestTables(Hbase.Iface handler) throws Exception {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    // Create/enable/disable/delete tables, ensure methods act correctly<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    assertEquals(handler.getTableNames().size(), 0);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    assertEquals(handler.getTableNames().size(), 1);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    assertEquals(handler.getColumnDescriptors(tableAname).size(), 2);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    assertTrue(handler.isTableEnabled(tableAname));<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    handler.createTable(tableBname, getColumnDescriptors());<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    assertEquals(handler.getTableNames().size(), 2);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>  }<a name="line.251"></a>
-<span class="sourceLineNo">252</span><a name="line.252"></a>
-<span class="sourceLineNo">253</span>  public static void checkTableList(Hbase.Iface handler) throws Exception {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    assertTrue(handler.getTableNames().contains(tableAname));<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  }<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>  public static void dropTestTables(Hbase.Iface handler) throws Exception {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    handler.disableTable(tableBname);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    assertFalse(handler.isTableEnabled(tableBname));<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    handler.deleteTable(tableBname);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    assertEquals(handler.getTableNames().size(), 1);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    handler.disableTable(tableAname);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    assertFalse(handler.isTableEnabled(tableAname));<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    /* TODO Reenable.<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    assertFalse(handler.isTableEnabled(tableAname));<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    handler.enableTable(tableAname);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertTrue(handler.isTableEnabled(tableAname));<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    handler.disableTable(tableAname);*/<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    handler.deleteTable(tableAname);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    assertEquals(handler.getTableNames().size(), 0);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  }<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>  public void doTestIncrements() throws Exception {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    createTestTables(handler);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    doTestIncrements(handler);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    dropTestTables(handler);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>  public static void doTestIncrements(HBaseHandler handler) throws Exception {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    List&lt;Mutation&gt; mutations = new ArrayList&lt;&gt;(1);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    mutations.add(new Mutation(false, columnAAname, valueEname, true));<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    mutations.add(new Mutation(false, columnAname, valueEname, true));<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    handler.mutateRow(tableAname, rowAname, mutations, null);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    handler.mutateRow(tableAname, rowBname, mutations, null);<a name="line.287"></a>
-<span class="sourceLineNo">288</span><a name="line.288"></a>
-<span class="sourceLineNo">289</span>    List&lt;TIncrement&gt; increments = new ArrayList&lt;&gt;(3);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    increments.add(new TIncrement(tableAname, rowBname, columnAAname, 7));<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    increments.add(new TIncrement(tableAname, rowBname, columnAAname, 7));<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    increments.add(new TIncrement(tableAname, rowBname, columnAAname, 7));<a name="line.292"></a>
+<span class="sourceLineNo">231</span>  private static ThriftMetrics getMetrics(Configuration conf) throws Exception {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    return new ThriftMetrics(conf, ThriftMetrics.ThriftServerType.ONE);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  }<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>  public static void createTestTables(Hbase.Iface handler) throws Exception {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    // Create/enable/disable/delete tables, ensure methods act correctly<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    assertEquals(handler.getTableNames().size(), 0);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    assertEquals(handler.getTableNames().size(), 1);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    assertEquals(handler.getColumnDescriptors(tableAname).size(), 2);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    assertTrue(handler.isTableEnabled(tableAname));<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    handler.createTable(tableBname, getColumnDescriptors());<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    assertEquals(handler.getTableNames().size(), 2);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  }<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>  public static void checkTableList(Hbase.Iface handler) throws Exception {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    assertTrue(handler.getTableNames().contains(tableAname));<a name="line.248"></a>
+<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>  public static void dropTestTables(Hbase.Iface handler) throws Exception {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    handler.disableTable(tableBname);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    assertFalse(handler.isTableEnabled(tableBname));<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    handler.deleteTable(tableBname);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    assertEquals(handler.getTableNames().size(), 1);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    handler.disableTable(tableAname);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    assertFalse(handler.isTableEnabled(tableAname));<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    /* TODO Reenable.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    assertFalse(handler.isTableEnabled(tableAname));<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    handler.enableTable(tableAname);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    assertTrue(handler.isTableEnabled(tableAname));<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    handler.disableTable(tableAname);*/<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    handler.deleteTable(tableAname);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    assertEquals(handler.getTableNames().size(), 0);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  }<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>  public void doTestIncrements() throws Exception {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    createTestTables(handler);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    doTestIncrements(handler);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    dropTestTables(handler);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public static void doTestIncrements(HBaseHandler handler) throws Exception {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    List&lt;Mutation&gt; mutations = new ArrayList&lt;&gt;(1);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    mutations.add(new Mutation(false, columnAAname, valueEname, true));<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    mutations.add(new Mutation(false, columnAname, valueEname, true));<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    handler.mutateRow(tableAname, rowAname, mutations, null);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    handler.mutateRow(tableAname, rowBname, mutations, null);<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>    List&lt;TIncrement&gt; increments = new ArrayList&lt;&gt;(3);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    increments.add(new TIncrement(tableAname, rowBname, columnAAname, 7));<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    increments.add(new TIncrement(tableAname, rowBname, columnAAname, 7));<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    increments.add(new TIncrement(tableAname, rowBname, columnAAname, 7));<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>    int numIncrements = 60000;<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    for (int i = 0; i &lt; numIncrements; i++) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      handler.increment(new TIncrement(tableAname, rowAname, columnAname, 2));<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      handler.incrementRows(increments);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
 <span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>    int numIncrements = 60000;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    for (int i = 0; i &lt; numIncrements; i++) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      handler.increment(new TIncrement(tableAname, rowAname, columnAname, 2));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      handler.incrementRows(increments);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    }<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>    Thread.sleep(1000);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    long lv = handler.get(tableAname, rowAname, columnAname, null).get(0).value.getLong();<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    // Wait on all increments being flushed<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    while (handler.coalescer.getQueueSize() != 0) Threads.sleep(10);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    assertEquals((100 + (2 * numIncrements)), lv );<a name="line.304"></a>
+<span class="sourceLineNo">294</span>    Thread.sleep(1000);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    long lv = handler.get(tableAname, rowAname, columnAname, null).get(0).value.getLong();<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    // Wait on all increments being flushed<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    while (handler.coalescer.getQueueSize() != 0) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      Threads.sleep(10);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    }<a name="line.299"></a>
+<span class="sourceLineNo">300</span><a name="line.300"></a>
+<span class="sourceLineNo">301</span>    assertEquals((100 + (2 * numIncrements)), lv);<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>    lv = handler.get(tableAname, rowBname, columnAAname, null).get(0).value.getLong();<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    assertEquals((100 + (3 * 7 * numIncrements)), lv);<a name="line.304"></a>
 <span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>    lv = handler.get(tableAname, rowBname, columnAAname, null).get(0).value.getLong();<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    assertEquals((100 + (3 * 7 * numIncrements)), lv);<a name="line.308"></a>
+<span class="sourceLineNo">306</span>    assertTrue(handler.coalescer.getSuccessfulCoalescings() &gt; 0);<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span>  }<a name="line.308"></a>
 <span class="sourceLineNo">309</span><a name="line.309"></a>
-<span class="sourceLineNo">310</span>    assertTrue(handler.coalescer.getSuccessfulCoalescings() &gt; 0);<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>  }<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>  /**<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * Tests adding a series of Mutations and BatchMutations, including a<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * delete mutation.  Also tests data retrieval, and getting back multiple<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * versions.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   *<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * @throws Exception<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public void doTestTableMutations() throws Exception {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.323"></a>
-<span class="sourceLineNo">324</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    doTestTableMutations(handler);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  }<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  public static void doTestTableMutations(Hbase.Iface handler) throws Exception {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    // Setup<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.330"></a>
-<span class="sourceLineNo">331</span><a name="line.331"></a>
-<span class="sourceLineNo">332</span>    // Apply a few Mutations to rowA<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    //     mutations.add(new Mutation(false, columnAname, valueAname));<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    //     mutations.add(new Mutation(false, columnBname, valueBname));<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    handler.mutateRow(tableAname, rowAname, getMutations(), null);<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>    // Assert that the changes were made<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    assertEquals(valueAname,<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      handler.get(tableAname, rowAname, columnAname, null).get(0).value);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    TRowResult rowResult1 = handler.getRow(tableAname, rowAname, null).get(0);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    assertEquals(rowAname, rowResult1.row);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    assertEquals(valueBname,<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      rowResult1.columns.get(columnBname).value);<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>    // Apply a few BatchMutations for rowA and rowB<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    // rowAmutations.add(new Mutation(true, columnAname, null));<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    // rowAmutations.add(new Mutation(false, columnBname, valueCname));<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    // batchMutations.add(new BatchMutation(rowAname, rowAmutations));<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    // Mutations to rowB<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    // rowBmutations.add(new Mutation(false, columnAname, valueCname));<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    // rowBmutations.add(new Mutation(false, columnBname, valueDname));<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    // batchMutations.add(new BatchMutation(rowBname, rowBmutations));<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    handler.mutateRows(tableAname, getBatchMutations(), null);<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>    // Assert that changes were made to rowA<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    List&lt;TCell&gt; cells = handler.get(tableAname, rowAname, columnAname, null);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    assertFalse(cells.size() &gt; 0);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    assertEquals(valueCname, handler.get(tableAname, rowAname, columnBname, null).get(0).value);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    List&lt;TCell&gt; versions = handler.getVer(tableAname, rowAname, columnBname, MAXVERSIONS, null);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    assertEquals(valueCname, versions.get(0).value);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    assertEquals(valueBname, versions.get(1).value);<a name="line.361"></a>
+<span class="sourceLineNo">310</span>  /**<a name="line.310"></a>
+<span class="sourceLineNo">311</span>   * Tests adding a series of Mutations and BatchMutations, including a<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   * delete mutation.  Also tests data retrieval, and getting back multiple<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * versions.<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  public void doTestTableMutations() throws Exception {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.317"></a>
+<span class="sourceLineNo">318</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    doTestTableMutations(handler);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  public static void doTestTableMutations(Hbase.Iface handler) throws Exception {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    // Setup<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.324"></a>
+<span class="sourceLineNo">325</span><a name="line.325"></a>
+<span class="sourceLineNo">326</span>    // Apply a few Mutations to rowA<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    //     mutations.add(new Mutation(false, columnAname, valueAname));<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    //     mutations.add(new Mutation(false, columnBname, valueBname));<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    handler.mutateRow(tableAname, rowAname, getMutations(), null);<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>    // Assert that the changes were made<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    assertEquals(valueAname,<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      handler.get(tableAname, rowAname, columnAname, null).get(0).value);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    TRowResult rowResult1 = handler.getRow(tableAname, rowAname, null).get(0);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    assertEquals(rowAname, rowResult1.row);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    assertEquals(valueBname,<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      rowResult1.columns.get(columnBname).value);<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>    // Apply a few BatchMutations for rowA and rowB<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    // rowAmutations.add(new Mutation(true, columnAname, null));<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    // rowAmutations.add(new Mutation(false, columnBname, valueCname));<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    // batchMutations.add(new BatchMutation(rowAname, rowAmutations));<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    // Mutations to rowB<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    // rowBmutations.add(new Mutation(false, columnAname, valueCname));<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    // rowBmutations.add(new Mutation(false, columnBname, valueDname));<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // batchMutations.add(new BatchMutation(rowBname, rowBmutations));<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    handler.mutateRows(tableAname, getBatchMutations(), null);<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    // Assert that changes were made to rowA<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    List&lt;TCell&gt; cells = handler.get(tableAname, rowAname, columnAname, null);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    assertFalse(cells.size() &gt; 0);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    assertEquals(valueCname, handler.get(tableAname, rowAname, columnBname, null).get(0).value);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    List&lt;TCell&gt; versions = handler.getVer(tableAname, rowAname, columnBname, MAXVERSIONS, null);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    assertEquals(valueCname, versions.get(0).value);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    assertEquals(valueBname, versions.get(1).value);<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>    // Assert that changes were made to rowB<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    TRowResult rowResult2 = handler.getRow(tableAname, rowBname, null).get(0);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    assertEquals(rowBname, rowResult2.row);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    assertEquals(valueCname, rowResult2.columns.get(columnAname).value);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    assertEquals(valueDname, rowResult2.columns.get(columnBname).value);<a name="line.361"></a>
 <span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>    // Assert that changes were made to rowB<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    TRowResult rowResult2 = handler.getRow(tableAname, rowBname, null).get(0);<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    assertEquals(rowBname, rowResult2.row);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    assertEquals(valueCname, rowResult2.columns.get(columnAname).value);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    assertEquals(valueDname, rowResult2.columns.get(columnBname).value);<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>    // Apply some deletes<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    handler.deleteAll(tableAname, rowAname, columnBname, null);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    handler.deleteAllRow(tableAname, rowBname, null);<a name="line.371"></a>
+<span class="sourceLineNo">363</span>    // Apply some deletes<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    handler.deleteAll(tableAname, rowAname, columnBname, null);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    handler.deleteAllRow(tableAname, rowBname, null);<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>    // Assert that the deletes were applied<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    int size = handler.get(tableAname, rowAname, columnBname, null).size();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    assertEquals(0, size);<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    size = handler.getRow(tableAname, rowBname, null).size();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    assertEquals(0, size);<a name="line.371"></a>
 <span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>    // Assert that the deletes were applied<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    int size = handler.get(tableAname, rowAname, columnBname, null).size();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    assertEquals(0, size);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    size = handler.getRow(tableAname, rowBname, null).size();<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    assertEquals(0, size);<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>    // Try null mutation<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    List&lt;Mutation&gt; mutations = new ArrayList&lt;&gt;(1);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    mutations.add(new Mutation(false, columnAname, null, true));<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    handler.mutateRow(tableAname, rowAname, mutations, null);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    TRowResult rowResult3 = handler.getRow(tableAname, rowAname, null).get(0);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    assertEquals(rowAname, rowResult3.row);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    assertEquals(0, rowResult3.columns.get(columnAname).value.remaining());<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>    // Teardown<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    handler.disableTable(tableAname);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    handler.deleteTable(tableAname);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  }<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>  /**<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   * Similar to testTableMutations(), except Mutations are applied with<a name="line.393"></a>
-<span class="sourceLineNo">394</span>   * specific timestamps and data retrieval uses these timestamps to<a name="line.394"></a>
-<span class="sourceLineNo">395</span>   * extract specific versions of data.<a name="line.395"></a>
-<span class="sourceLineNo">396</span>   *<a name="line.396"></a>
-<span class="sourceLineNo">397</span>   * @throws Exception<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   */<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  public void doTestTableTimestampsAndColumns() throws Exception {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    // Setup<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.404"></a>
-<span class="sourceLineNo">405</span><a name="line.405"></a>
-<span class="sourceLineNo">406</span>    // Apply timestamped Mutations to rowA<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    long time1 = System.currentTimeMillis();<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    handler.mutateRowTs(tableAname, rowAname, getMutations(), time1, null);<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>    Thread.sleep(1000);<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>    // Apply timestamped BatchMutations for rowA and rowB<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    long time2 = System.currentTimeMillis();<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    handler.mutateRowsTs(tableAname, getBatchMutations(), time2, null);<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>    // Apply an overlapping timestamped mutation to rowB<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    handler.mutateRowTs(tableAname, rowBname, getMutations(), time2, null);<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>    // the getVerTs is [inf, ts) so you need to increment one.<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    time1 += 1;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    time2 += 2;<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>    // Assert that the timestamp-related methods retrieve the correct data<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    assertEquals(2, handler.getVerTs(tableAname, rowAname, columnBname, time2,<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      MAXVERSIONS, null).size());<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    assertEquals(1, handler.getVerTs(tableAname, rowAname, columnBname, time1,<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      MAXVERSIONS, null).size());<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>    TRowResult rowResult1 = handler.getRowTs(tableAname, rowAname, time1, null).get(0);<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    TRowResult rowResult2 = handler.getRowTs(tableAname, rowAname, time2, null).get(0);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    // columnA was completely deleted<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    //assertTrue(Bytes.equals(rowResult1.columns.get(columnAname).value, valueAname));<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    assertEquals(rowResult1.columns.get(columnBname).value, valueBname);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    assertEquals(rowResult2.columns.get(columnBname).value, valueCname);<a name="line.434"></a>
-<span class="sourceLineNo">435</span><a name="line.435"></a>
-<span class="sourceLineNo">436</span>    // ColumnAname has been deleted, and will never be visible even with a getRowTs()<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    assertFalse(rowResult2.columns.containsKey(columnAname));<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>    List&lt;ByteBuffer&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    columns.add(columnBname);<a name="line.440"></a>
+<span class="sourceLineNo">373</span>    // Try null mutation<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    List&lt;Mutation&gt; mutations = new ArrayList&lt;&gt;(1);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    mutations.add(new Mutation(false, columnAname, null, true));<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    handler.mutateRow(tableAname, rowAname, mutations, null);<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    TRowResult rowResult3 = handler.getRow(tableAname, rowAname, null).get(0);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    assertEquals(rowAname, rowResult3.row);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    assertEquals(0, rowResult3.columns.get(columnAname).value.remaining());<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>    // Teardown<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    handler.disableTable(tableAname);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    handler.deleteTable(tableAname);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * Similar to testTableMutations(), except Mutations are applied with<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * specific timestamps and data retrieval uses these timestamps to<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * extract specific versions of data.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  public void doTestTableTimestampsAndColumns() throws Exception {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    // Setup<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Apply timestamped Mutations to rowA<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    long time1 = System.currentTimeMillis();<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    handler.mutateRowTs(tableAname, rowAname, getMutations(), time1, null);<a name="line.400"></a>
+<span class="sourceLineNo">401</span><a name="line.401"></a>
+<span class="sourceLineNo">402</span>    Thread.sleep(1000);<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>    // Apply timestamped BatchMutations for rowA and rowB<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    long time2 = System.currentTimeMillis();<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    handler.mutateRowsTs(tableAname, getBatchMutations(), time2, null);<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>    // Apply an overlapping timestamped mutation to rowB<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    handler.mutateRowTs(tableAname, rowBname, getMutations(), time2, null);<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // the getVerTs is [inf, ts) so you need to increment one.<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    time1 += 1;<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    time2 += 2;<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>    // Assert that the timestamp-related methods retrieve the correct data<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    assertEquals(2, handler.getVerTs(tableAname, rowAname, columnBname, time2,<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      MAXVERSIONS, null).size());<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    assertEquals(1, handler.getVerTs(tableAname, rowAname, columnBname, time1,<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      MAXVERSIONS, null).size());<a name="line.419"></a>
+<span class="sourceLineNo">420</span><a name="line.420"></a>
+<span class="sourceLineNo">421</span>    TRowResult rowResult1 = handler.getRowTs(tableAname, rowAname, time1, null).get(0);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    TRowResult rowResult2 = handler.getRowTs(tableAname, rowAname, time2, null).get(0);<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    // columnA was completely deleted<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    //assertTrue(Bytes.equals(rowResult1.columns.get(columnAname).value, valueAname));<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    assertEquals(rowResult1.columns.get(columnBname).value, valueBname);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    assertEquals(rowResult2.columns.get(columnBname).value, valueCname);<a name="line.426"></a>
+<span class="sourceLineNo">427</span><a name="line.427"></a>
+<span class="sourceLineNo">428</span>    // ColumnAname has been deleted, and will never be visible even with a getRowTs()<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    assertFalse(rowResult2.columns.containsKey(columnAname));<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>    List&lt;ByteBuffer&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    columns.add(columnBname);<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>    rowResult1 = handler.getRowWithColumns(tableAname, rowAname, columns, null).get(0);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    assertEquals(rowResult1.columns.get(columnBname).value, valueCname);<a name="line.435"></a>
+<span class="sourceLineNo">436</span>    assertFalse(rowResult1.columns.containsKey(columnAname));<a name="line.436"></a>
+<span class="sourceLineNo">437</span><a name="line.437"></a>
+<span class="sourceLineNo">438</span>    rowResult1 = handler.getRowWithColumnsTs(tableAname, rowAname, columns, time1, null).get(0);<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    assertEquals(rowResult1.columns.get(columnBname).value, valueBname);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    assertFalse(rowResult1.columns.containsKey(columnAname));<a name="line.440"></a>
 <span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    rowResult1 = handler.getRowWithColumns(tableAname, rowAname, columns, null).get(0);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    assertEquals(rowResult1.columns.get(columnBname).value, valueCname);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    assertFalse(rowResult1.columns.containsKey(columnAname));<a name="line.444"></a>
-<span class="sourceLineNo">445</span><a name="line.445"></a>
-<span class="sourceLineNo">446</span>    rowResult1 = handler.getRowWithColumnsTs(tableAname, rowAname, columns, time1, null).get(0);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    assertEquals(rowResult1.columns.get(columnBname).value, valueBname);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    assertFalse(rowResult1.columns.containsKey(columnAname));<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>    // Apply some timestamped deletes<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    // this actually deletes _everything_.<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    // nukes everything in columnB: forever.<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    handler.deleteAllTs(tableAname, rowAname, columnBname, time1, null);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    handler.deleteAllRowTs(tableAname, rowBname, time2, null);<a name="line.454"></a>
-<span class="sourceLineNo">455</span><a name="line.455"></a>
-<span class="sourceLineNo">456</span>    // Assert that the timestamp-related methods retrieve the correct data<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    int size = handler.getVerTs(tableAname, rowAname, columnBname, time1, MAXVERSIONS, null).size();<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    assertEquals(0, size);<a name="line.458"></a>
+<span class="sourceLineNo">442</span>    // Apply some timestamped deletes<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    // this actually deletes _everything_.<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    // nukes everything in columnB: forever.<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    handler.deleteAllTs(tableAname, rowAname, columnBname, time1, null);<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    handler.deleteAllRowTs(tableAname, rowBname, time2, null);<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>    // Assert that the timestamp-related methods retrieve the correct data<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    int size = handler.getVerTs(tableAname, rowAname, columnBname, time1, MAXVERSIONS, null).size();<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    assertEquals(0, size);<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    size = handler.getVerTs(tableAname, rowAname, columnBname, time2, MAXVERSIONS, null).size();<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    assertEquals(1, size);<a name="line.453"></a>
+<span class="sourceLineNo">454</span><a name="line.454"></a>
+<span class="sourceLineNo">455</span>    // should be available....<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    assertEquals(handler.get(tableAname, rowAname, columnBname, null).get(0).value, valueCname);<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>    assertEquals(0, handler.getRow(tableAname, rowBname, null).size());<a name="line.458"></a>
 <span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>    size = handler.getVerTs(tableAname, rowAname, columnBname, time2, MAXVERSIONS, null).size();<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    assertEquals(1, size);<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>    // should be available....<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    assertEquals(handler.get(tableAname, rowAname, columnBname, null).get(0).value, valueCname);<a name="line.464"></a>
-<span class="sourceLineNo">465</span><a name="line.465"></a>
-<span class="sourceLineNo">466</span>    assertEquals(0, handler.getRow(tableAname, rowBname, null).size());<a name="line.466"></a>
-<span class="sourceLineNo">467</span><a name="line.467"></a>
-<span class="sourceLineNo">468</span>    // Teardown<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    handler.disableTable(tableAname);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    handler.deleteTable(tableAname);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>  }<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>  /**<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * Tests the four different scanner-opening methods (with and without<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   * a stoprow, with and without a timestamp).<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   *<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @throws Exception<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  public void doTestTableScanners() throws Exception {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    // Setup<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.482"></a>
-<span class="sourceLineNo">483</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.484"></a>
-<span class="sourceLineNo">485</span><a name="line.485"></a>
-<span class="sourceLineNo">486</span>    // Apply timestamped Mutations to rowA<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    long time1 = System.currentTimeMillis();<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    handler.mutateRowTs(tableAname, rowAname, getMutations(), time1, null);<a name="line.488"></a>
+<span class="sourceLineNo">460</span>    // Teardown<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    handler.disableTable(tableAname);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    handler.deleteTable(tableAname);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>  }<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>  /**<a name="line.465"></a>
+<span class="sourceLineNo">466</span>   * Tests the four different scanner-opening methods (with and without<a name="line.466"></a>
+<span class="sourceLineNo">467</span>   * a stoprow, with and without a timestamp).<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   */<a name="line.468"></a>
+<span class="sourceLineNo">469</span>  public void doTestTableScanners() throws Exception {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    // Setup<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.472"></a>
+<span class="sourceLineNo">473</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.474"></a>
+<span class="sourceLineNo">475</span><a name="line.475"></a>
+<span class="sourceLineNo">476</span>    // Apply timestamped Mutations to rowA<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    long time1 = System.currentTimeMillis();<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    handler.mutateRowTs(tableAname, rowAname, getMutations(), time1, null);<a name="line.478"></a>
+<span class="sourceLineNo">479</span><a name="line.479"></a>
+<span class="sourceLineNo">480</span>    // Sleep to assure that 'time1' and 'time2' will be different even with a<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    // coarse grained system timer.<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    Thread.sleep(1000);<a name="line.482"></a>
+<span class="sourceLineNo">483</span><a name="line.483"></a>
+<span class="sourceLineNo">484</span>    // Apply timestamped BatchMutations for rowA and rowB<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    long time2 = System.currentTimeMillis();<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    handler.mutateRowsTs(tableAname, getBatchMutations(), time2, null);<a name="line.486"></a>
+<span class="sourceLineNo">487</span><a name="line.487"></a>
+<span class="sourceLineNo">488</span>    time1 += 1;<a name="line.488"></a>
 <span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>    // Sleep to assure that 'time1' and 'time2' will be different even with a<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    // coarse grained system timer.<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    Thread.sleep(1000);<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    // Apply timestamped BatchMutations for rowA and rowB<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    long time2 = System.currentTimeMillis();<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    handler.mutateRowsTs(tableAname, getBatchMutations(), time2, null);<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    time1 += 1;<a name="line.498"></a>
+<span class="sourceLineNo">490</span>    // Test a scanner on all rows and all columns, no timestamp<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    int scanner1 = handler.scannerOpen(tableAname, rowAname, getColumnList(true, true), null);<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    TRowResult rowResult1a = handler.scannerGet(scanner1).get(0);<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    assertEquals(rowResult1a.row, rowAname);<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    // This used to be '1'.  I don't know why when we are asking for two columns<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    // and when the mutations above would seem to add two columns to the row.<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    // -- St.Ack 05/12/2009<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    assertEquals(rowResult1a.columns.size(), 1);<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    assertEquals(rowResult1a.columns.get(columnBname).value, valueCname);<a name="line.498"></a>
 <span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>    // Test a scanner on all rows and all columns, no timestamp<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    int scanner1 = handler.scannerOpen(tableAname, rowAname, getColumnList(true, true), null);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    TRowResult rowResult1a = handler.scannerGet(scanner1).get(0);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    assertEquals(rowResult1a.row, rowAname);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    // This used to be '1'.  I don't know why when we are asking for two columns<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    // and when the mutations above would seem to add two columns to the row.<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    // -- St.Ack 05/12/2009<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    assertEquals(rowResult1a.columns.size(), 1);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    assertEquals(rowResult1a.columns.get(columnBname).value, valueCname);<a name="line.508"></a>
-<span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span>    TRowResult rowResult1b = handler.scannerGet(scanner1).get(0);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    assertEquals(rowResult1b.row, rowBname);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    assertEquals(rowResult1b.columns.size(), 2);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    assertEquals(rowResult1b.columns.get(columnAname).value, valueCname);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    assertEquals(rowResult1b.columns.get(columnBname).value, valueDname);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    closeScanner(scanner1, handler);<a name="line.515"></a>
+<span class="sourceLineNo">500</span>    TRowResult rowResult1b = handler.scannerGet(scanner1).get(0);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    assertEquals(rowResult1b.row, rowBname);<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    assertEquals(rowResult1b.columns.size(), 2);<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    assertEquals(rowResult1b.columns.get(columnAname).value, valueCname);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    assertEquals(rowResult1b.columns.get(columnBname).value, valueDname);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    closeScanner(scanner1, handler);<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>    // Test a scanner on all rows and all columns, with timestamp<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    int scanner2 = handler.scannerOpenTs(tableAname, rowAname, getColumnList(true, true), time1,<a name="line.508"></a>
+<span class="sourceLineNo">509</span>            null);<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    TRowResult rowResult2a = handler.scannerGet(scanner2).get(0);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    assertEquals(rowResult2a.columns.size(), 1);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    // column A deleted, does not exist.<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    //assertTrue(Bytes.equals(rowResult2a.columns.get(columnAname).value, valueAname));<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    assertEquals(rowResult2a.columns.get(columnBname).value, valueBname);<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    closeScanner(scanner2, handler);<a name="line.515"></a>
 <span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>    // Test a scanner on all rows and all columns, with timestamp<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    int scanner2 = handler.scannerOpenTs(tableAname, rowAname, getColumnList(true, true), time1, null);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    TRowResult rowResult2a = handler.scannerGet(scanner2).get(0);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    assertEquals(rowResult2a.columns.size(), 1);<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    // column A deleted, does not exist.<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    //assertTrue(Bytes.equals(rowResult2a.columns.get(columnAname).value, valueAname));<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    assertEquals(rowResult2a.columns.get(columnBname).value, valueBname);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    closeScanner(scanner2, handler);<a name="line.524"></a>
-<span class="sourceLineNo">525</span><a name="line.525"></a>
-<span class="sourceLineNo">526</span>    // Test a scanner on the first row and first column only, no timestamp<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    int scanner3 = handler.scannerOpenWithStop(tableAname, rowAname, rowBname,<a name="line.527"></a>
-<span class="sourceLineNo">528</span>        getColumnList(true, false), null);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    closeScanner(scanner3, handler);<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>    // Test a scanner on the first row and second column only, with timestamp<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    int scanner4 = handler.scannerOpenWithStopTs(tableAname, rowAname, rowBname,<a name="line.532"></a>
-<span class="sourceLineNo">533</span>        getColumnList(false, true), time1, null);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    TRowResult rowResult4a = handler.scannerGet(scanner4).get(0);<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    assertEquals(rowResult4a.columns.size(), 1);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    assertEquals(rowResult4a.columns.get(columnBname).value, valueBname);<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>    // Test scanner using a TScan object once with sortColumns False and once with sortColumns true<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    TScan scanNoSortColumns = new TScan();<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    scanNoSortColumns.setStartRow(rowAname);<a name="line.540"></a>
-<span class="sourceLineNo">541</span>    scanNoSortColumns.setStopRow(rowBname);<a name="line.541"></a>
-<span class="sourceLineNo">542</span><a name="line.542"></a>
-<span class="sourceLineNo">543</span>    int scanner5 = handler.scannerOpenWithScan(tableAname , scanNoSortColumns, null);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    TRowResult rowResult5 = handler.scannerGet(scanner5).get(0);<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    assertEquals(rowResult5.columns.size(), 1);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    assertEquals(rowResult5.columns.get(columnBname).value, valueCname);<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>    TScan scanSortColumns = new TScan();<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    scanSortColumns.setStartRow(rowAname);<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    scanSortColumns.setStopRow(rowBname);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    scanSortColumns = scanSortColumns.setSortColumns(true);<a name="line.551"></a>
-<span class="sourceLineNo">552</span><a name="line.552"></a>
-<span class="sourceLineNo">553</span>    int scanner6 = handler.scannerOpenWithScan(tableAname ,scanSortColumns, null);<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    TRowResult rowResult6 = handler.scannerGet(scanner6).get(0);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    assertEquals(rowResult6.sortedColumns.size(), 1);<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    assertEquals(rowResult6.sortedColumns.get(0).getCell().value, valueCname);<a name="line.556"></a>
-<span class="sourceLineNo">557</span><a name="line.557"></a>
-<span class="sourceLineNo">558</span>    List&lt;Mutation&gt; rowBmutations = new ArrayList&lt;&gt;(20);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    for (int i = 0; i &lt; 20; i++) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      rowBmutations.add(new Mutation(false, asByteBuffer("columnA:" + i), valueCname, true));<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    }<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    ByteBuffer rowC = asByteBuffer("rowC");<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    handler.mutateRow(tableAname, rowC, rowBmutations, null);<a name="line.563"></a>
-<span class="sourceLineNo">564</span><a name="line.564"></a>
-<span class="sourceLineNo">565</span>    TScan scanSortMultiColumns = new TScan();<a name="line.565"></a>
-<span class="sourceLineNo">566</span>    scanSortMultiColumns.setStartRow(rowC);<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    scanSortMultiColumns = scanSortMultiColumns.setSortColumns(true);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    int scanner7 = handler.scannerOpenWithScan(tableAname, scanSortMultiColumns, null);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    TRowResult rowResult7 = handler.scannerGet(scanner7).get(0);<a name="line.569"></a>
-<span class="sourceLineNo">570</span><a name="line.570"></a>
-<span class="sourceLineNo">571</span>    ByteBuffer smallerColumn = asByteBuffer("columnA:");<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    for (int i = 0; i &lt; 20; i++) {<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      ByteBuffer currentColumn = rowResult7.sortedColumns.get(i).columnName;<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      assertTrue(Bytes.compareTo(smallerColumn.array(), currentColumn.array()) &lt; 0);<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      smallerColumn = currentColumn;<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    }<a name="line.576"></a>
-<span class="sourceLineNo">577</span><a name="line.577"></a>
-<span class="sourceLineNo">578</span>    TScan reversedScan = new TScan();<a name="line.578"></a>
-<span class="sourceLineNo">579</span>    reversedScan.setReversed(true);<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    reversedScan.setStartRow(rowBname);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    reversedScan.setStopRow(rowAname);<a name="line.581"></a>
-<span class="sourceLineNo">582</span><a name="line.582"></a>
-<span class="sourceLineNo">583</span>    int scanner8 = handler.scannerOpenWithScan(tableAname , reversedScan, null);<a name="line.583"></a>
-<span class="sourceLineNo">584</span>    List&lt;TRowResult&gt; results = handler.scannerGet(scanner8);<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    handler.scannerClose(scanner8);<a name="line.585"></a>
-<span class="sourceLineNo">586</span>    assertEquals(results.size(), 1);<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    assertEquals(ByteBuffer.wrap(results.get(0).getRow()), rowBname);<a name="line.587"></a>
-<span class="sourceLineNo">588</span><a name="line.588"></a>
-<span class="sourceLineNo">589</span>    // Teardown<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    handler.disableTable(tableAname);<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    handler.deleteTable(tableAname);<a name="line.591"></a>
-<span class="sourceLineNo">592</span>  }<a name="line.592"></a>
-<span class="sourceLineNo">593</span><a name="line.593"></a>
-<span class="sourceLineNo">594</span>  /**<a name="line.594"></a>
-<span class="sourceLineNo">595</span> 

<TRUNCATED>

[03/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html
index c50b8e5..c1b9f8e 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html
@@ -246,7 +246,7 @@
 <span class="sourceLineNo">238</span>    puts.add(new TPut(wrap(rowName2), columnValues));<a name="line.238"></a>
 <span class="sourceLineNo">239</span><a name="line.239"></a>
 <span class="sourceLineNo">240</span>    handler.putMultiple(table, puts);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    List&lt;Boolean&gt; existsResult2 = handler.existsAll(table,gets );<a name="line.241"></a>
+<span class="sourceLineNo">241</span>    List&lt;Boolean&gt; existsResult2 = handler.existsAll(table, gets);<a name="line.241"></a>
 <span class="sourceLineNo">242</span><a name="line.242"></a>
 <span class="sourceLineNo">243</span>    assertTrue(existsResult2.get(0));<a name="line.243"></a>
 <span class="sourceLineNo">244</span>    assertTrue(existsResult2.get(1));<a name="line.244"></a>
@@ -598,1009 +598,1004 @@
 <span class="sourceLineNo">590</span>  /**<a name="line.590"></a>
 <span class="sourceLineNo">591</span>   * check that checkAndPut fails if the cell does not exist, then put in the cell, then check<a name="line.591"></a>
 <span class="sourceLineNo">592</span>   * that the checkAndPut succeeds.<a name="line.592"></a>
-<span class="sourceLineNo">593</span>   *<a name="line.593"></a>
-<span class="sourceLineNo">594</span>   * @throws Exception<a name="line.594"></a>
-<span class="sourceLineNo">595</span>   */<a name="line.595"></a>
-<span class="sourceLineNo">596</span>  @Test<a name="line.596"></a>
-<span class="sourceLineNo">597</span>  public void testCheckAndPut() throws Exception {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    byte[] rowName = "testCheckAndPut".getBytes();<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    ByteBuffer table = wrap(tableAname);<a name="line.600"></a>
-<span class="sourceLineNo">601</span><a name="line.601"></a>
-<span class="sourceLineNo">602</span>    List&lt;TColumnValue&gt; columnValuesA = new ArrayList&lt;&gt;(1);<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    TColumnValue columnValueA = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      wrap(valueAname));<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    columnValuesA.add(columnValueA);<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    TPut putA = new TPut(wrap(rowName), columnValuesA);<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    putA.setColumnValues(columnValuesA);<a name="line.607"></a>
-<span class="sourceLineNo">608</span><a name="line.608"></a>
-<span class="sourceLineNo">609</span>    List&lt;TColumnValue&gt; columnValuesB = new ArrayList&lt;&gt;(1);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    TColumnValue columnValueB = new TColumnValue(wrap(familyBname), wrap(qualifierBname),<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      wrap(valueBname));<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    columnValuesB.add(columnValueB);<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    TPut putB = new TPut(wrap(rowName), columnValuesB);<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    putB.setColumnValues(columnValuesB);<a name="line.614"></a>
-<span class="sourceLineNo">615</span><a name="line.615"></a>
-<span class="sourceLineNo">616</span>    assertFalse(handler.checkAndPut(table, wrap(rowName), wrap(familyAname),<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      wrap(qualifierAname), wrap(valueAname), putB));<a name="line.617"></a>
-<span class="sourceLineNo">618</span><a name="line.618"></a>
-<span class="sourceLineNo">619</span>    TGet get = new TGet(wrap(rowName));<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    TResult result = handler.get(table, get);<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    assertEquals(0, result.getColumnValuesSize());<a name="line.621"></a>
+<span class="sourceLineNo">593</span>   */<a name="line.593"></a>
+<span class="sourceLineNo">594</span>  @Test<a name="line.594"></a>
+<span class="sourceLineNo">595</span>  public void testCheckAndPut() throws Exception {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.596"></a>
+<span class="sourceLineNo">597</span>    byte[] rowName = "testCheckAndPut".getBytes();<a name="line.597"></a>
+<span class="sourceLineNo">598</span>    ByteBuffer table = wrap(tableAname);<a name="line.598"></a>
+<span class="sourceLineNo">599</span><a name="line.599"></a>
+<span class="sourceLineNo">600</span>    List&lt;TColumnValue&gt; columnValuesA = new ArrayList&lt;&gt;(1);<a name="line.600"></a>
+<span class="sourceLineNo">601</span>    TColumnValue columnValueA = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      wrap(valueAname));<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    columnValuesA.add(columnValueA);<a name="line.603"></a>
+<span class="sourceLineNo">604</span>    TPut putA = new TPut(wrap(rowName), columnValuesA);<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    putA.setColumnValues(columnValuesA);<a name="line.605"></a>
+<span class="sourceLineNo">606</span><a name="line.606"></a>
+<span class="sourceLineNo">607</span>    List&lt;TColumnValue&gt; columnValuesB = new ArrayList&lt;&gt;(1);<a name="line.607"></a>
+<span class="sourceLineNo">608</span>    TColumnValue columnValueB = new TColumnValue(wrap(familyBname), wrap(qualifierBname),<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      wrap(valueBname));<a name="line.609"></a>
+<span class="sourceLineNo">610</span>    columnValuesB.add(columnValueB);<a name="line.610"></a>
+<span class="sourceLineNo">611</span>    TPut putB = new TPut(wrap(rowName), columnValuesB);<a name="line.611"></a>
+<span class="sourceLineNo">612</span>    putB.setColumnValues(columnValuesB);<a name="line.612"></a>
+<span class="sourceLineNo">613</span><a name="line.613"></a>
+<span class="sourceLineNo">614</span>    assertFalse(handler.checkAndPut(table, wrap(rowName), wrap(familyAname),<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      wrap(qualifierAname), wrap(valueAname), putB));<a name="line.615"></a>
+<span class="sourceLineNo">616</span><a name="line.616"></a>
+<span class="sourceLineNo">617</span>    TGet get = new TGet(wrap(rowName));<a name="line.617"></a>
+<span class="sourceLineNo">618</span>    TResult result = handler.get(table, get);<a name="line.618"></a>
+<span class="sourceLineNo">619</span>    assertEquals(0, result.getColumnValuesSize());<a name="line.619"></a>
+<span class="sourceLineNo">620</span><a name="line.620"></a>
+<span class="sourceLineNo">621</span>    handler.put(table, putA);<a name="line.621"></a>
 <span class="sourceLineNo">622</span><a name="line.622"></a>
-<span class="sourceLineNo">623</span>    handler.put(table, putA);<a name="line.623"></a>
-<span class="sourceLineNo">624</span><a name="line.624"></a>
-<span class="sourceLineNo">625</span>    assertTrue(handler.checkAndPut(table, wrap(rowName), wrap(familyAname),<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      wrap(qualifierAname), wrap(valueAname), putB));<a name="line.626"></a>
-<span class="sourceLineNo">627</span><a name="line.627"></a>
-<span class="sourceLineNo">628</span>    result = handler.get(table, get);<a name="line.628"></a>
-<span class="sourceLineNo">629</span>    assertArrayEquals(rowName, result.getRow());<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    List&lt;TColumnValue&gt; returnedColumnValues = result.getColumnValues();<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    List&lt;TColumnValue&gt; expectedColumnValues = new ArrayList&lt;&gt;(2);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    expectedColumnValues.add(columnValueA);<a name="line.632"></a>
-<span class="sourceLineNo">633</span>    expectedColumnValues.add(columnValueB);<a name="line.633"></a>
-<span class="sourceLineNo">634</span>    assertTColumnValuesEqual(expectedColumnValues, returnedColumnValues);<a name="line.634"></a>
-<span class="sourceLineNo">635</span>  }<a name="line.635"></a>
-<span class="sourceLineNo">636</span><a name="line.636"></a>
-<span class="sourceLineNo">637</span>  /**<a name="line.637"></a>
-<span class="sourceLineNo">638</span>   * check that checkAndDelete fails if the cell does not exist, then put in the cell, then<a name="line.638"></a>
-<span class="sourceLineNo">639</span>   * check that the checkAndDelete succeeds.<a name="line.639"></a>
-<span class="sourceLineNo">640</span>   *<a name="line.640"></a>
-<span class="sourceLineNo">641</span>   * @throws Exception<a name="line.641"></a>
-<span class="sourceLineNo">642</span>   */<a name="line.642"></a>
-<span class="sourceLineNo">643</span>  @Test<a name="line.643"></a>
-<span class="sourceLineNo">644</span>  public void testCheckAndDelete() throws Exception {<a name="line.644"></a>
-<span class="sourceLineNo">645</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    byte[] rowName = "testCheckAndDelete".getBytes();<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    ByteBuffer table = wrap(tableAname);<a name="line.647"></a>
-<span class="sourceLineNo">648</span><a name="line.648"></a>
-<span class="sourceLineNo">649</span>    List&lt;TColumnValue&gt; columnValuesA = new ArrayList&lt;&gt;(1);<a name="line.649"></a>
-<span class="sourceLineNo">650</span>    TColumnValue columnValueA = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      wrap(valueAname));<a name="line.651"></a>
-<span class="sourceLineNo">652</span>    columnValuesA.add(columnValueA);<a name="line.652"></a>
-<span class="sourceLineNo">653</span>    TPut putA = new TPut(wrap(rowName), columnValuesA);<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    putA.setColumnValues(columnValuesA);<a name="line.654"></a>
-<span class="sourceLineNo">655</span><a name="line.655"></a>
-<span class="sourceLineNo">656</span>    List&lt;TColumnValue&gt; columnValuesB = new ArrayList&lt;&gt;(1);<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    TColumnValue columnValueB = new TColumnValue(wrap(familyBname), wrap(qualifierBname),<a name="line.657"></a>
-<span class="sourceLineNo">658</span>      wrap(valueBname));<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    columnValuesB.add(columnValueB);<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    TPut putB = new TPut(wrap(rowName), columnValuesB);<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    putB.setColumnValues(columnValuesB);<a name="line.661"></a>
-<span class="sourceLineNo">662</span><a name="line.662"></a>
-<span class="sourceLineNo">663</span>    // put putB so that we know whether the row has been deleted or not<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    handler.put(table, putB);<a name="line.664"></a>
-<span class="sourceLineNo">665</span><a name="line.665"></a>
-<span class="sourceLineNo">666</span>    TDelete delete = new TDelete(wrap(rowName));<a name="line.666"></a>
-<span class="sourceLineNo">667</span><a name="line.667"></a>
-<span class="sourceLineNo">668</span>    assertFalse(handler.checkAndDelete(table, wrap(rowName), wrap(familyAname),<a name="line.668"></a>
-<span class="sourceLineNo">669</span>        wrap(qualifierAname), wrap(valueAname), delete));<a name="line.669"></a>
-<span class="sourceLineNo">670</span><a name="line.670"></a>
-<span class="sourceLineNo">671</span>    TGet get = new TGet(wrap(rowName));<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    TResult result = handler.get(table, get);<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    assertArrayEquals(rowName, result.getRow());<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    assertTColumnValuesEqual(columnValuesB, result.getColumnValues());<a name="line.674"></a>
-<span class="sourceLineNo">675</span><a name="line.675"></a>
-<span class="sourceLineNo">676</span>    handler.put(table, putA);<a name="line.676"></a>
-<span class="sourceLineNo">677</span><a name="line.677"></a>
-<span class="sourceLineNo">678</span>    assertTrue(handler.checkAndDelete(table, wrap(rowName), wrap(familyAname),<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      wrap(qualifierAname), wrap(valueAname), delete));<a name="line.679"></a>
-<span class="sourceLineNo">680</span><a name="line.680"></a>
-<span class="sourceLineNo">681</span>    result = handler.get(table, get);<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    assertFalse(result.isSetRow());<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    assertEquals(0, result.getColumnValuesSize());<a name="line.683"></a>
-<span class="sourceLineNo">684</span>  }<a name="line.684"></a>
-<span class="sourceLineNo">685</span><a name="line.685"></a>
-<span class="sourceLineNo">686</span>  @Test<a name="line.686"></a>
-<span class="sourceLineNo">687</span>  public void testScan() throws Exception {<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    ByteBuffer table = wrap(tableAname);<a name="line.689"></a>
-<span class="sourceLineNo">690</span><a name="line.690"></a>
-<span class="sourceLineNo">691</span>    // insert data<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.692"></a>
-<span class="sourceLineNo">693</span>      wrap(valueAname));<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    columnValues.add(columnValue);<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      TPut put = new TPut(wrap(("testScan" + i).getBytes()), columnValues);<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      handler.put(table, put);<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    }<a name="line.699"></a>
-<span class="sourceLineNo">700</span><a name="line.700"></a>
-<span class="sourceLineNo">701</span>    // create scan instance<a name="line.701"></a>
-<span class="sourceLineNo">702</span>    TScan scan = new TScan();<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    TColumn column = new TColumn();<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    column.setFamily(familyAname);<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    column.setQualifier(qualifierAname);<a name="line.706"></a>
-<span class="sourceLineNo">707</span>    columns.add(column);<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    scan.setColumns(columns);<a name="line.708"></a>
-<span class="sourceLineNo">709</span>    scan.setStartRow("testScan".getBytes());<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    scan.setStopRow("testScan\uffff".getBytes());<a name="line.710"></a>
-<span class="sourceLineNo">711</span><a name="line.711"></a>
-<span class="sourceLineNo">712</span>    // get scanner and rows<a name="line.712"></a>
-<span class="sourceLineNo">713</span>    int scanId = handler.openScanner(table, scan);<a name="line.713"></a>
-<span class="sourceLineNo">714</span>    List&lt;TResult&gt; results = handler.getScannerRows(scanId, 10);<a name="line.714"></a>
-<span class="sourceLineNo">715</span>    assertEquals(10, results.size());<a name="line.715"></a>
-<span class="sourceLineNo">716</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.716"></a>
-<span class="sourceLineNo">717</span>      // check if the rows are returned and in order<a name="line.717"></a>
-<span class="sourceLineNo">718</span>      assertArrayEquals(("testScan" + i).getBytes(), results.get(i).getRow());<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    }<a name="line.719"></a>
+<span class="sourceLineNo">623</span>    assertTrue(handler.checkAndPut(table, wrap(rowName), wrap(familyAname),<a name="line.623"></a>
+<span class="sourceLineNo">624</span>      wrap(qualifierAname), wrap(valueAname), putB));<a name="line.624"></a>
+<span class="sourceLineNo">625</span><a name="line.625"></a>
+<span class="sourceLineNo">626</span>    result = handler.get(table, get);<a name="line.626"></a>
+<span class="sourceLineNo">627</span>    assertArrayEquals(rowName, result.getRow());<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    List&lt;TColumnValue&gt; returnedColumnValues = result.getColumnValues();<a name="line.628"></a>
+<span class="sourceLineNo">629</span>    List&lt;TColumnValue&gt; expectedColumnValues = new ArrayList&lt;&gt;(2);<a name="line.629"></a>
+<span class="sourceLineNo">630</span>    expectedColumnValues.add(columnValueA);<a name="line.630"></a>
+<span class="sourceLineNo">631</span>    expectedColumnValues.add(columnValueB);<a name="line.631"></a>
+<span class="sourceLineNo">632</span>    assertTColumnValuesEqual(expectedColumnValues, returnedColumnValues);<a name="line.632"></a>
+<span class="sourceLineNo">633</span>  }<a name="line.633"></a>
+<span class="sourceLineNo">634</span><a name="line.634"></a>
+<span class="sourceLineNo">635</span>  /**<a name="line.635"></a>
+<span class="sourceLineNo">636</span>   * check that checkAndDelete fails if the cell does not exist, then put in the cell, then<a name="line.636"></a>
+<span class="sourceLineNo">637</span>   * check that the checkAndDelete succeeds.<a name="line.637"></a>
+<span class="sourceLineNo">638</span>   */<a name="line.638"></a>
+<span class="sourceLineNo">639</span>  @Test<a name="line.639"></a>
+<span class="sourceLineNo">640</span>  public void testCheckAndDelete() throws Exception {<a name="line.640"></a>
+<span class="sourceLineNo">641</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    byte[] rowName = "testCheckAndDelete".getBytes();<a name="line.642"></a>
+<span class="sourceLineNo">643</span>    ByteBuffer table = wrap(tableAname);<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>    List&lt;TColumnValue&gt; columnValuesA = new ArrayList&lt;&gt;(1);<a name="line.645"></a>
+<span class="sourceLineNo">646</span>    TColumnValue columnValueA = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.646"></a>
+<span class="sourceLineNo">647</span>      wrap(valueAname));<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    columnValuesA.add(columnValueA);<a name="line.648"></a>
+<span class="sourceLineNo">649</span>    TPut putA = new TPut(wrap(rowName), columnValuesA);<a name="line.649"></a>
+<span class="sourceLineNo">650</span>    putA.setColumnValues(columnValuesA);<a name="line.650"></a>
+<span class="sourceLineNo">651</span><a name="line.651"></a>
+<span class="sourceLineNo">652</span>    List&lt;TColumnValue&gt; columnValuesB = new ArrayList&lt;&gt;(1);<a name="line.652"></a>
+<span class="sourceLineNo">653</span>    TColumnValue columnValueB = new TColumnValue(wrap(familyBname), wrap(qualifierBname),<a name="line.653"></a>
+<span class="sourceLineNo">654</span>      wrap(valueBname));<a name="line.654"></a>
+<span class="sourceLineNo">655</span>    columnValuesB.add(columnValueB);<a name="line.655"></a>
+<span class="sourceLineNo">656</span>    TPut putB = new TPut(wrap(rowName), columnValuesB);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    putB.setColumnValues(columnValuesB);<a name="line.657"></a>
+<span class="sourceLineNo">658</span><a name="line.658"></a>
+<span class="sourceLineNo">659</span>    // put putB so that we know whether the row has been deleted or not<a name="line.659"></a>
+<span class="sourceLineNo">660</span>    handler.put(table, putB);<a name="line.660"></a>
+<span class="sourceLineNo">661</span><a name="line.661"></a>
+<span class="sourceLineNo">662</span>    TDelete delete = new TDelete(wrap(rowName));<a name="line.662"></a>
+<span class="sourceLineNo">663</span><a name="line.663"></a>
+<span class="sourceLineNo">664</span>    assertFalse(handler.checkAndDelete(table, wrap(rowName), wrap(familyAname),<a name="line.664"></a>
+<span class="sourceLineNo">665</span>        wrap(qualifierAname), wrap(valueAname), delete));<a name="line.665"></a>
+<span class="sourceLineNo">666</span><a name="line.666"></a>
+<span class="sourceLineNo">667</span>    TGet get = new TGet(wrap(rowName));<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    TResult result = handler.get(table, get);<a name="line.668"></a>
+<span class="sourceLineNo">669</span>    assertArrayEquals(rowName, result.getRow());<a name="line.669"></a>
+<span class="sourceLineNo">670</span>    assertTColumnValuesEqual(columnValuesB, result.getColumnValues());<a name="line.670"></a>
+<span class="sourceLineNo">671</span><a name="line.671"></a>
+<span class="sourceLineNo">672</span>    handler.put(table, putA);<a name="line.672"></a>
+<span class="sourceLineNo">673</span><a name="line.673"></a>
+<span class="sourceLineNo">674</span>    assertTrue(handler.checkAndDelete(table, wrap(rowName), wrap(familyAname),<a name="line.674"></a>
+<span class="sourceLineNo">675</span>      wrap(qualifierAname), wrap(valueAname), delete));<a name="line.675"></a>
+<span class="sourceLineNo">676</span><a name="line.676"></a>
+<span class="sourceLineNo">677</span>    result = handler.get(table, get);<a name="line.677"></a>
+<span class="sourceLineNo">678</span>    assertFalse(result.isSetRow());<a name="line.678"></a>
+<span class="sourceLineNo">679</span>    assertEquals(0, result.getColumnValuesSize());<a name="line.679"></a>
+<span class="sourceLineNo">680</span>  }<a name="line.680"></a>
+<span class="sourceLineNo">681</span><a name="line.681"></a>
+<span class="sourceLineNo">682</span>  @Test<a name="line.682"></a>
+<span class="sourceLineNo">683</span>  public void testScan() throws Exception {<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.684"></a>
+<span class="sourceLineNo">685</span>    ByteBuffer table = wrap(tableAname);<a name="line.685"></a>
+<span class="sourceLineNo">686</span><a name="line.686"></a>
+<span class="sourceLineNo">687</span>    // insert data<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.688"></a>
+<span class="sourceLineNo">689</span>      wrap(valueAname));<a name="line.689"></a>
+<span class="sourceLineNo">690</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.690"></a>
+<span class="sourceLineNo">691</span>    columnValues.add(columnValue);<a name="line.691"></a>
+<span class="sourceLineNo">692</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.692"></a>
+<span class="sourceLineNo">693</span>      TPut put = new TPut(wrap(("testScan" + i).getBytes()), columnValues);<a name="line.693"></a>
+<span class="sourceLineNo">694</span>      handler.put(table, put);<a name="line.694"></a>
+<span class="sourceLineNo">695</span>    }<a name="line.695"></a>
+<span class="sourceLineNo">696</span><a name="line.696"></a>
+<span class="sourceLineNo">697</span>    // create scan instance<a name="line.697"></a>
+<span class="sourceLineNo">698</span>    TScan scan = new TScan();<a name="line.698"></a>
+<span class="sourceLineNo">699</span>    List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.699"></a>
+<span class="sourceLineNo">700</span>    TColumn column = new TColumn();<a name="line.700"></a>
+<span class="sourceLineNo">701</span>    column.setFamily(familyAname);<a name="line.701"></a>
+<span class="sourceLineNo">702</span>    column.setQualifier(qualifierAname);<a name="line.702"></a>
+<span class="sourceLineNo">703</span>    columns.add(column);<a name="line.703"></a>
+<span class="sourceLineNo">704</span>    scan.setColumns(columns);<a name="line.704"></a>
+<span class="sourceLineNo">705</span>    scan.setStartRow("testScan".getBytes());<a name="line.705"></a>
+<span class="sourceLineNo">706</span>    scan.setStopRow("testScan\uffff".getBytes());<a name="line.706"></a>
+<span class="sourceLineNo">707</span><a name="line.707"></a>
+<span class="sourceLineNo">708</span>    // get scanner and rows<a name="line.708"></a>
+<span class="sourceLineNo">709</span>    int scanId = handler.openScanner(table, scan);<a name="line.709"></a>
+<span class="sourceLineNo">710</span>    List&lt;TResult&gt; results = handler.getScannerRows(scanId, 10);<a name="line.710"></a>
+<span class="sourceLineNo">711</span>    assertEquals(10, results.size());<a name="line.711"></a>
+<span class="sourceLineNo">712</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.712"></a>
+<span class="sourceLineNo">713</span>      // check if the rows are returned and in order<a name="line.713"></a>
+<span class="sourceLineNo">714</span>      assertArrayEquals(("testScan" + i).getBytes(), results.get(i).getRow());<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    }<a name="line.715"></a>
+<span class="sourceLineNo">716</span><a name="line.716"></a>
+<span class="sourceLineNo">717</span>    // check that we are at the end of the scan<a name="line.717"></a>
+<span class="sourceLineNo">718</span>    results = handler.getScannerRows(scanId, 10);<a name="line.718"></a>
+<span class="sourceLineNo">719</span>    assertEquals(0, results.size());<a name="line.719"></a>
 <span class="sourceLineNo">720</span><a name="line.720"></a>
-<span class="sourceLineNo">721</span>    // check that we are at the end of the scan<a name="line.721"></a>
-<span class="sourceLineNo">722</span>    results = handler.getScannerRows(scanId, 10);<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    assertEquals(0, results.size());<a name="line.723"></a>
-<span class="sourceLineNo">724</span><a name="line.724"></a>
-<span class="sourceLineNo">725</span>    // close scanner and check that it was indeed closed<a name="line.725"></a>
-<span class="sourceLineNo">726</span>    handler.closeScanner(scanId);<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    try {<a name="line.727"></a>
-<span class="sourceLineNo">728</span>      handler.getScannerRows(scanId, 10);<a name="line.728"></a>
-<span class="sourceLineNo">729</span>      fail("Scanner id should be invalid");<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    } catch (TIllegalArgument e) {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    }<a name="line.731"></a>
-<span class="sourceLineNo">732</span>  }<a name="line.732"></a>
-<span class="sourceLineNo">733</span><a name="line.733"></a>
-<span class="sourceLineNo">734</span>  /**<a name="line.734"></a>
-<span class="sourceLineNo">735</span>   * Tests keeping a HBase scanner alive for long periods of time. Each call to getScannerRow()<a name="line.735"></a>
-<span class="sourceLineNo">736</span>   * should reset the ConnectionCache timeout for the scanner's connection<a name="line.736"></a>
-<span class="sourceLineNo">737</span>   * @throws Exception<a name="line.737"></a>
-<span class="sourceLineNo">738</span>   */<a name="line.738"></a>
-<span class="sourceLineNo">739</span>  @Test<a name="line.739"></a>
-<span class="sourceLineNo">740</span>  public void testLongLivedScan() throws Exception {<a name="line.740"></a>
-<span class="sourceLineNo">741</span>    int numTrials = 6;<a name="line.741"></a>
-<span class="sourceLineNo">742</span>    int trialPause = 1000;<a name="line.742"></a>
-<span class="sourceLineNo">743</span>    int cleanUpInterval = 100;<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    Configuration conf = new Configuration(UTIL.getConfiguration());<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    // Set the ConnectionCache timeout to trigger halfway through the trials<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    conf.setInt(ThriftHBaseServiceHandler.MAX_IDLETIME, (numTrials / 2) * trialPause);<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    conf.setInt(ThriftHBaseServiceHandler.CLEANUP_INTERVAL, cleanUpInterval);<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    ThriftHBaseServiceHandler handler = new ThriftHBaseServiceHandler(conf,<a name="line.748"></a>
-<span class="sourceLineNo">749</span>        UserProvider.instantiate(conf));<a name="line.749"></a>
-<span class="sourceLineNo">750</span><a name="line.750"></a>
-<span class="sourceLineNo">751</span>    ByteBuffer table = wrap(tableAname);<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    // insert data<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.753"></a>
-<span class="sourceLineNo">754</span>        wrap(valueAname));<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    columnValues.add(columnValue);<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    for (int i = 0; i &lt; numTrials; i++) {<a name="line.757"></a>
-<span class="sourceLineNo">758</span>      TPut put = new TPut(wrap(("testScan" + i).getBytes()), columnValues);<a name="line.758"></a>
-<span class="sourceLineNo">759</span>      handler.put(table, put);<a name="line.759"></a>
-<span class="sourceLineNo">760</span>    }<a name="line.760"></a>
-<span class="sourceLineNo">761</span><a name="line.761"></a>
-<span class="sourceLineNo">762</span>    // create scan instance<a name="line.762"></a>
-<span class="sourceLineNo">763</span>    TScan scan = new TScan();<a name="line.763"></a>
-<span class="sourceLineNo">764</span>    List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.764"></a>
-<span class="sourceLineNo">765</span>    TColumn column = new TColumn();<a name="line.765"></a>
-<span class="sourceLineNo">766</span>    column.setFamily(familyAname);<a name="line.766"></a>
-<span class="sourceLineNo">767</span>    column.setQualifier(qualifierAname);<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    columns.add(column);<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    scan.setColumns(columns);<a name="line.769"></a>
-<span class="sourceLineNo">770</span>    scan.setStartRow("testScan".getBytes());<a name="line.770"></a>
-<span class="sourceLineNo">771</span>    scan.setStopRow("testScan\uffff".getBytes());<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    // Prevent the scanner from caching results<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    scan.setCaching(1);<a name="line.773"></a>
-<span class="sourceLineNo">774</span><a name="line.774"></a>
-<span class="sourceLineNo">775</span>    // get scanner and rows<a name="line.775"></a>
-<span class="sourceLineNo">776</span>    int scanId = handler.openScanner(table, scan);<a name="line.776"></a>
-<span class="sourceLineNo">777</span>    for (int i = 0; i &lt; numTrials; i++) {<a name="line.777"></a>
-<span class="sourceLineNo">778</span>      // Make sure that the Scanner doesn't throw an exception after the ConnectionCache timeout<a name="line.778"></a>
-<span class="sourceLineNo">779</span>      List&lt;TResult&gt; results = handler.getScannerRows(scanId, 1);<a name="line.779"></a>
-<span class="sourceLineNo">780</span>      assertArrayEquals(("testScan" + i).getBytes(), results.get(0).getRow());<a name="line.780"></a>
-<span class="sourceLineNo">781</span>      Thread.sleep(trialPause);<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    }<a name="line.782"></a>
-<span class="sourceLineNo">783</span>  }<a name="line.783"></a>
+<span class="sourceLineNo">721</span>    // close scanner and check that it was indeed closed<a name="line.721"></a>
+<span class="sourceLineNo">722</span>    handler.closeScanner(scanId);<a name="line.722"></a>
+<span class="sourceLineNo">723</span>    try {<a name="line.723"></a>
+<span class="sourceLineNo">724</span>      handler.getScannerRows(scanId, 10);<a name="line.724"></a>
+<span class="sourceLineNo">725</span>      fail("Scanner id should be invalid");<a name="line.725"></a>
+<span class="sourceLineNo">726</span>    } catch (TIllegalArgument e) {<a name="line.726"></a>
+<span class="sourceLineNo">727</span>    }<a name="line.727"></a>
+<span class="sourceLineNo">728</span>  }<a name="line.728"></a>
+<span class="sourceLineNo">729</span><a name="line.729"></a>
+<span class="sourceLineNo">730</span>  /**<a name="line.730"></a>
+<span class="sourceLineNo">731</span>   * Tests keeping a HBase scanner alive for long periods of time. Each call to getScannerRow()<a name="line.731"></a>
+<span class="sourceLineNo">732</span>   * should reset the ConnectionCache timeout for the scanner's connection.<a name="line.732"></a>
+<span class="sourceLineNo">733</span>   */<a name="line.733"></a>
+<span class="sourceLineNo">734</span>  @Test<a name="line.734"></a>
+<span class="sourceLineNo">735</span>  public void testLongLivedScan() throws Exception {<a name="line.735"></a>
+<span class="sourceLineNo">736</span>    int numTrials = 6;<a name="line.736"></a>
+<span class="sourceLineNo">737</span>    int trialPause = 1000;<a name="line.737"></a>
+<span class="sourceLineNo">738</span>    int cleanUpInterval = 100;<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    Configuration conf = new Configuration(UTIL.getConfiguration());<a name="line.739"></a>
+<span class="sourceLineNo">740</span>    // Set the ConnectionCache timeout to trigger halfway through the trials<a name="line.740"></a>
+<span class="sourceLineNo">741</span>    conf.setInt(ThriftHBaseServiceHandler.MAX_IDLETIME, (numTrials / 2) * trialPause);<a name="line.741"></a>
+<span class="sourceLineNo">742</span>    conf.setInt(ThriftHBaseServiceHandler.CLEANUP_INTERVAL, cleanUpInterval);<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    ThriftHBaseServiceHandler handler = new ThriftHBaseServiceHandler(conf,<a name="line.743"></a>
+<span class="sourceLineNo">744</span>        UserProvider.instantiate(conf));<a name="line.744"></a>
+<span class="sourceLineNo">745</span><a name="line.745"></a>
+<span class="sourceLineNo">746</span>    ByteBuffer table = wrap(tableAname);<a name="line.746"></a>
+<span class="sourceLineNo">747</span>    // insert data<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.748"></a>
+<span class="sourceLineNo">749</span>        wrap(valueAname));<a name="line.749"></a>
+<span class="sourceLineNo">750</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.750"></a>
+<span class="sourceLineNo">751</span>    columnValues.add(columnValue);<a name="line.751"></a>
+<span class="sourceLineNo">752</span>    for (int i = 0; i &lt; numTrials; i++) {<a name="line.752"></a>
+<span class="sourceLineNo">753</span>      TPut put = new TPut(wrap(("testScan" + i).getBytes()), columnValues);<a name="line.753"></a>
+<span class="sourceLineNo">754</span>      handler.put(table, put);<a name="line.754"></a>
+<span class="sourceLineNo">755</span>    }<a name="line.755"></a>
+<span class="sourceLineNo">756</span><a name="line.756"></a>
+<span class="sourceLineNo">757</span>    // create scan instance<a name="line.757"></a>
+<span class="sourceLineNo">758</span>    TScan scan = new TScan();<a name="line.758"></a>
+<span class="sourceLineNo">759</span>    List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.759"></a>
+<span class="sourceLineNo">760</span>    TColumn column = new TColumn();<a name="line.760"></a>
+<span class="sourceLineNo">761</span>    column.setFamily(familyAname);<a name="line.761"></a>
+<span class="sourceLineNo">762</span>    column.setQualifier(qualifierAname);<a name="line.762"></a>
+<span class="sourceLineNo">763</span>    columns.add(column);<a name="line.763"></a>
+<span class="sourceLineNo">764</span>    scan.setColumns(columns);<a name="line.764"></a>
+<span class="sourceLineNo">765</span>    scan.setStartRow("testScan".getBytes());<a name="line.765"></a>
+<span class="sourceLineNo">766</span>    scan.setStopRow("testScan\uffff".getBytes());<a name="line.766"></a>
+<span class="sourceLineNo">767</span>    // Prevent the scanner from caching results<a name="line.767"></a>
+<span class="sourceLineNo">768</span>    scan.setCaching(1);<a name="line.768"></a>
+<span class="sourceLineNo">769</span><a name="line.769"></a>
+<span class="sourceLineNo">770</span>    // get scanner and rows<a name="line.770"></a>
+<span class="sourceLineNo">771</span>    int scanId = handler.openScanner(table, scan);<a name="line.771"></a>
+<span class="sourceLineNo">772</span>    for (int i = 0; i &lt; numTrials; i++) {<a name="line.772"></a>
+<span class="sourceLineNo">773</span>      // Make sure that the Scanner doesn't throw an exception after the ConnectionCache timeout<a name="line.773"></a>
+<span class="sourceLineNo">774</span>      List&lt;TResult&gt; results = handler.getScannerRows(scanId, 1);<a name="line.774"></a>
+<span class="sourceLineNo">775</span>      assertArrayEquals(("testScan" + i).getBytes(), results.get(0).getRow());<a name="line.775"></a>
+<span class="sourceLineNo">776</span>      Thread.sleep(trialPause);<a name="line.776"></a>
+<span class="sourceLineNo">777</span>    }<a name="line.777"></a>
+<span class="sourceLineNo">778</span>  }<a name="line.778"></a>
+<span class="sourceLineNo">779</span><a name="line.779"></a>
+<span class="sourceLineNo">780</span>  @Test<a name="line.780"></a>
+<span class="sourceLineNo">781</span>  public void testReverseScan() throws Exception {<a name="line.781"></a>
+<span class="sourceLineNo">782</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.782"></a>
+<span class="sourceLineNo">783</span>    ByteBuffer table = wrap(tableAname);<a name="line.783"></a>
 <span class="sourceLineNo">784</span><a name="line.784"></a>
-<span class="sourceLineNo">785</span>  @Test<a name="line.785"></a>
-<span class="sourceLineNo">786</span>  public void testReverseScan() throws Exception {<a name="line.786"></a>
-<span class="sourceLineNo">787</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.787"></a>
-<span class="sourceLineNo">788</span>    ByteBuffer table = wrap(tableAname);<a name="line.788"></a>
-<span class="sourceLineNo">789</span><a name="line.789"></a>
-<span class="sourceLineNo">790</span>    // insert data<a name="line.790"></a>
-<span class="sourceLineNo">791</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.791"></a>
-<span class="sourceLineNo">792</span>      wrap(valueAname));<a name="line.792"></a>
-<span class="sourceLineNo">793</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.793"></a>
-<span class="sourceLineNo">794</span>    columnValues.add(columnValue);<a name="line.794"></a>
-<span class="sourceLineNo">795</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.795"></a>
-<span class="sourceLineNo">796</span>      TPut put = new TPut(wrap(("testReverseScan" + i).getBytes()), columnValues);<a name="line.796"></a>
-<span class="sourceLineNo">797</span>      handler.put(table, put);<a name="line.797"></a>
-<span class="sourceLineNo">798</span>    }<a name="line.798"></a>
-<span class="sourceLineNo">799</span><a name="line.799"></a>
-<span class="sourceLineNo">800</span>    // create reverse scan instance<a name="line.800"></a>
-<span class="sourceLineNo">801</span>    TScan scan = new TScan();<a name="line.801"></a>
-<span class="sourceLineNo">802</span>    scan.setReversed(true);<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.803"></a>
-<span class="sourceLineNo">804</span>    TColumn column = new TColumn();<a name="line.804"></a>
-<span class="sourceLineNo">805</span>    column.setFamily(familyAname);<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    column.setQualifier(qualifierAname);<a name="line.806"></a>
-<span class="sourceLineNo">807</span>    columns.add(column);<a name="line.807"></a>
-<span class="sourceLineNo">808</span>    scan.setColumns(columns);<a name="line.808"></a>
-<span class="sourceLineNo">809</span>    scan.setStartRow("testReverseScan\uffff".getBytes());<a name="line.809"></a>
-<span class="sourceLineNo">810</span>    scan.setStopRow("testReverseScan".getBytes());<a name="line.810"></a>
-<span class="sourceLineNo">811</span><a name="line.811"></a>
-<span class="sourceLineNo">812</span>    // get scanner and rows<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    int scanId = handler.openScanner(table, scan);<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    List&lt;TResult&gt; results = handler.getScannerRows(scanId, 10);<a name="line.814"></a>
-<span class="sourceLineNo">815</span>    assertEquals(10, results.size());<a name="line.815"></a>
-<span class="sourceLineNo">816</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      // check if the rows are returned and in order<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      assertArrayEquals(("testReverseScan" + (9 - i)).getBytes(), results.get(i).getRow());<a name="line.818"></a>
-<span class="sourceLineNo">819</span>    }<a name="line.819"></a>
-<span class="sourceLineNo">820</span><a name="line.820"></a>
-<span class="sourceLineNo">821</span>    // check that we are at the end of the scan<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    results = handler.getScannerRows(scanId, 10);<a name="line.822"></a>
-<span class="sourceLineNo">823</span>    assertEquals(0, results.size());<a name="line.823"></a>
-<span class="sourceLineNo">824</span><a name="line.824"></a>
-<span class="sourceLineNo">825</span>    // close scanner and check that it was indeed closed<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    handler.closeScanner(scanId);<a name="line.826"></a>
-<span class="sourceLineNo">827</span>    try {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      handler.getScannerRows(scanId, 10);<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      fail("Scanner id should be invalid");<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    } catch (TIllegalArgument e) {<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    }<a name="line.831"></a>
-<span class="sourceLineNo">832</span>  }<a name="line.832"></a>
+<span class="sourceLineNo">785</span>    // insert data<a name="line.785"></a>
+<span class="sourceLineNo">786</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.786"></a>
+<span class="sourceLineNo">787</span>      wrap(valueAname));<a name="line.787"></a>
+<span class="sourceLineNo">788</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.788"></a>
+<span class="sourceLineNo">789</span>    columnValues.add(columnValue);<a name="line.789"></a>
+<span class="sourceLineNo">790</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.790"></a>
+<span class="sourceLineNo">791</span>      TPut put = new TPut(wrap(("testReverseScan" + i).getBytes()), columnValues);<a name="line.791"></a>
+<span class="sourceLineNo">792</span>      handler.put(table, put);<a name="line.792"></a>
+<span class="sourceLineNo">793</span>    }<a name="line.793"></a>
+<span class="sourceLineNo">794</span><a name="line.794"></a>
+<span class="sourceLineNo">795</span>    // create reverse scan instance<a name="line.795"></a>
+<span class="sourceLineNo">796</span>    TScan scan = new TScan();<a name="line.796"></a>
+<span class="sourceLineNo">797</span>    scan.setReversed(true);<a name="line.797"></a>
+<span class="sourceLineNo">798</span>    List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.798"></a>
+<span class="sourceLineNo">799</span>    TColumn column = new TColumn();<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    column.setFamily(familyAname);<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    column.setQualifier(qualifierAname);<a name="line.801"></a>
+<span class="sourceLineNo">802</span>    columns.add(column);<a name="line.802"></a>
+<span class="sourceLineNo">803</span>    scan.setColumns(columns);<a name="line.803"></a>
+<span class="sourceLineNo">804</span>    scan.setStartRow("testReverseScan\uffff".getBytes());<a name="line.804"></a>
+<span class="sourceLineNo">805</span>    scan.setStopRow("testReverseScan".getBytes());<a name="line.805"></a>
+<span class="sourceLineNo">806</span><a name="line.806"></a>
+<span class="sourceLineNo">807</span>    // get scanner and rows<a name="line.807"></a>
+<span class="sourceLineNo">808</span>    int scanId = handler.openScanner(table, scan);<a name="line.808"></a>
+<span class="sourceLineNo">809</span>    List&lt;TResult&gt; results = handler.getScannerRows(scanId, 10);<a name="line.809"></a>
+<span class="sourceLineNo">810</span>    assertEquals(10, results.size());<a name="line.810"></a>
+<span class="sourceLineNo">811</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.811"></a>
+<span class="sourceLineNo">812</span>      // check if the rows are returned and in order<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      assertArrayEquals(("testReverseScan" + (9 - i)).getBytes(), results.get(i).getRow());<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    }<a name="line.814"></a>
+<span class="sourceLineNo">815</span><a name="line.815"></a>
+<span class="sourceLineNo">816</span>    // check that we are at the end of the scan<a name="line.816"></a>
+<span class="sourceLineNo">817</span>    results = handler.getScannerRows(scanId, 10);<a name="line.817"></a>
+<span class="sourceLineNo">818</span>    assertEquals(0, results.size());<a name="line.818"></a>
+<span class="sourceLineNo">819</span><a name="line.819"></a>
+<span class="sourceLineNo">820</span>    // close scanner and check that it was indeed closed<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    handler.closeScanner(scanId);<a name="line.821"></a>
+<span class="sourceLineNo">822</span>    try {<a name="line.822"></a>
+<span class="sourceLineNo">823</span>      handler.getScannerRows(scanId, 10);<a name="line.823"></a>
+<span class="sourceLineNo">824</span>      fail("Scanner id should be invalid");<a name="line.824"></a>
+<span class="sourceLineNo">825</span>    } catch (TIllegalArgument e) {<a name="line.825"></a>
+<span class="sourceLineNo">826</span>    }<a name="line.826"></a>
+<span class="sourceLineNo">827</span>  }<a name="line.827"></a>
+<span class="sourceLineNo">828</span><a name="line.828"></a>
+<span class="sourceLineNo">829</span>  @Test<a name="line.829"></a>
+<span class="sourceLineNo">830</span>  public void testScanWithFilter() throws Exception {<a name="line.830"></a>
+<span class="sourceLineNo">831</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.831"></a>
+<span class="sourceLineNo">832</span>    ByteBuffer table = wrap(tableAname);<a name="line.832"></a>
 <span class="sourceLineNo">833</span><a name="line.833"></a>
-<span class="sourceLineNo">834</span>  @Test<a name="line.834"></a>
-<span class="sourceLineNo">835</span>  public void testScanWithFilter() throws Exception {<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    ByteBuffer table = wrap(tableAname);<a name="line.837"></a>
-<span class="sourceLineNo">838</span><a name="line.838"></a>
-<span class="sourceLineNo">839</span>    // insert data<a name="line.839"></a>
-<span class="sourceLineNo">840</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.840"></a>
-<span class="sourceLineNo">841</span>      wrap(valueAname));<a name="line.841"></a>
-<span class="sourceLineNo">842</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    columnValues.add(columnValue);<a name="line.843"></a>
-<span class="sourceLineNo">844</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.844"></a>
-<span class="sourceLineNo">845</span>      TPut put = new TPut(wrap(("testScanWithFilter" + i).getBytes()), columnValues);<a name="line.845"></a>
-<span class="sourceLineNo">846</span>      handler.put(table, put);<a name="line.846"></a>
-<span class="sourceLineNo">847</span>    }<a name="line.847"></a>
-<span class="sourceLineNo">848</span><a name="line.848"></a>
-<span class="sourceLineNo">849</span>    // create scan instance with filter<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    TScan scan = new TScan();<a name="line.850"></a>
-<span class="sourceLineNo">851</span>    List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.851"></a>
-<span class="sourceLineNo">852</span>    TColumn column = new TColumn();<a name="line.852"></a>
-<span class="sourceLineNo">853</span>    column.setFamily(familyAname);<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    column.setQualifier(qualifierAname);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    columns.add(column);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    scan.setColumns(columns);<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    scan.setStartRow("testScanWithFilter".getBytes());<a name="line.857"></a>
-<span class="sourceLineNo">858</span>    scan.setStopRow("testScanWithFilter\uffff".getBytes());<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    // only get the key part<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    scan.setFilterString(wrap(("KeyOnlyFilter()").getBytes()));<a name="line.860"></a>
-<span class="sourceLineNo">861</span><a name="line.861"></a>
-<span class="sourceLineNo">862</span>    // get scanner and rows<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    int scanId = handler.openScanner(table, scan);<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    List&lt;TResult&gt; results = handler.getScannerRows(scanId, 10);<a name="line.864"></a>
-<span class="sourceLineNo">865</span>    assertEquals(10, results.size());<a name="line.865"></a>
-<span class="sourceLineNo">866</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.866"></a>
-<span class="sourceLineNo">867</span>      // check if the rows are returned and in order<a name="line.867"></a>
-<span class="sourceLineNo">868</span>      assertArrayEquals(("testScanWithFilter" + i).getBytes(), results.get(i).getRow());<a name="line.868"></a>
-<span class="sourceLineNo">869</span>      // check that the value is indeed stripped by the filter<a name="line.869"></a>
-<span class="sourceLineNo">870</span>      assertEquals(0, results.get(i).getColumnValues().get(0).getValue().length);<a name="line.870"></a>
-<span class="sourceLineNo">871</span>    }<a name="line.871"></a>
-<span class="sourceLineNo">872</span><a name="line.872"></a>
-<span class="sourceLineNo">873</span>    // check that we are at the end of the scan<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    results = handler.getScannerRows(scanId, 10);<a name="line.874"></a>
-<span class="sourceLineNo">875</span>    assertEquals(0, results.size());<a name="line.875"></a>
-<span class="sourceLineNo">876</span><a name="line.876"></a>
-<span class="sourceLineNo">877</span>    // close scanner and check that it was indeed closed<a name="line.877"></a>
-<span class="sourceLineNo">878</span>    handler.closeScanner(scanId);<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    try {<a name="line.879"></a>
-<span class="sourceLineNo">880</span>      handler.getScannerRows(scanId, 10);<a name="line.880"></a>
-<span class="sourceLineNo">881</span>      fail("Scanner id should be invalid");<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    } catch (TIllegalArgument e) {<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    }<a name="line.883"></a>
-<span class="sourceLineNo">884</span>  }<a name="line.884"></a>
+<span class="sourceLineNo">834</span>    // insert data<a name="line.834"></a>
+<span class="sourceLineNo">835</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.835"></a>
+<span class="sourceLineNo">836</span>      wrap(valueAname));<a name="line.836"></a>
+<span class="sourceLineNo">837</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.837"></a>
+<span class="sourceLineNo">838</span>    columnValues.add(columnValue);<a name="line.838"></a>
+<span class="sourceLineNo">839</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.839"></a>
+<span class="sourceLineNo">840</span>      TPut put = new TPut(wrap(("testScanWithFilter" + i).getBytes()), columnValues);<a name="line.840"></a>
+<span class="sourceLineNo">841</span>      handler.put(table, put);<a name="line.841"></a>
+<span class="sourceLineNo">842</span>    }<a name="line.842"></a>
+<span class="sourceLineNo">843</span><a name="line.843"></a>
+<span class="sourceLineNo">844</span>    // create scan instance with filter<a name="line.844"></a>
+<span class="sourceLineNo">845</span>    TScan scan = new TScan();<a name="line.845"></a>
+<span class="sourceLineNo">846</span>    List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.846"></a>
+<span class="sourceLineNo">847</span>    TColumn column = new TColumn();<a name="line.847"></a>
+<span class="sourceLineNo">848</span>    column.setFamily(familyAname);<a name="line.848"></a>
+<span class="sourceLineNo">849</span>    column.setQualifier(qualifierAname);<a name="line.849"></a>
+<span class="sourceLineNo">850</span>    columns.add(column);<a name="line.850"></a>
+<span class="sourceLineNo">851</span>    scan.setColumns(columns);<a name="line.851"></a>
+<span class="sourceLineNo">852</span>    scan.setStartRow("testScanWithFilter".getBytes());<a name="line.852"></a>
+<span class="sourceLineNo">853</span>    scan.setStopRow("testScanWithFilter\uffff".getBytes());<a name="line.853"></a>
+<span class="sourceLineNo">854</span>    // only get the key part<a name="line.854"></a>
+<span class="sourceLineNo">855</span>    scan.setFilterString(wrap(("KeyOnlyFilter()").getBytes()));<a name="line.855"></a>
+<span class="sourceLineNo">856</span><a name="line.856"></a>
+<span class="sourceLineNo">857</span>    // get scanner and rows<a name="line.857"></a>
+<span class="sourceLineNo">858</span>    int scanId = handler.openScanner(table, scan);<a name="line.858"></a>
+<span class="sourceLineNo">859</span>    List&lt;TResult&gt; results = handler.getScannerRows(scanId, 10);<a name="line.859"></a>
+<span class="sourceLineNo">860</span>    assertEquals(10, results.size());<a name="line.860"></a>
+<span class="sourceLineNo">861</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.861"></a>
+<span class="sourceLineNo">862</span>      // check if the rows are returned and in order<a name="line.862"></a>
+<span class="sourceLineNo">863</span>      assertArrayEquals(("testScanWithFilter" + i).getBytes(), results.get(i).getRow());<a name="line.863"></a>
+<span class="sourceLineNo">864</span>      // check that the value is indeed stripped by the filter<a name="line.864"></a>
+<span class="sourceLineNo">865</span>      assertEquals(0, results.get(i).getColumnValues().get(0).getValue().length);<a name="line.865"></a>
+<span class="sourceLineNo">866</span>    }<a name="line.866"></a>
+<span class="sourceLineNo">867</span><a name="line.867"></a>
+<span class="sourceLineNo">868</span>    // check that we are at the end of the scan<a name="line.868"></a>
+<span class="sourceLineNo">869</span>    results = handler.getScannerRows(scanId, 10);<a name="line.869"></a>
+<span class="sourceLineNo">870</span>    assertEquals(0, results.size());<a name="line.870"></a>
+<span class="sourceLineNo">871</span><a name="line.871"></a>
+<span class="sourceLineNo">872</span>    // close scanner and check that it was indeed closed<a name="line.872"></a>
+<span class="sourceLineNo">873</span>    handler.closeScanner(scanId);<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    try {<a name="line.874"></a>
+<span class="sourceLineNo">875</span>      handler.getScannerRows(scanId, 10);<a name="line.875"></a>
+<span class="sourceLineNo">876</span>      fail("Scanner id should be invalid");<a name="line.876"></a>
+<span class="sourceLineNo">877</span>    } catch (TIllegalArgument e) {<a name="line.877"></a>
+<span class="sourceLineNo">878</span>    }<a name="line.878"></a>
+<span class="sourceLineNo">879</span>  }<a name="line.879"></a>
+<span class="sourceLineNo">880</span><a name="line.880"></a>
+<span class="sourceLineNo">881</span>  @Test<a name="line.881"></a>
+<span class="sourceLineNo">882</span>  public void testScanWithColumnFamilyTimeRange() throws Exception {<a name="line.882"></a>
+<span class="sourceLineNo">883</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    ByteBuffer table = wrap(tableAname);<a name="line.884"></a>
 <span class="sourceLineNo">885</span><a name="line.885"></a>
-<span class="sourceLineNo">886</span>  @Test<a name="line.886"></a>
-<span class="sourceLineNo">887</span>  public void testScanWithColumnFamilyTimeRange() throws Exception {<a name="line.887"></a>
-<span class="sourceLineNo">888</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    ByteBuffer table = wrap(tableAname);<a name="line.889"></a>
-<span class="sourceLineNo">890</span><a name="line.890"></a>
-<span class="sourceLineNo">891</span>    // insert data<a name="line.891"></a>
-<span class="sourceLineNo">892</span>    TColumnValue familyAColumnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.892"></a>
-<span class="sourceLineNo">893</span>        wrap(valueAname));<a name="line.893"></a>
-<span class="sourceLineNo">894</span>    TColumnValue familyBColumnValue = new TColumnValue(wrap(familyBname), wrap(qualifierBname),<a name="line.894"></a>
-<span class="sourceLineNo">895</span>        wrap(valueBname));<a name="line.895"></a>
-<span class="sourceLineNo">896</span>    long minTimestamp = System.currentTimeMillis();<a name="line.896"></a>
-<span class="sourceLineNo">897</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.897"></a>
-<span class="sourceLineNo">898</span>      familyAColumnValue.setTimestamp(minTimestamp + i);<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      familyBColumnValue.setTimestamp(minTimestamp + i);<a name="line.899"></a>
-<span class="sourceLineNo">900</span>      List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(2);<a name="line.900"></a>
-<span class="sourceLineNo">901</span>      columnValues.add(familyAColumnValue);<a name="line.901"></a>
-<span class="sourceLineNo">902</span>      columnValues.add(familyBColumnValue);<a name="line.902"></a>
-<span class="sourceLineNo">903</span>      TPut put = new TPut(wrap(("testScanWithColumnFamilyTimeRange" + i).getBytes()),<a name="line.903"></a>
-<span class="sourceLineNo">904</span>          columnValues);<a name="line.904"></a>
-<span class="sourceLineNo">905</span>      handler.put(table, put);<a name="line.905"></a>
-<span class="sourceLineNo">906</span>    }<a name="line.906"></a>
-<span class="sourceLineNo">907</span><a name="line.907"></a>
-<span class="sourceLineNo">908</span>    // create scan instance with column family time range<a name="line.908"></a>
-<span class="sourceLineNo">909</span>    TScan scan = new TScan();<a name="line.909"></a>
-<span class="sourceLineNo">910</span>    Map&lt;ByteBuffer,TTimeRange&gt; colFamTimeRangeMap = new HashMap&lt;&gt;(2);<a name="line.910"></a>
-<span class="sourceLineNo">911</span>    colFamTimeRangeMap.put(wrap(familyAname), new TTimeRange(minTimestamp + 3, minTimestamp + 5));<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    colFamTimeRangeMap.put(wrap(familyBname), new TTimeRange(minTimestamp + 6, minTimestamp + 9));<a name="line.912"></a>
-<span class="sourceLineNo">913</span>    scan.setColFamTimeRangeMap(colFamTimeRangeMap);<a name="line.913"></a>
-<span class="sourceLineNo">914</span><a name="line.914"></a>
-<span class="sourceLineNo">915</span>    // get scanner and rows<a name="line.915"></a>
-<span class="sourceLineNo">916</span>    int scanId = handler.openScanner(table, scan);<a name="line.916"></a>
-<span class="sourceLineNo">917</span>    List&lt;TResult&gt; results = handler.getScannerRows(scanId, 5);<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    assertEquals(5, results.size());<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    int familyACount = 0;<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    int familyBCount = 0;<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    for (TResult result : results) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>      List&lt;TColumnValue&gt; columnValues = result.getColumnValues();<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      if (CollectionUtils.isNotEmpty(columnValues)) {<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        if (Bytes.equals(familyAname, columnValues.get(0).getFamily())) {<a name="line.924"></a>
-<span class="sourceLineNo">925</span>          familyACount++;<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        } else if (Bytes.equals(familyBname, columnValues.get(0).getFamily())) {<a name="line.926"></a>
-<span class="sourceLineNo">927</span>          familyBCount++;<a name="line.927"></a>
-<span class="sourceLineNo">928</span>        }<a name="line.928"></a>
-<span class="sourceLineNo">929</span>      }<a name="line.929"></a>
-<span class="sourceLineNo">930</span>    }<a name="line.930"></a>
-<span class="sourceLineNo">931</span>    assertEquals(2, familyACount);<a name="line.931"></a>
-<span class="sourceLineNo">932</span>    assertEquals(3, familyBCount);<a name="line.932"></a>
-<span class="sourceLineNo">933</span><a name="line.933"></a>
-<span class="sourceLineNo">934</span>    // check that we are at the end of the scan<a name="line.934"></a>
-<span class="sourceLineNo">935</span>    results = handler.getScannerRows(scanId, 1);<a name="line.935"></a>
-<span class="sourceLineNo">936</span>    assertEquals(0, results.size());<a name="line.936"></a>
-<span class="sourceLineNo">937</span><a name="line.937"></a>
-<span class="sourceLineNo">938</span>    // close scanner and check that it was indeed closed<a name="line.938"></a>
-<span class="sourceLineNo">939</span>    handler.closeScanner(scanId);<a name="line.939"></a>
-<span class="sourceLineNo">940</span>    try {<a name="line.940"></a>
-<span class="sourceLineNo">941</span>      handler.getScannerRows(scanId, 1);<a name="line.941"></a>
-<span class="sourceLineNo">942</span>      fail("Scanner id should be invalid");<a name="line.942"></a>
-<span class="sourceLineNo">943</span>    } catch (TIllegalArgument e) {<a name="line.943"></a>
-<span class="sourceLineNo">944</span>    }<a name="line.944"></a>
-<span class="sourceLineNo">945</span>  }<a name="line.945"></a>
+<span class="sourceLineNo">886</span>    // insert data<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    TColumnValue familyAColumnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.887"></a>
+<span class="sourceLineNo">888</span>        wrap(valueAname));<a name="line.888"></a>
+<span class="sourceLineNo">889</span>    TColumnValue familyBColumnValue = new TColumnValue(wrap(familyBname), wrap(qualifierBname),<a name="line.889"></a>
+<span class="sourceLineNo">890</span>        wrap(valueBname));<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    long minTimestamp = System.currentTimeMillis();<a name="line.891"></a>
+<span class="sourceLineNo">892</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      familyAColumnValue.setTimestamp(minTimestamp + i);<a name="line.893"></a>
+<span class="sourceLineNo">894</span>      familyBColumnValue.setTimestamp(minTimestamp + i);<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(2);<a name="line.895"></a>
+<span class="sourceLineNo">896</span>      columnValues.add(familyAColumnValue);<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      columnValues.add(familyBColumnValue);<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      TPut put = new TPut(wrap(("testScanWithColumnFamilyTimeRange" + i).getBytes()),<a name="line.898"></a>
+<span class="sourceLineNo">899</span>          columnValues);<a name="line.899"></a>
+<span class="sourceLineNo">900</span>      handler.put(table, put);<a name="line.900"></a>
+<span class="sourceLineNo">901</span>    }<a name="line.901"></a>
+<span class="sourceLineNo">902</span><a name="line.902"></a>
+<span class="sourceLineNo">903</span>    // create scan instance with column family time range<a name="line.903"></a>
+<span class="sourceLineNo">904</span>    TScan scan = new TScan();<a name="line.904"></a>
+<span class="sourceLineNo">905</span>    Map&lt;ByteBuffer,TTimeRange&gt; colFamTimeRangeMap = new HashMap&lt;&gt;(2);<a name="line.905"></a>
+<span class="sourceLineNo">906</span>    colFamTimeRangeMap.put(wrap(familyAname), new TTimeRange(minTimestamp + 3, minTimestamp + 5));<a name="line.906"></a>
+<span class="sourceLineNo">907</span>    colFamTimeRangeMap.put(wrap(familyBname), new TTimeRange(minTimestamp + 6, minTimestamp + 9));<a name="line.907"></a>
+<span class="sourceLineNo">908</span>    scan.setColFamTimeRangeMap(colFamTimeRangeMap);<a name="line.908"></a>
+<span class="sourceLineNo">909</span><a name="line.909"></a>
+<span class="sourceLineNo">910</span>    // get scanner and rows<a name="line.910"></a>
+<span class="sourceLineNo">911</span>    int scanId = handler.openScanner(table, scan);<a name="line.911"></a>
+<span class="sourceLineNo">912</span>    List&lt;TResult&gt; results = handler.getScannerRows(scanId, 5);<a name="line.912"></a>
+<span class="sourceLineNo">913</span>    assertEquals(5, results.size());<a name="line.913"></a>
+<span class="sourceLineNo">914</span>    int familyACount = 0;<a name="line.914"></a>
+<span class="sourceLineNo">915</span>    int familyBCount = 0;<a name="line.915"></a>
+<span class="sourceLineNo">916</span>    for (TResult result : results) {<a name="line.916"></a>
+<span class="sourceLineNo">917</span>      List&lt;TColumnValue&gt; columnValues = result.getColumnValues();<a name="line.917"></a>
+<span class="sourceLineNo">918</span>      if (CollectionUtils.isNotEmpty(columnValues)) {<a name="line.918"></a>
+<span class="sourceLineNo">919</span>        if (Bytes.equals(familyAname, columnValues.get(0).getFamily())) {<a name="line.919"></a>
+<span class="sourceLineNo">920</span>          familyACount++;<a name="line.920"></a>
+<span class="sourceLineNo">921</span>        } else if (Bytes.equals(familyBname, columnValues.get(0).getFamily())) {<a name="line.921"></a>
+<span class="sourceLineNo">922</span>          familyBCount++;<a name="line.922"></a>
+<span class="sourceLineNo">923</span>        }<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      }<a name="line.924"></a>
+<span class="sourceLineNo">925</span>    }<a name="line.925"></a>
+<span class="sourceLineNo">926</span>    assertEquals(2, familyACount);<a name="line.926"></a>
+<span class="sourceLineNo">927</span>    assertEquals(3, familyBCount);<a name="line.927"></a>
+<span class="sourceLineNo">928</span><a name="line.928"></a>
+<span class="sourceLineNo">929</span>    // check that we are at the end of the scan<a name="line.929"></a>
+<span class="sourceLineNo">930</span>    results = handler.getScannerRows(scanId, 1);<a name="line.930"></a>
+<span class="sourceLineNo">931</span>    assertEquals(0, results.size());<a name="line.931"></a>
+<span class="sourceLineNo">932</span><a name="line.932"></a>
+<span class="sourceLineNo">933</span>    // close scanner and check that it was indeed closed<a name="line.933"></a>
+<span class="sourceLineNo">934</span>    handler.closeScanner(scanId);<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    try {<a name="line.935"></a>
+<span class="sourceLineNo">936</span>      handler.getScannerRows(scanId, 1);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>      fail("Scanner id should be invalid");<a name="line.937"></a>
+<span class="sourceLineNo">938</span>    } catch (TIllegalArgument e) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>    }<a name="line.939"></a>
+<span class="sourceLineNo">940</span>  }<a name="line.940"></a>
+<span class="sourceLineNo">941</span><a name="line.941"></a>
+<span class="sourceLineNo">942</span>  @Test<a name="line.942"></a>
+<span class="sourceLineNo">943</span>  public void testSmallScan() throws Exception {<a name="line.943"></a>
+<span class="sourceLineNo">944</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.944"></a>
+<span class="sourceLineNo">945</span>    ByteBuffer table = wrap(tableAname);<a name="line.945"></a>
 <span class="sourceLineNo">946</span><a name="line.946"></a>
-<span class="sourceLineNo">947</span>  @Test<a name="line.947"></a>
-<span class="sourceLineNo">948</span>  public void testSmallScan() throws Exception {<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.949"></a>
-<span class="sourceLineNo">950</span>    ByteBuffer table = wrap(tableAname);<a name="line.950"></a>
-<span class="sourceLineNo">951</span><a name="line.951"></a>
-<span class="sourceLineNo">952</span>    // insert data<a name="line.952"></a>
-<span class="sourceLineNo">953</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.953"></a>
-<span class="sourceLineNo">954</span>            wrap(valueAname));<a name="line.954"></a>
-<span class="sourceLineNo">955</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;TColumnValue&gt;();<a name="line.955"></a>
-<span class="sourceLineNo">956</span>    columnValues.add(columnValue);<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.957"></a>
-<span class="sourceLineNo">958</span>      TPut put = new TPut(wrap(("testSmallScan" + i).getBytes()), columnValues);<a name="line.958"></a>
-<span class="sourceLineNo">959</span>      handler.put(table, put);<a name="line.959"></a>
-<span class="sourceLineNo">960</span>    }<a name="line.960"></a>
-<span class="sourceLineNo">961</span><a name="line.961"></a>
-<span class="sourceLineNo">962</span>    // small scan instance<a name="line.962"></a>
-<span class="sourceLineNo">963</span>    TScan scan = new TScan();<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    scan.setStartRow("testSmallScan".getBytes());<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    scan.setStopRow("testSmallScan\uffff".getBytes());<a name="line.965"></a>
-<span class="sourceLineNo">966</span>    scan.setReadType(TReadType.PREAD);<a name="line.966"></a>
-<span class="sourceLineNo">967</span>    scan.setCaching(2);<a name="line.967"></a>
-<span class="sourceLineNo">968</span><a name="line.968"></a>
-<span class="sourceLineNo">969</span>    // get scanner and rows<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    int scanId = handler.openScanner(table, scan);<a name="line.970"></a>
-<span class="sourceLineNo">971</span>    List&lt;TResult&gt; results = handler.getScannerRows(scanId, 10);<a name="line.971"></a>
-<span class="sourceLineNo">972</span>    assertEquals(10, results.size());<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.973"></a>
-<span class="sourceLineNo">974</span>      // check if the rows are returned and in order<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      assertArrayEquals(("testSmallScan" + i).getBytes(), results.get(i).getRow());<a name="line.975"></a>
-<span class="sourceLineNo">976</span>    }<a name="line.976"></a>
-<span class="sourceLineNo">977</span><a name="line.977"></a>
-<span class="sourceLineNo">978</span>    // check that we are at the end of the scan<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    results = handler.getScannerRows(scanId, 10);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    assertEquals(0, results.size());<a name="line.980"></a>
-<span class="sourceLineNo">981</span><a name="line.981"></a>
-<span class="sourceLineNo">982</span>    // close scanner and check that it was indeed closed<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    handler.closeScanner(scanId);<a name="line.983"></a>
-<span class="sourceLineNo">984</span>    try {<a name="line.984"></a>
-<span class="sourceLineNo">985</span>      handler.getScannerRows(scanId, 10);<a name="line.985"></a>
-<span class="sourceLineNo">986</span>      fail("Scanner id should be invalid");<a name="line.986"></a>
-<span class="sourceLineNo">987</span>    } catch (TIllegalArgument e) {<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    }<a name="line.988"></a>
-<span class="sourceLineNo">989</span>  }<a name="line.989"></a>
-<span class="sourceLineNo">990</span><a name="line.990"></a>
-<span class="sourceLineNo">991</span>  @Test<a name="line.991"></a>
-<span class="sourceLineNo">992</span>  public void testPutTTL() throws Exception {<a name="line.992"></a>
-<span class="sourceLineNo">993</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.993"></a>
-<span class="sourceLineNo">994</span>    byte[] rowName = "testPutTTL".getBytes();<a name="line.994"></a>
-<span class="sourceLineNo">995</span>    ByteBuffer table = wrap(tableAname);<a name="line.995"></a>
-<span class="sourceLineNo">996</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.996"></a>
-<span class="sourceLineNo">997</span><a name="line.997"></a>
-<span class="sourceLineNo">998</span>    // Add some dummy data<a name="line.998"></a>
-<span class="sourceLineNo">999</span>    columnValues.add(<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>        new TColumnValue(<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>            wrap(familyAname),<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>            wrap(qualifierAname),<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>            wrap(Bytes.toBytes(1L))));<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span><a name="line.1004"></a>
+<span class="sourceLineNo">947</span>    // insert data<a name="line.947"></a>
+<span class="sourceLineNo">948</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.948"></a>
+<span class="sourceLineNo">949</span>            wrap(valueAname));<a name="line.949"></a>
+<span class="sourceLineNo">950</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;TColumnValue&gt;();<a name="line.950"></a>
+<span class="sourceLineNo">951</span>    columnValues.add(columnValue);<a name="line.951"></a>
+<span class="sourceLineNo">952</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>      TPut put = new TPut(wrap(("testSmallScan" + i).getBytes()), columnValues);<a name="line.953"></a>
+<span class="sourceLineNo">954</span>      handler.put(table, put);<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    }<a name="line.955"></a>
+<span class="sourceLineNo">956</span><a name="line.956"></a>
+<span class="sourceLineNo">957</span>    // small scan instance<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    TScan scan = new TScan();<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    scan.setStartRow("testSmallScan".getBytes());<a name="line.959"></a>
+<span class="sourceLineNo">960</span>    scan.setStopRow("testSmallScan\uffff".getBytes());<a name="line.960"></a>
+<span class="sourceLineNo">961</span>    scan.setReadType(TReadType.PREAD);<a name="line.961"></a>
+<span class="sourceLineNo">962</span>    scan.setCaching(2);<a name="line.962"></a>
+<span class="sourceLineNo">963</span><a name="line.963"></a>
+<span class="sourceLineNo">964</span>    // get scanner and rows<a name="line.964"></a>
+<span class="sourceLineNo">965</span>    int scanId = handler.openScanner(table, scan);<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    List&lt;TResult&gt; results = handler.getScannerRows(scanId, 10);<a name="line.966"></a>
+<span class="sourceLineNo">967</span>    assertEquals(10, results.size());<a name="line.967"></a>
+<span class="sourceLineNo">968</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.968"></a>
+<span class="sourceLineNo">969</span>      // check if the rows are returned and in order<a name="line.969"></a>
+<span class="sourceLineNo">970</span>      assertArrayEquals(("testSmallScan" + i).getBytes(), results.get(i).getRow());<a name="line.970"></a>
+<span class="sourceLineNo">971</span>    }<a name="line.971"></a>
+<span class="sourceLineNo">972</span><a name="line.972"></a>
+<span class="sourceLineNo">973</span>    // check that we are at the end of the scan<a name="line.973"></a>
+<span class="sourceLineNo">974</span>    results = handler.getScannerRows(scanId, 10);<a name="line.974"></a>
+<span class="sourceLineNo">975</span>    assertEquals(0, results.size());<a name="line.975"></a>
+<span class="sourceLineNo">976</span><a name="line.976"></a>
+<span class="sourceLineNo">977</span>    // close scanner and check that it was indeed closed<a name="line.977"></a>
+<span class="sourceLineNo">978</span>    handler.closeScanner(scanId);<a name="line.978"></a>
+<span class="sourceLineNo">979</span>    try {<a name="line.979"></a>
+<span class="sourceLineNo">980</span>      handler.getScannerRows(scanId, 10);<a name="line.980"></a>
+<span class="sourceLineNo">981</span>      fail("Scanner id should be invalid");<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    } catch (TIllegalArgument e) {<a name="line.982"></a>
+<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
+<span class="sourceLineNo">984</span>  }<a name="line.984"></a>
+<span class="sourceLineNo">985</span><a name="line.985"></a>
+<span class="sourceLineNo">986</span>  @Test<a name="line.986"></a>
+<span class="sourceLineNo">987</span>  public void testPutTTL() throws Exception {<a name="line.987"></a>
+<span class="sourceLineNo">988</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.988"></a>
+<span class="sourceLineNo">989</span>    byte[] rowName = "testPutTTL".getBytes();<a name="line.989"></a>
+<span class="sourceLineNo">990</span>    ByteBuffer table = wrap(tableAname);<a name="line.990"></a>
+<span class="sourceLineNo">991</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.991"></a>
+<span class="sourceLineNo">992</span><a name="line.992"></a>
+<span class="sourceLineNo">993</span>    // Add some dummy data<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    columnValues.add(<a name="line.994"></a>
+<span class="sourceLineNo">995</span>        new TColumnValue(<a name="line.995"></a>
+<span class="sourceLineNo">996</span>            wrap(familyAname),<a name="line.996"></a>
+<span class="sourceLineNo">997</span>            wrap(qualifierAname),<a name="line.997"></a>
+<span class="sourceLineNo">998</span>            wrap(Bytes.toBytes(1L))));<a name="line.998"></a>
+<span class="sourceLineNo">999</span><a name="line.999"></a>
+<span class="sourceLineNo">1000</span><a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>    TPut put = new TPut(wrap(rowName), columnValues);<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>    put.setColumnValues(columnValues);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span><a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>    Map&lt;ByteBuffer, ByteBuffer&gt; attributes = new HashMap&lt;&gt;();<a name="line.1004"></a>
 <span class="sourceLineNo">1005</span><a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>    TPut put = new TPut(wrap(rowName), columnValues);<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>    put.setColumnValues(columnValues);<a name="line.1007"></a>
+<span class="sourceLineNo">1006</span>    // Time in ms for the kv's to live.<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>    long ttlTimeMs = 2000L;<a name="line.1007"></a>
 <span class="sourceLineNo">1008</span><a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>    Map&lt;ByteBuffer, ByteBuffer&gt; attributes = new HashMap&lt;&gt;();<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span><a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    // Time in ms for the kv's to live.<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    long ttlTimeMs = 2000L;<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span><a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>    // the _ttl attribute is a number of ms ttl for key values in this put.<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>    attributes.put(wrap(Bytes.toBytes("_ttl")), wrap(Bytes.toBytes(ttlTimeMs)));<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>    // Attach the attributes<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>    put.setAttributes(attributes);<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>    // Send it.<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>    handler.put(table, put);<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span><a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>    // Now get the data back<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>    TGet getOne = new TGet(wrap(rowName));<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>    TResult resultOne = handler.get(table, getOne);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span><a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>    // It's there.<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>    assertArrayEquals(rowName, resultOne.getRow());<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>    assertEquals(1, resultOne.getColumnValuesSize());<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span><a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>    // Sleep 30 seconds just to make 100% sure that the key value should be expired.<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>    Thread.sleep(ttlTimeMs * 15);<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span><a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>    TGet getTwo = new TGet(wrap(rowName));<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>    TResult resultTwo = handler.get(table, getTwo);<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span><a name="line.1034"></a>
+<span class="sourceLineNo">1009</span>    // the _ttl attribute is a number of ms ttl for key values in this put.<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>    attributes.put(wrap(Bytes.toBytes("_ttl")), wrap(Bytes.toBytes(ttlTimeMs)));<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>    // Attach the attributes<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    put.setAttributes(attributes);<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>    // Send it.<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>    handler.put(table, put);<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span><a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>    // Now get the data back<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>    TGet getOne = new TGet(wrap(rowName));<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>    TResult resultOne = handler.get(table, getOne);<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span><a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>    // It's there.<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>    assertArrayEquals(rowName, resultOne.getRow());<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>    assertEquals(1, resultOne.getColumnValuesSize());<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span><a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>    // Sleep 30 seconds just to make 100% sure that the key value should be expired.<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>    Thread.sleep(ttlTimeMs * 15);<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span><a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    TGet getTwo = new TGet(wrap(rowName));<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    TResult resultTwo = handler.get(table, getTwo);<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span><a name="line.1029"></a>
+<span class="sourceLineNo">1030</span><a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>    // Nothing should be there since it's ttl'd out.<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    assertNull(resultTwo.getRow());<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>    assertEquals(0, resultTwo.getColumnValuesSize());<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>  }<a name="line.1034"></a>
 <span class="sourceLineNo">1035</span><a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>    // Nothing should be there since it's ttl'd out.<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>    assertNull(resultTwo.getRow());<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>    assertEquals(0, resultTwo.getColumnValuesSize());<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>  }<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span><a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>  /**<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>   * Padding numbers to make comparison of sort order easier in a for loop<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>   *<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>   * @param n  The number to pad.<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>   * @param pad  The length to pad up to.<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>   * @return The padded number as a string.<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>   */<a name

<TRUNCATED>

[18/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html
index a162193..fcd4aca 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html
@@ -95,166 +95,163 @@
 <span class="sourceLineNo">087</span><a name="line.87"></a>
 <span class="sourceLineNo">088</span>  /**<a name="line.88"></a>
 <span class="sourceLineNo">089</span>   * Start up or shuts down the Thrift server, depending on the arguments.<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   * @param args<a name="line.90"></a>
+<span class="sourceLineNo">090</span>   * @param args the arguments to pass in when starting the Thrift server<a name="line.90"></a>
 <span class="sourceLineNo">091</span>   */<a name="line.91"></a>
-<span class="sourceLineNo">092</span>   void doMain(final String[] args) throws Exception {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>     processOptions(args);<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>     serverRunner = new ThriftServerRunner(conf);<a name="line.95"></a>
-<span class="sourceLineNo">096</span><a name="line.96"></a>
-<span class="sourceLineNo">097</span>     // Put up info server.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>     int port = conf.getInt("hbase.thrift.info.port", 9095);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>     if (port &gt;= 0) {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>       conf.setLong("startcode", System.currentTimeMillis());<a name="line.100"></a>
-<span class="sourceLineNo">101</span>       String a = conf.get("hbase.thrift.info.bindAddress", "0.0.0.0");<a name="line.101"></a>
-<span class="sourceLineNo">102</span>       infoServer = new InfoServer("thrift", a, port, false, conf);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>       infoServer.setAttribute("hbase.conf", conf);<a name="line.103"></a>
-<span class="sourceLineNo">104</span>       infoServer.start();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>     }<a name="line.105"></a>
-<span class="sourceLineNo">106</span>     serverRunner.run();<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  }<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>  /**<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   * Parse the command line options to set parameters the conf.<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   */<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  private void processOptions(final String[] args) throws Exception {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    Options options = new Options();<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    options.addOption("b", BIND_OPTION, true, "Address to bind " +<a name="line.114"></a>
-<span class="sourceLineNo">115</span>        "the Thrift server to. [default: " + DEFAULT_BIND_ADDR + "]");<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    options.addOption("p", PORT_OPTION, true, "Port to bind to [default: " +<a name="line.116"></a>
-<span class="sourceLineNo">117</span>        DEFAULT_LISTEN_PORT + "]");<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    options.addOption("f", FRAMED_OPTION, false, "Use framed transport");<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    options.addOption("c", COMPACT_OPTION, false, "Use the compact protocol");<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    options.addOption("h", "help", false, "Print help information");<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    options.addOption(null, "infoport", true, "Port for web UI");<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>    options.addOption("m", MIN_WORKERS_OPTION, true,<a name="line.123"></a>
-<span class="sourceLineNo">124</span>        "The minimum number of worker threads for " +<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        ImplType.THREAD_POOL.simpleClassName());<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>    options.addOption("w", MAX_WORKERS_OPTION, true,<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        "The maximum number of worker threads for " +<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        ImplType.THREAD_POOL.simpleClassName());<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span>    options.addOption("q", MAX_QUEUE_SIZE_OPTION, true,<a name="line.131"></a>
-<span class="sourceLineNo">132</span>        "The maximum number of queued requests in " +<a name="line.132"></a>
-<span class="sourceLineNo">133</span>        ImplType.THREAD_POOL.simpleClassName());<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>    options.addOption("k", KEEP_ALIVE_SEC_OPTION, true,<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        "The amount of time in secods to keep a thread alive when idle in " +<a name="line.136"></a>
-<span class="sourceLineNo">137</span>        ImplType.THREAD_POOL.simpleClassName());<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>    options.addOption("t", READ_TIMEOUT_OPTION, true,<a name="line.139"></a>
-<span class="sourceLineNo">140</span>        "Amount of time in milliseconds before a server thread will timeout " +<a name="line.140"></a>
-<span class="sourceLineNo">141</span>        "waiting for client to send data on a connected socket. Currently, " +<a name="line.141"></a>
-<span class="sourceLineNo">142</span>        "only applies to TBoundedThreadPoolServer");<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>    options.addOptionGroup(ImplType.createOptionGroup());<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>    CommandLineParser parser = new PosixParser();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    CommandLine cmd = parser.parse(options, args);<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>    // This is so complicated to please both bin/hbase and bin/hbase-daemon.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    // hbase-daemon provides "start" and "stop" arguments<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    // hbase should print the help if no argument is provided<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    List&lt;String&gt; commandLine = Arrays.asList(args);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    boolean stop = commandLine.contains("stop");<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    boolean start = commandLine.contains("start");<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    boolean invalidStartStop = (start &amp;&amp; stop) || (!start &amp;&amp; !stop);<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    if (cmd.hasOption("help") || invalidStartStop) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      if (invalidStartStop) {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        LOG.error("Exactly one of 'start' and 'stop' has to be specified");<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      }<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      printUsageAndExit(options, 1);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    }<a name="line.161"></a>
-<span class="sourceLineNo">162</span><a name="line.162"></a>
-<span class="sourceLineNo">163</span>    // Get port to bind to<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    try {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      if (cmd.hasOption(PORT_OPTION)) {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>        int listenPort = Integer.parseInt(cmd.getOptionValue(PORT_OPTION));<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        conf.setInt(ThriftServerRunner.PORT_CONF_KEY, listenPort);<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    } catch (NumberFormatException e) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      LOG.error("Could not parse the value provided for the port option", e);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      printUsageAndExit(options, -1);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>    // check for user-defined info server port setting, if so override the conf<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    try {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      if (cmd.hasOption("infoport")) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>        String val = cmd.getOptionValue("infoport");<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        conf.setInt("hbase.thrift.info.port", Integer.parseInt(val));<a name="line.178"></a>
-<span class="sourceLineNo">179</span>        LOG.debug("Web UI port set to " + val);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    } catch (NumberFormatException e) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      LOG.error("Could not parse the value provided for the infoport option", e);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      printUsageAndExit(options, -1);<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    }<a name="line.184"></a>
-<span class="sourceLineNo">185</span><a name="line.185"></a>
-<span class="sourceLineNo">186</span>    // Make optional changes to the configuration based on command-line options<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    optionToConf(cmd, MIN_WORKERS_OPTION,<a name="line.187"></a>
-<span class="sourceLineNo">188</span>        conf, TBoundedThreadPoolServer.MIN_WORKER_THREADS_CONF_KEY);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    optionToConf(cmd, MAX_WORKERS_OPTION,<a name="line.189"></a>
-<span class="sourceLineNo">190</span>        conf, TBoundedThreadPoolServer.MAX_WORKER_THREADS_CONF_KEY);<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    optionToConf(cmd, MAX_QUEUE_SIZE_OPTION,<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        conf, TBoundedThreadPoolServer.MAX_QUEUED_REQUESTS_CONF_KEY);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    optionToConf(cmd, KEEP_ALIVE_SEC_OPTION,<a name="line.193"></a>
-<span class="sourceLineNo">194</span>        conf, TBoundedThreadPoolServer.THREAD_KEEP_ALIVE_TIME_SEC_CONF_KEY);<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    optionToConf(cmd, READ_TIMEOUT_OPTION, conf,<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        ThriftServerRunner.THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    <a name="line.197"></a>
-<span class="sourceLineNo">198</span>    // Set general thrift server options<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    boolean compact = cmd.hasOption(COMPACT_OPTION) ||<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      conf.getBoolean(ThriftServerRunner.COMPACT_CONF_KEY, false);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    conf.setBoolean(ThriftServerRunner.COMPACT_CONF_KEY, compact);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    boolean framed = cmd.hasOption(FRAMED_OPTION) ||<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      conf.getBoolean(ThriftServerRunner.FRAMED_CONF_KEY, false);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    conf.setBoolean(ThriftServerRunner.FRAMED_CONF_KEY, framed);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    if (cmd.hasOption(BIND_OPTION)) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      conf.set(ThriftServerRunner.BIND_CONF_KEY, cmd.getOptionValue(BIND_OPTION));<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>    ImplType.setServerImpl(cmd, conf);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  }<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  public void stop() {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    if (this.infoServer != null) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      LOG.info("Stopping infoServer");<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      try {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>        this.infoServer.stop();<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      } catch (Exception ex) {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        ex.printStackTrace();<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    serverRunner.shutdown();<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  private static void optionToConf(CommandLine cmd, String option,<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      Configuration conf, String destConfKey) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    if (cmd.hasOption(option)) {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      String value = cmd.getOptionValue(option);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      LOG.info("Set configuration key:" + destConfKey + " value:" + value);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      conf.set(destConfKey, value);<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
-<span class="sourceLineNo">231</span>  }<a name="line.231"></a>
-<span class="sourceLineNo">232</span><a name="line.232"></a>
-<span class="sourceLineNo">233</span>  /**<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   * @param args<a name="line.234"></a>
-<span class="sourceLineNo">235</span>   * @throws Exception<a name="line.235"></a>
-<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  public static void main(String [] args) throws Exception {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    LOG.info("***** STARTING service '" + ThriftServer.class.getSimpleName() + "' *****");<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    VersionInfo.logVersion();<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    int exitCode = 0;<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    try {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      new ThriftServer(HBaseConfiguration.create()).doMain(args);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    } catch (ExitCodeException ex) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      exitCode = ex.getExitCode();<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    LOG.info("***** STOPPING service '" + ThriftServer.class.getSimpleName() + "' *****");<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    System.exit(exitCode);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>  }<a name="line.248"></a>
-<span class="sourceLineNo">249</span>}<a name="line.249"></a>
+<span class="sourceLineNo">092</span>  void doMain(final String[] args) throws Exception {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    processOptions(args);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    serverRunner = new ThriftServerRunner(conf);<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>    // Put up info server.<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    int port = conf.getInt("hbase.thrift.info.port", 9095);<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>    if (port &gt;= 0) {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      conf.setLong("startcode", System.currentTimeMillis());<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      String a = conf.get("hbase.thrift.info.bindAddress", "0.0.0.0");<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      infoServer = new InfoServer("thrift", a, port, false, conf);<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      infoServer.setAttribute("hbase.conf", conf);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      infoServer.start();<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    }<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>    serverRunner.run();<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>  /**<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   * Parse the command line options to set parameters the conf.<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private void processOptions(final String[] args) throws Exception {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    Options options = new Options();<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    options.addOption("b", BIND_OPTION, true, "Address to bind " +<a name="line.115"></a>
+<span class="sourceLineNo">116</span>        "the Thrift server to. [default: " + DEFAULT_BIND_ADDR + "]");<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    options.addOption("p", PORT_OPTION, true, "Port to bind to [default: " +<a name="line.117"></a>
+<span class="sourceLineNo">118</span>        DEFAULT_LISTEN_PORT + "]");<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    options.addOption("f", FRAMED_OPTION, false, "Use framed transport");<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    options.addOption("c", COMPACT_OPTION, false, "Use the compact protocol");<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    options.addOption("h", "help", false, "Print help information");<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    options.addOption(null, "infoport", true, "Port for web UI");<a name="line.122"></a>
+<span class="sourceLineNo">123</span><a name="line.123"></a>
+<span class="sourceLineNo">124</span>    options.addOption("m", MIN_WORKERS_OPTION, true,<a name="line.124"></a>
+<span class="sourceLineNo">125</span>        "The minimum number of worker threads for " +<a name="line.125"></a>
+<span class="sourceLineNo">126</span>        ImplType.THREAD_POOL.simpleClassName());<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>    options.addOption("w", MAX_WORKERS_OPTION, true,<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        "The maximum number of worker threads for " +<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        ImplType.THREAD_POOL.simpleClassName());<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>    options.addOption("q", MAX_QUEUE_SIZE_OPTION, true,<a name="line.132"></a>
+<span class="sourceLineNo">133</span>        "The maximum number of queued requests in " +<a name="line.133"></a>
+<span class="sourceLineNo">134</span>        ImplType.THREAD_POOL.simpleClassName());<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    options.addOption("k", KEEP_ALIVE_SEC_OPTION, true,<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        "The amount of time in secods to keep a thread alive when idle in " +<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        ImplType.THREAD_POOL.simpleClassName());<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>    options.addOption("t", READ_TIMEOUT_OPTION, true,<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        "Amount of time in milliseconds before a server thread will timeout " +<a name="line.141"></a>
+<span class="sourceLineNo">142</span>        "waiting for client to send data on a connected socket. Currently, " +<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        "only applies to TBoundedThreadPoolServer");<a name="line.143"></a>
+<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">145</span>    options.addOptionGroup(ImplType.createOptionGroup());<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>    CommandLineParser parser = new PosixParser();<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    CommandLine cmd = parser.parse(options, args);<a name="line.148"></a>
+<span class="sourceLineNo">149</span><a name="line.149"></a>
+<span class="sourceLineNo">150</span>    // This is so complicated to please both bin/hbase and bin/hbase-daemon.<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    // hbase-daemon provides "start" and "stop" arguments<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    // hbase should print the help if no argument is provided<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    List&lt;String&gt; commandLine = Arrays.asList(args);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    boolean stop = commandLine.contains("stop");<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    boolean start = commandLine.contains("start");<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    boolean invalidStartStop = (start &amp;&amp; stop) || (!start &amp;&amp; !stop);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    if (cmd.hasOption("help") || invalidStartStop) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      if (invalidStartStop) {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>        LOG.error("Exactly one of 'start' and 'stop' has to be specified");<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      }<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      printUsageAndExit(options, 1);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    }<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>    // Get port to bind to<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    try {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      if (cmd.hasOption(PORT_OPTION)) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        int listenPort = Integer.parseInt(cmd.getOptionValue(PORT_OPTION));<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        conf.setInt(ThriftServerRunner.PORT_CONF_KEY, listenPort);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      }<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    } catch (NumberFormatException e) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      LOG.error("Could not parse the value provided for the port option", e);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      printUsageAndExit(options, -1);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    }<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>    // check for user-defined info server port setting, if so override the conf<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    try {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      if (cmd.hasOption("infoport")) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        String val = cmd.getOptionValue("infoport");<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        conf.setInt("hbase.thrift.info.port", Integer.parseInt(val));<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        LOG.debug("Web UI port set to " + val);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    } catch (NumberFormatException e) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      LOG.error("Could not parse the value provided for the infoport option", e);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      printUsageAndExit(options, -1);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
+<span class="sourceLineNo">186</span><a name="line.186"></a>
+<span class="sourceLineNo">187</span>    // Make optional changes to the configuration based on command-line options<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    optionToConf(cmd, MIN_WORKERS_OPTION,<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        conf, TBoundedThreadPoolServer.MIN_WORKER_THREADS_CONF_KEY);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    optionToConf(cmd, MAX_WORKERS_OPTION,<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        conf, TBoundedThreadPoolServer.MAX_WORKER_THREADS_CONF_KEY);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    optionToConf(cmd, MAX_QUEUE_SIZE_OPTION,<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        conf, TBoundedThreadPoolServer.MAX_QUEUED_REQUESTS_CONF_KEY);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    optionToConf(cmd, KEEP_ALIVE_SEC_OPTION,<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        conf, TBoundedThreadPoolServer.THREAD_KEEP_ALIVE_TIME_SEC_CONF_KEY);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    optionToConf(cmd, READ_TIMEOUT_OPTION, conf,<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        ThriftServerRunner.THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    <a name="line.198"></a>
+<span class="sourceLineNo">199</span>    // Set general thrift server options<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    boolean compact = cmd.hasOption(COMPACT_OPTION) ||<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      conf.getBoolean(ThriftServerRunner.COMPACT_CONF_KEY, false);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    conf.setBoolean(ThriftServerRunner.COMPACT_CONF_KEY, compact);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    boolean framed = cmd.hasOption(FRAMED_OPTION) ||<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      conf.getBoolean(ThriftServerRunner.FRAMED_CONF_KEY, false);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    conf.setBoolean(ThriftServerRunner.FRAMED_CONF_KEY, framed);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    if (cmd.hasOption(BIND_OPTION)) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      conf.set(ThriftServerRunner.BIND_CONF_KEY, cmd.getOptionValue(BIND_OPTION));<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    }<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span>    ImplType.setServerImpl(cmd, conf);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>  }<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>  public void stop() {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    if (this.infoServer != null) {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      LOG.info("Stopping infoServer");<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      try {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        this.infoServer.stop();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      } catch (Exception ex) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        ex.printStackTrace();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      }<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    }<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    serverRunner.shutdown();<a name="line.222"></a>
+<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>  private static void optionToConf(CommandLine cmd, String option,<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      Configuration conf, String destConfKey) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    if (cmd.hasOption(option)) {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      String value = cmd.getOptionValue(option);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      LOG.info("Set configuration key:" + destConfKey + " value:" + value);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      conf.set(destConfKey, value);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    }<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>  public static void main(String [] args) throws Exception {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    LOG.info("***** STARTING service '" + ThriftServer.class.getSimpleName() + "' *****");<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    VersionInfo.logVersion();<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    int exitCode = 0;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    try {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      new ThriftServer(HBaseConfiguration.create()).doMain(args);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    } catch (ExitCodeException ex) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      exitCode = ex.getExitCode();<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    LOG.info("***** STOPPING service '" + ThriftServer.class.getSimpleName() + "' *****");<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    System.exit(exitCode);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  }<a name="line.245"></a>
+<span class="sourceLineNo">246</span>}<a name="line.246"></a>
 
 
 


[22/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html
index 1643c98..5de2e3d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html
@@ -32,134 +32,136 @@
 <span class="sourceLineNo">024</span><a name="line.24"></a>
 <span class="sourceLineNo">025</span>import org.apache.hadoop.conf.Configuration;<a name="line.25"></a>
 <span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.Abortable;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hbase.thirdparty.com.google.protobuf.CodedOutputStream;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.zookeeper.ZKConfig;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.zookeeper.KeeperException;<a name="line.36"></a>
-<span class="sourceLineNo">037</span><a name="line.37"></a>
-<span class="sourceLineNo">038</span>/**<a name="line.38"></a>
-<span class="sourceLineNo">039</span> * This is a base class for maintaining replication state in zookeeper.<a name="line.39"></a>
-<span class="sourceLineNo">040</span> */<a name="line.40"></a>
-<span class="sourceLineNo">041</span>@InterfaceAudience.Private<a name="line.41"></a>
-<span class="sourceLineNo">042</span>public abstract class ReplicationStateZKBase {<a name="line.42"></a>
-<span class="sourceLineNo">043</span><a name="line.43"></a>
-<span class="sourceLineNo">044</span>  /**<a name="line.44"></a>
-<span class="sourceLineNo">045</span>   * The name of the znode that contains the replication status of a remote slave (i.e. peer)<a name="line.45"></a>
-<span class="sourceLineNo">046</span>   * cluster.<a name="line.46"></a>
-<span class="sourceLineNo">047</span>   */<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  protected final String peerStateNodeName;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>  /** The name of the base znode that contains all replication state. */<a name="line.49"></a>
-<span class="sourceLineNo">050</span>  protected final String replicationZNode;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>  /** The name of the znode that contains a list of all remote slave (i.e. peer) clusters. */<a name="line.51"></a>
-<span class="sourceLineNo">052</span>  protected final String peersZNode;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  /** The name of the znode that contains all replication queues */<a name="line.53"></a>
-<span class="sourceLineNo">054</span>  protected final String queuesZNode;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  /** The name of the znode that contains queues of hfile references to be replicated */<a name="line.55"></a>
-<span class="sourceLineNo">056</span>  protected final String hfileRefsZNode;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>  /** The cluster key of the local cluster */<a name="line.57"></a>
-<span class="sourceLineNo">058</span>  protected final String ourClusterKey;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  /** The name of the znode that contains tableCFs */<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  protected final String tableCFsNodeName;<a name="line.60"></a>
-<span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>  protected final ZKWatcher zookeeper;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  protected final Configuration conf;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  protected final Abortable abortable;<a name="line.64"></a>
-<span class="sourceLineNo">065</span><a name="line.65"></a>
-<span class="sourceLineNo">066</span>  // Public for testing<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  public static final byte[] ENABLED_ZNODE_BYTES =<a name="line.67"></a>
-<span class="sourceLineNo">068</span>      toByteArray(ReplicationProtos.ReplicationState.State.ENABLED);<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  public static final byte[] DISABLED_ZNODE_BYTES =<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      toByteArray(ReplicationProtos.ReplicationState.State.DISABLED);<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  public static final String ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY =<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      "zookeeper.znode.replication.hfile.refs";<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  public static final String ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT = "hfile-refs";<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  public ReplicationStateZKBase(ZKWatcher zookeeper, Configuration conf,<a name="line.75"></a>
-<span class="sourceLineNo">076</span>                                Abortable abortable) {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    this.zookeeper = zookeeper;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    this.conf = conf;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    this.abortable = abortable;<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>    String replicationZNodeName = conf.get("zookeeper.znode.replication", "replication");<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    String peersZNodeName = conf.get("zookeeper.znode.replication.peers", "peers");<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    String queuesZNodeName = conf.get("zookeeper.znode.replication.rs", "rs");<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    String hfileRefsZNodeName = conf.get(ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY,<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    this.peerStateNodeName = conf.get("zookeeper.znode.replication.peers.state", "peer-state");<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    this.tableCFsNodeName = conf.get("zookeeper.znode.replication.peers.tableCFs", "tableCFs");<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    this.ourClusterKey = ZKConfig.getZooKeeperClusterKey(this.conf);<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    this.replicationZNode = ZNodePaths.joinZNode(this.zookeeper.znodePaths.baseZNode,<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      replicationZNodeName);<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    this.peersZNode = ZNodePaths.joinZNode(replicationZNode, peersZNodeName);<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    this.queuesZNode = ZNodePaths.joinZNode(replicationZNode, queuesZNodeName);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    this.hfileRefsZNode = ZNodePaths.joinZNode(replicationZNode, hfileRefsZNodeName);<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  }<a name="line.94"></a>
-<span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public List&lt;String&gt; getListOfReplicators() {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    List&lt;String&gt; result = null;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    try {<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      result = ZKUtil.listChildrenNoWatch(this.zookeeper, this.queuesZNode);<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    } catch (KeeperException e) {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      this.abortable.abort("Failed to get list of replicators", e);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    }<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    return result;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  }<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>  /**<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   * @param state<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   * @return Serialized protobuf of &lt;code&gt;state&lt;/code&gt; with pb magic prefix prepended suitable for<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   *         use as content of a peer-state znode under a peer cluster id as in<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   *         /hbase/replication/peers/PEER_ID/peer-state.<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   */<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  protected static byte[] toByteArray(final ReplicationProtos.ReplicationState.State state) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    ReplicationProtos.ReplicationState msg =<a name="line.113"></a>
-<span class="sourceLineNo">114</span>        ReplicationProtos.ReplicationState.newBuilder().setState(state).build();<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    // There is no toByteArray on this pb Message?<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    // 32 bytes is default which seems fair enough here.<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      CodedOutputStream cos = CodedOutputStream.newInstance(baos, 16);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      msg.writeTo(cos);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      cos.flush();<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      baos.flush();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      return ProtobufUtil.prependPBMagic(baos.toByteArray());<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    } catch (IOException e) {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      throw new RuntimeException(e);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>  protected boolean peerExists(String id) throws KeeperException {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    return ZKUtil.checkExists(this.zookeeper, ZNodePaths.joinZNode(this.peersZNode, id)) &gt;= 0;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  }<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  /**<a name="line.132"></a>
-<span class="sourceLineNo">133</span>   * Determine if a ZK path points to a peer node.<a name="line.133"></a>
-<span class="sourceLineNo">134</span>   * @param path path to be checked<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   * @return true if the path points to a peer node, otherwise false<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   */<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  protected boolean isPeerPath(String path) {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    return path.split("/").length == peersZNode.split("/").length + 1;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  }<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  @VisibleForTesting<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  protected String getTableCFsNode(String id) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    return ZNodePaths.joinZNode(this.peersZNode, ZNodePaths.joinZNode(id, this.tableCFsNodeName));<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  }<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>  @VisibleForTesting<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  protected String getPeerStateNode(String id) {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    return ZNodePaths.joinZNode(this.peersZNode, ZNodePaths.joinZNode(id, this.peerStateNodeName));<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  }<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  @VisibleForTesting<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  protected String getPeerNode(String id) {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    return ZNodePaths.joinZNode(this.peersZNode, id);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  }<a name="line.153"></a>
-<span class="sourceLineNo">154</span>}<a name="line.154"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.zookeeper.ZKConfig;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.zookeeper.KeeperException;<a name="line.32"></a>
+<span class="sourceLineNo">033</span><a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hbase.thirdparty.com.google.protobuf.CodedOutputStream;<a name="line.35"></a>
+<span class="sourceLineNo">036</span><a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<a name="line.38"></a>
+<span class="sourceLineNo">039</span><a name="line.39"></a>
+<span class="sourceLineNo">040</span>/**<a name="line.40"></a>
+<span class="sourceLineNo">041</span> * This is a base class for maintaining replication state in zookeeper.<a name="line.41"></a>
+<span class="sourceLineNo">042</span> */<a name="line.42"></a>
+<span class="sourceLineNo">043</span>@InterfaceAudience.Private<a name="line.43"></a>
+<span class="sourceLineNo">044</span>public abstract class ReplicationStateZKBase {<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>  /**<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   * The name of the znode that contains the replication status of a remote slave (i.e. peer)<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   * cluster.<a name="line.48"></a>
+<span class="sourceLineNo">049</span>   */<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  protected final String peerStateNodeName;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  /** The name of the base znode that contains all replication state. */<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  protected final String replicationZNode;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  /** The name of the znode that contains a list of all remote slave (i.e. peer) clusters. */<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  protected final String peersZNode;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  /** The name of the znode that contains all replication queues */<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  protected final String queuesZNode;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  /** The name of the znode that contains queues of hfile references to be replicated */<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  protected final String hfileRefsZNode;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  /** The cluster key of the local cluster */<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  protected final String ourClusterKey;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  /** The name of the znode that contains tableCFs */<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  protected final String tableCFsNodeName;<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  protected final ZKWatcher zookeeper;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  protected final Configuration conf;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  protected final Abortable abortable;<a name="line.66"></a>
+<span class="sourceLineNo">067</span><a name="line.67"></a>
+<span class="sourceLineNo">068</span>  // Public for testing<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  public static final byte[] ENABLED_ZNODE_BYTES =<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      toByteArray(ReplicationProtos.ReplicationState.State.ENABLED);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  public static final byte[] DISABLED_ZNODE_BYTES =<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      toByteArray(ReplicationProtos.ReplicationState.State.DISABLED);<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  public static final String ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY =<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      "zookeeper.znode.replication.hfile.refs";<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  public static final String ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT = "hfile-refs";<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>  public ReplicationStateZKBase(ZKWatcher zookeeper, Configuration conf,<a name="line.77"></a>
+<span class="sourceLineNo">078</span>                                Abortable abortable) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    this.zookeeper = zookeeper;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    this.conf = conf;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    this.abortable = abortable;<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>    String replicationZNodeName = conf.get("zookeeper.znode.replication", "replication");<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    String peersZNodeName = conf.get("zookeeper.znode.replication.peers", "peers");<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    String queuesZNodeName = conf.get("zookeeper.znode.replication.rs", "rs");<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    String hfileRefsZNodeName = conf.get(ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY,<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT);<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    this.peerStateNodeName = conf.get("zookeeper.znode.replication.peers.state", "peer-state");<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    this.tableCFsNodeName = conf.get("zookeeper.znode.replication.peers.tableCFs", "tableCFs");<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    this.ourClusterKey = ZKConfig.getZooKeeperClusterKey(this.conf);<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    this.replicationZNode = ZNodePaths.joinZNode(this.zookeeper.znodePaths.baseZNode,<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      replicationZNodeName);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    this.peersZNode = ZNodePaths.joinZNode(replicationZNode, peersZNodeName);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    this.queuesZNode = ZNodePaths.joinZNode(replicationZNode, queuesZNodeName);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    this.hfileRefsZNode = ZNodePaths.joinZNode(replicationZNode, hfileRefsZNodeName);<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  }<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>  public List&lt;String&gt; getListOfReplicators() {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    List&lt;String&gt; result = null;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    try {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      result = ZKUtil.listChildrenNoWatch(this.zookeeper, this.queuesZNode);<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    } catch (KeeperException e) {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      this.abortable.abort("Failed to get list of replicators", e);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    }<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    return result;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  }<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>  /**<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   * @param state the state to convert into a byte array<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   * @return Serialized protobuf of &lt;code&gt;state&lt;/code&gt; with pb magic prefix prepended suitable for<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   *         use as content of a peer-state znode under a peer cluster id as in<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   *         /hbase/replication/peers/PEER_ID/peer-state.<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   */<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  protected static byte[] toByteArray(final ReplicationProtos.ReplicationState.State state) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    ReplicationProtos.ReplicationState msg =<a name="line.115"></a>
+<span class="sourceLineNo">116</span>        ReplicationProtos.ReplicationState.newBuilder().setState(state).build();<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    // There is no toByteArray on this pb Message?<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    // 32 bytes is default which seems fair enough here.<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      CodedOutputStream cos = CodedOutputStream.newInstance(baos, 16);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      msg.writeTo(cos);<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      cos.flush();<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      baos.flush();<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      return ProtobufUtil.prependPBMagic(baos.toByteArray());<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    } catch (IOException e) {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      throw new RuntimeException(e);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    }<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  }<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>  protected boolean peerExists(String id) throws KeeperException {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    return ZKUtil.checkExists(this.zookeeper, ZNodePaths.joinZNode(this.peersZNode, id)) &gt;= 0;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span>  /**<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   * Determine if a ZK path points to a peer node.<a name="line.135"></a>
+<span class="sourceLineNo">136</span>   * @param path path to be checked<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   * @return true if the path points to a peer node, otherwise false<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   */<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  protected boolean isPeerPath(String path) {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    return path.split("/").length == peersZNode.split("/").length + 1;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  }<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  @VisibleForTesting<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  protected String getTableCFsNode(String id) {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    return ZNodePaths.joinZNode(this.peersZNode, ZNodePaths.joinZNode(id, this.tableCFsNodeName));<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  }<a name="line.146"></a>
+<span class="sourceLineNo">147</span><a name="line.147"></a>
+<span class="sourceLineNo">148</span>  @VisibleForTesting<a name="line.148"></a>
+<span class="sourceLineNo">149</span>  protected String getPeerStateNode(String id) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    return ZNodePaths.joinZNode(this.peersZNode, ZNodePaths.joinZNode(id, this.peerStateNodeName));<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  }<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  @VisibleForTesting<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  protected String getPeerNode(String id) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    return ZNodePaths.joinZNode(this.peersZNode, id);<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  }<a name="line.155"></a>
+<span class="sourceLineNo">156</span>}<a name="line.156"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTableBase.CreateReplicationTableWorker.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTableBase.CreateReplicationTableWorker.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTableBase.CreateReplicationTableWorker.html
index 1ef31b3..49ce142 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTableBase.CreateReplicationTableWorker.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTableBase.CreateReplicationTableWorker.html
@@ -26,45 +26,45 @@
 <span class="sourceLineNo">018</span>*/<a name="line.18"></a>
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.replication;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.hbase.thirdparty.com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.conf.Configuration;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.Abortable;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.HConstants;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.TableExistsException;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.TableName;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.Get;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.client.Result;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.client.Table;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.filter.CompareFilter;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.regionserver.BloomType;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.util.RetryCounterFactory;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.io.IOException;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.io.InterruptedIOException;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.util.ArrayList;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.util.Arrays;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.util.HashSet;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import java.util.List;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import java.util.Map;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import java.util.Set;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import java.util.concurrent.CountDownLatch;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import java.util.concurrent.Executor;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import java.util.concurrent.TimeUnit;<a name="line.59"></a>
+<span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.io.InterruptedIOException;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.ArrayList;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.util.Arrays;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.HashSet;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.List;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.Map;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.Set;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.concurrent.CountDownLatch;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.concurrent.Executor;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.concurrent.TimeUnit;<a name="line.33"></a>
+<span class="sourceLineNo">034</span><a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.conf.Configuration;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.Abortable;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.HConstants;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.TableExistsException;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.TableName;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Get;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.Result;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.client.Table;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.BloomType;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.RetryCounterFactory;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hbase.thirdparty.com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.59"></a>
 <span class="sourceLineNo">060</span><a name="line.60"></a>
 <span class="sourceLineNo">061</span>/*<a name="line.61"></a>
 <span class="sourceLineNo">062</span> * Abstract class that provides an interface to the Replication Table. Which is currently<a name="line.62"></a>
@@ -329,12 +329,12 @@
 <span class="sourceLineNo">321</span>   *<a name="line.321"></a>
 <span class="sourceLineNo">322</span>   * @param server name of the server<a name="line.322"></a>
 <span class="sourceLineNo">323</span>   * @return a ResultScanner over the QueueIds belonging to the server<a name="line.323"></a>
-<span class="sourceLineNo">324</span>   * @throws IOException<a name="line.324"></a>
+<span class="sourceLineNo">324</span>   * @throws IOException if getting the table or the scanner fails<a name="line.324"></a>
 <span class="sourceLineNo">325</span>   */<a name="line.325"></a>
 <span class="sourceLineNo">326</span>  protected ResultScanner getQueuesBelongingToServer(String server) throws IOException {<a name="line.326"></a>
 <span class="sourceLineNo">327</span>    Scan scan = new Scan();<a name="line.327"></a>
 <span class="sourceLineNo">328</span>    SingleColumnValueFilter filterMyQueues = new SingleColumnValueFilter(CF_QUEUE, COL_QUEUE_OWNER,<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    CompareOperator.EQUAL, Bytes.toBytes(server));<a name="line.329"></a>
+<span class="sourceLineNo">329</span>            CompareOperator.EQUAL, Bytes.toBytes(server));<a name="line.329"></a>
 <span class="sourceLineNo">330</span>    scan.setFilter(filterMyQueues);<a name="line.330"></a>
 <span class="sourceLineNo">331</span>    scan.addColumn(CF_QUEUE, COL_QUEUE_OWNER);<a name="line.331"></a>
 <span class="sourceLineNo">332</span>    scan.addColumn(CF_QUEUE, COL_QUEUE_OWNER_HISTORY);<a name="line.332"></a>
@@ -349,7 +349,7 @@
 <span class="sourceLineNo">341</span>   * the CreateReplicationWorker thread. It is up to the caller of this method to close the<a name="line.341"></a>
 <span class="sourceLineNo">342</span>   * returned Table<a name="line.342"></a>
 <span class="sourceLineNo">343</span>   * @return the Replication Table when it is created<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   * @throws IOException<a name="line.344"></a>
+<span class="sourceLineNo">344</span>   * @throws IOException if getting the table or the scanner fails<a name="line.344"></a>
 <span class="sourceLineNo">345</span>   */<a name="line.345"></a>
 <span class="sourceLineNo">346</span>  protected Table getOrBlockOnReplicationTable() throws IOException {<a name="line.346"></a>
 <span class="sourceLineNo">347</span>    // Sleep until the Replication Table becomes available<a name="line.347"></a>
@@ -367,7 +367,7 @@
 <span class="sourceLineNo">359</span>   * Creates a new copy of the Replication Table and sets up the proper Table time outs for it<a name="line.359"></a>
 <span class="sourceLineNo">360</span>   *<a name="line.360"></a>
 <span class="sourceLineNo">361</span>   * @return the Replication Table<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   * @throws IOException<a name="line.362"></a>
+<span class="sourceLineNo">362</span>   * @throws IOException if getting the table fails<a name="line.362"></a>
 <span class="sourceLineNo">363</span>   */<a name="line.363"></a>
 <span class="sourceLineNo">364</span>  private Table getAndSetUpReplicationTable() throws IOException {<a name="line.364"></a>
 <span class="sourceLineNo">365</span>    Table replicationTable = connection.getTable(REPLICATION_TABLE_NAME);<a name="line.365"></a>
@@ -421,7 +421,7 @@
 <span class="sourceLineNo">413</span>     * Create the replication table with the provided HColumnDescriptor REPLICATION_COL_DESCRIPTOR<a name="line.413"></a>
 <span class="sourceLineNo">414</span>     * in TableBasedReplicationQueuesImpl<a name="line.414"></a>
 <span class="sourceLineNo">415</span>     *<a name="line.415"></a>
-<span class="sourceLineNo">416</span>     * @throws IOException<a name="line.416"></a>
+<span class="sourceLineNo">416</span>     * @throws IOException if creating the table fails<a name="line.416"></a>
 <span class="sourceLineNo">417</span>     */<a name="line.417"></a>
 <span class="sourceLineNo">418</span>    private void createReplicationTable() throws IOException {<a name="line.418"></a>
 <span class="sourceLineNo">419</span>      HTableDescriptor replicationTableDescriptor = new HTableDescriptor(REPLICATION_TABLE_NAME);<a name="line.419"></a>
@@ -437,17 +437,16 @@
 <span class="sourceLineNo">429</span>     * Checks whether the Replication Table exists yet<a name="line.429"></a>
 <span class="sourceLineNo">430</span>     *<a name="line.430"></a>
 <span class="sourceLineNo">431</span>     * @return whether the Replication Table exists<a name="line.431"></a>
-<span class="sourceLineNo">432</span>     * @throws IOException<a name="line.432"></a>
-<span class="sourceLineNo">433</span>     */<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    private boolean replicationTableExists() {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      try {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>        return admin.tableExists(REPLICATION_TABLE_NAME);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      } catch (IOException e) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        return false;<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>}<a name="line.442"></a>
+<span class="sourceLineNo">432</span>     */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    private boolean replicationTableExists() {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      try {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>        return admin.tableExists(REPLICATION_TABLE_NAME);<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      } catch (IOException e) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        return false;<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      }<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>}<a name="line.441"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTableBase.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTableBase.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTableBase.html
index 1ef31b3..49ce142 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTableBase.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTableBase.html
@@ -26,45 +26,45 @@
 <span class="sourceLineNo">018</span>*/<a name="line.18"></a>
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.replication;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.hbase.thirdparty.com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.conf.Configuration;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.Abortable;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.HConstants;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.TableExistsException;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.TableName;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.Get;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.client.Result;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.client.Table;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.filter.CompareFilter;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.regionserver.BloomType;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.util.RetryCounterFactory;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.io.IOException;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.io.InterruptedIOException;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.util.ArrayList;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.util.Arrays;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.util.HashSet;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import java.util.List;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import java.util.Map;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import java.util.Set;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import java.util.concurrent.CountDownLatch;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import java.util.concurrent.Executor;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import java.util.concurrent.TimeUnit;<a name="line.59"></a>
+<span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.io.InterruptedIOException;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.ArrayList;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.util.Arrays;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.HashSet;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.List;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.Map;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.Set;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.concurrent.CountDownLatch;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.concurrent.Executor;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.concurrent.TimeUnit;<a name="line.33"></a>
+<span class="sourceLineNo">034</span><a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.conf.Configuration;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.Abortable;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.HConstants;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.TableExistsException;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.TableName;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Get;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.Result;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.client.Table;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.BloomType;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.RetryCounterFactory;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hbase.thirdparty.com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.59"></a>
 <span class="sourceLineNo">060</span><a name="line.60"></a>
 <span class="sourceLineNo">061</span>/*<a name="line.61"></a>
 <span class="sourceLineNo">062</span> * Abstract class that provides an interface to the Replication Table. Which is currently<a name="line.62"></a>
@@ -329,12 +329,12 @@
 <span class="sourceLineNo">321</span>   *<a name="line.321"></a>
 <span class="sourceLineNo">322</span>   * @param server name of the server<a name="line.322"></a>
 <span class="sourceLineNo">323</span>   * @return a ResultScanner over the QueueIds belonging to the server<a name="line.323"></a>
-<span class="sourceLineNo">324</span>   * @throws IOException<a name="line.324"></a>
+<span class="sourceLineNo">324</span>   * @throws IOException if getting the table or the scanner fails<a name="line.324"></a>
 <span class="sourceLineNo">325</span>   */<a name="line.325"></a>
 <span class="sourceLineNo">326</span>  protected ResultScanner getQueuesBelongingToServer(String server) throws IOException {<a name="line.326"></a>
 <span class="sourceLineNo">327</span>    Scan scan = new Scan();<a name="line.327"></a>
 <span class="sourceLineNo">328</span>    SingleColumnValueFilter filterMyQueues = new SingleColumnValueFilter(CF_QUEUE, COL_QUEUE_OWNER,<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    CompareOperator.EQUAL, Bytes.toBytes(server));<a name="line.329"></a>
+<span class="sourceLineNo">329</span>            CompareOperator.EQUAL, Bytes.toBytes(server));<a name="line.329"></a>
 <span class="sourceLineNo">330</span>    scan.setFilter(filterMyQueues);<a name="line.330"></a>
 <span class="sourceLineNo">331</span>    scan.addColumn(CF_QUEUE, COL_QUEUE_OWNER);<a name="line.331"></a>
 <span class="sourceLineNo">332</span>    scan.addColumn(CF_QUEUE, COL_QUEUE_OWNER_HISTORY);<a name="line.332"></a>
@@ -349,7 +349,7 @@
 <span class="sourceLineNo">341</span>   * the CreateReplicationWorker thread. It is up to the caller of this method to close the<a name="line.341"></a>
 <span class="sourceLineNo">342</span>   * returned Table<a name="line.342"></a>
 <span class="sourceLineNo">343</span>   * @return the Replication Table when it is created<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   * @throws IOException<a name="line.344"></a>
+<span class="sourceLineNo">344</span>   * @throws IOException if getting the table or the scanner fails<a name="line.344"></a>
 <span class="sourceLineNo">345</span>   */<a name="line.345"></a>
 <span class="sourceLineNo">346</span>  protected Table getOrBlockOnReplicationTable() throws IOException {<a name="line.346"></a>
 <span class="sourceLineNo">347</span>    // Sleep until the Replication Table becomes available<a name="line.347"></a>
@@ -367,7 +367,7 @@
 <span class="sourceLineNo">359</span>   * Creates a new copy of the Replication Table and sets up the proper Table time outs for it<a name="line.359"></a>
 <span class="sourceLineNo">360</span>   *<a name="line.360"></a>
 <span class="sourceLineNo">361</span>   * @return the Replication Table<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   * @throws IOException<a name="line.362"></a>
+<span class="sourceLineNo">362</span>   * @throws IOException if getting the table fails<a name="line.362"></a>
 <span class="sourceLineNo">363</span>   */<a name="line.363"></a>
 <span class="sourceLineNo">364</span>  private Table getAndSetUpReplicationTable() throws IOException {<a name="line.364"></a>
 <span class="sourceLineNo">365</span>    Table replicationTable = connection.getTable(REPLICATION_TABLE_NAME);<a name="line.365"></a>
@@ -421,7 +421,7 @@
 <span class="sourceLineNo">413</span>     * Create the replication table with the provided HColumnDescriptor REPLICATION_COL_DESCRIPTOR<a name="line.413"></a>
 <span class="sourceLineNo">414</span>     * in TableBasedReplicationQueuesImpl<a name="line.414"></a>
 <span class="sourceLineNo">415</span>     *<a name="line.415"></a>
-<span class="sourceLineNo">416</span>     * @throws IOException<a name="line.416"></a>
+<span class="sourceLineNo">416</span>     * @throws IOException if creating the table fails<a name="line.416"></a>
 <span class="sourceLineNo">417</span>     */<a name="line.417"></a>
 <span class="sourceLineNo">418</span>    private void createReplicationTable() throws IOException {<a name="line.418"></a>
 <span class="sourceLineNo">419</span>      HTableDescriptor replicationTableDescriptor = new HTableDescriptor(REPLICATION_TABLE_NAME);<a name="line.419"></a>
@@ -437,17 +437,16 @@
 <span class="sourceLineNo">429</span>     * Checks whether the Replication Table exists yet<a name="line.429"></a>
 <span class="sourceLineNo">430</span>     *<a name="line.430"></a>
 <span class="sourceLineNo">431</span>     * @return whether the Replication Table exists<a name="line.431"></a>
-<span class="sourceLineNo">432</span>     * @throws IOException<a name="line.432"></a>
-<span class="sourceLineNo">433</span>     */<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    private boolean replicationTableExists() {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      try {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>        return admin.tableExists(REPLICATION_TABLE_NAME);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      } catch (IOException e) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        return false;<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>}<a name="line.442"></a>
+<span class="sourceLineNo">432</span>     */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    private boolean replicationTableExists() {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      try {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>        return admin.tableExists(REPLICATION_TABLE_NAME);<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      } catch (IOException e) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        return false;<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      }<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>}<a name="line.441"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTracker.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTracker.html
index cae7b0a..5780e8b 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTracker.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTracker.html
@@ -43,7 +43,7 @@
 <span class="sourceLineNo">035</span><a name="line.35"></a>
 <span class="sourceLineNo">036</span>  /**<a name="line.36"></a>
 <span class="sourceLineNo">037</span>   * Register a replication listener to receive replication events.<a name="line.37"></a>
-<span class="sourceLineNo">038</span>   * @param listener<a name="line.38"></a>
+<span class="sourceLineNo">038</span>   * @param listener the listener to register<a name="line.38"></a>
 <span class="sourceLineNo">039</span>   */<a name="line.39"></a>
 <span class="sourceLineNo">040</span>  public void registerListener(ReplicationListener listener);<a name="line.40"></a>
 <span class="sourceLineNo">041</span><a name="line.41"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.OtherRegionServerWatcher.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.OtherRegionServerWatcher.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.OtherRegionServerWatcher.html
index c79cc41..da921c8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.OtherRegionServerWatcher.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.OtherRegionServerWatcher.html
@@ -30,13 +30,13 @@
 <span class="sourceLineNo">022</span>import java.util.List;<a name="line.22"></a>
 <span class="sourceLineNo">023</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.zookeeper.ZKListener;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.conf.Configuration;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.Abortable;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.Stoppable;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.31"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.conf.Configuration;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.Abortable;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.Stoppable;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.zookeeper.ZKListener;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>import org.apache.zookeeper.KeeperException;<a name="line.32"></a>
 <span class="sourceLineNo">033</span>import org.slf4j.Logger;<a name="line.33"></a>
 <span class="sourceLineNo">034</span>import org.slf4j.LoggerFactory;<a name="line.34"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.PeersWatcher.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.PeersWatcher.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.PeersWatcher.html
index c79cc41..da921c8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.PeersWatcher.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.PeersWatcher.html
@@ -30,13 +30,13 @@
 <span class="sourceLineNo">022</span>import java.util.List;<a name="line.22"></a>
 <span class="sourceLineNo">023</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.zookeeper.ZKListener;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.conf.Configuration;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.Abortable;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.Stoppable;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.31"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.conf.Configuration;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.Abortable;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.Stoppable;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.zookeeper.ZKListener;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>import org.apache.zookeeper.KeeperException;<a name="line.32"></a>
 <span class="sourceLineNo">033</span>import org.slf4j.Logger;<a name="line.33"></a>
 <span class="sourceLineNo">034</span>import org.slf4j.LoggerFactory;<a name="line.34"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.html
index c79cc41..da921c8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.html
@@ -30,13 +30,13 @@
 <span class="sourceLineNo">022</span>import java.util.List;<a name="line.22"></a>
 <span class="sourceLineNo">023</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.zookeeper.ZKListener;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.conf.Configuration;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.Abortable;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.Stoppable;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.31"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.conf.Configuration;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.Abortable;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.Stoppable;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.zookeeper.ZKListener;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>import org.apache.zookeeper.KeeperException;<a name="line.32"></a>
 <span class="sourceLineNo">033</span>import org.slf4j.Logger;<a name="line.33"></a>
 <span class="sourceLineNo">034</span>import org.slf4j.LoggerFactory;<a name="line.34"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html
index 540b675..c61210b 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html
@@ -42,7 +42,7 @@
 <span class="sourceLineNo">034</span> * time of each call to ThriftMetrics.<a name="line.34"></a>
 <span class="sourceLineNo">035</span> */<a name="line.35"></a>
 <span class="sourceLineNo">036</span>@InterfaceAudience.Private<a name="line.36"></a>
-<span class="sourceLineNo">037</span>public class HbaseHandlerMetricsProxy implements InvocationHandler {<a name="line.37"></a>
+<span class="sourceLineNo">037</span>public final class HbaseHandlerMetricsProxy implements InvocationHandler {<a name="line.37"></a>
 <span class="sourceLineNo">038</span><a name="line.38"></a>
 <span class="sourceLineNo">039</span>  private static final Logger LOG = LoggerFactory.getLogger(<a name="line.39"></a>
 <span class="sourceLineNo">040</span>      HbaseHandlerMetricsProxy.class);<a name="line.40"></a>


[24/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html
index 1ebcb9e..16f5282 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html
@@ -43,518 +43,522 @@
 <span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.TableName;<a name="line.35"></a>
 <span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.client.replication.ReplicationPeerConfigUtil;<a name="line.36"></a>
 <span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.replication.ReplicationPeer.PeerState;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.zookeeper.ZKConfig;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.zookeeper.KeeperException;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.slf4j.Logger;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.slf4j.LoggerFactory;<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>/**<a name="line.51"></a>
-<span class="sourceLineNo">052</span> * This class provides an implementation of the ReplicationPeers interface using ZooKeeper. The<a name="line.52"></a>
-<span class="sourceLineNo">053</span> * peers znode contains a list of all peer replication clusters and the current replication state of<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * those clusters. It has one child peer znode for each peer cluster. The peer znode is named with<a name="line.54"></a>
-<span class="sourceLineNo">055</span> * the cluster id provided by the user in the HBase shell. The value of the peer znode contains the<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * peers cluster key provided by the user in the HBase Shell. The cluster key contains a list of<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * zookeeper quorum peers, the client port for the zookeeper quorum, and the base znode for HBase.<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * For example:<a name="line.58"></a>
-<span class="sourceLineNo">059</span> *<a name="line.59"></a>
-<span class="sourceLineNo">060</span> *  /hbase/replication/peers/1 [Value: zk1.host.com,zk2.host.com,zk3.host.com:2181:/hbase]<a name="line.60"></a>
-<span class="sourceLineNo">061</span> *  /hbase/replication/peers/2 [Value: zk5.host.com,zk6.host.com,zk7.host.com:2181:/hbase]<a name="line.61"></a>
-<span class="sourceLineNo">062</span> *<a name="line.62"></a>
-<span class="sourceLineNo">063</span> * Each of these peer znodes has a child znode that indicates whether or not replication is enabled<a name="line.63"></a>
-<span class="sourceLineNo">064</span> * on that peer cluster. These peer-state znodes do not have child znodes and simply contain a<a name="line.64"></a>
-<span class="sourceLineNo">065</span> * boolean value (i.e. ENABLED or DISABLED). This value is read/maintained by the<a name="line.65"></a>
-<span class="sourceLineNo">066</span> * ReplicationPeer.PeerStateTracker class. For example:<a name="line.66"></a>
-<span class="sourceLineNo">067</span> *<a name="line.67"></a>
-<span class="sourceLineNo">068</span> * /hbase/replication/peers/1/peer-state [Value: ENABLED]<a name="line.68"></a>
-<span class="sourceLineNo">069</span> *<a name="line.69"></a>
-<span class="sourceLineNo">070</span> * Each of these peer znodes has a child znode that indicates which data will be replicated<a name="line.70"></a>
-<span class="sourceLineNo">071</span> * to the peer cluster. These peer-tableCFs znodes do not have child znodes and only have a<a name="line.71"></a>
-<span class="sourceLineNo">072</span> * table/cf list config. This value is read/maintained by the ReplicationPeer.TableCFsTracker<a name="line.72"></a>
-<span class="sourceLineNo">073</span> * class. For example:<a name="line.73"></a>
-<span class="sourceLineNo">074</span> *<a name="line.74"></a>
-<span class="sourceLineNo">075</span> * /hbase/replication/peers/1/tableCFs [Value: "table1; table2:cf1,cf3; table3:cfx,cfy"]<a name="line.75"></a>
-<span class="sourceLineNo">076</span> */<a name="line.76"></a>
-<span class="sourceLineNo">077</span>@InterfaceAudience.Private<a name="line.77"></a>
-<span class="sourceLineNo">078</span>public class ReplicationPeersZKImpl extends ReplicationStateZKBase implements ReplicationPeers {<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  // Map of peer clusters keyed by their id<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  private Map&lt;String, ReplicationPeerZKImpl&gt; peerClusters;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  private final ReplicationQueuesClient queuesClient;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  private Abortable abortable;<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>  private static final Logger LOG = LoggerFactory.getLogger(ReplicationPeersZKImpl.class);<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>  public ReplicationPeersZKImpl(final ZKWatcher zk, final Configuration conf,<a name="line.87"></a>
-<span class="sourceLineNo">088</span>                                final ReplicationQueuesClient queuesClient, Abortable abortable) {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    super(zk, conf, abortable);<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    this.abortable = abortable;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    this.peerClusters = new ConcurrentHashMap&lt;&gt;();<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    this.queuesClient = queuesClient;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  }<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  @Override<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public void init() throws ReplicationException {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    try {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      if (ZKUtil.checkExists(this.zookeeper, this.peersZNode) &lt; 0) {<a name="line.98"></a>
-<span class="sourceLineNo">099</span>        ZKUtil.createWithParents(this.zookeeper, this.peersZNode);<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      }<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    } catch (KeeperException e) {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      throw new ReplicationException("Could not initialize replication peers", e);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    }<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    addExistingPeers();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  }<a name="line.105"></a>
-<span class="sourceLineNo">106</span><a name="line.106"></a>
-<span class="sourceLineNo">107</span>  @Override<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  public void registerPeer(String id, ReplicationPeerConfig peerConfig, boolean enabled)<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      throws ReplicationException {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    try {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      if (peerExists(id)) {<a name="line.111"></a>
-<span class="sourceLineNo">112</span>        throw new IllegalArgumentException("Cannot add a peer with id=" + id<a name="line.112"></a>
-<span class="sourceLineNo">113</span>            + " because that id already exists.");<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      }<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span>      if(id.contains("-")){<a name="line.116"></a>
-<span class="sourceLineNo">117</span>        throw new IllegalArgumentException("Found invalid peer name:" + id);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      }<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>      if (peerConfig.getClusterKey() != null) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>        try {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>          ZKConfig.validateClusterKey(peerConfig.getClusterKey());<a name="line.122"></a>
-<span class="sourceLineNo">123</span>        } catch (IOException ioe) {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>          throw new IllegalArgumentException(ioe.getMessage());<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        }<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      }<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>      checkQueuesDeleted(id);<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>      ZKUtil.createWithParents(this.zookeeper, this.peersZNode);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>      List&lt;ZKUtilOp&gt; listOfOps = new ArrayList&lt;&gt;(2);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      ZKUtilOp op1 =<a name="line.133"></a>
-<span class="sourceLineNo">134</span>          ZKUtilOp.createAndFailSilent(getPeerNode(id),<a name="line.134"></a>
-<span class="sourceLineNo">135</span>            ReplicationPeerConfigUtil.toByteArray(peerConfig));<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      ZKUtilOp op2 =<a name="line.136"></a>
-<span class="sourceLineNo">137</span>          ZKUtilOp.createAndFailSilent(getPeerStateNode(id), enabled ? ENABLED_ZNODE_BYTES<a name="line.137"></a>
-<span class="sourceLineNo">138</span>              : DISABLED_ZNODE_BYTES);<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      listOfOps.add(op1);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      listOfOps.add(op2);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      ZKUtil.multiOrSequential(this.zookeeper, listOfOps, false);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    } catch (KeeperException e) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      throw new ReplicationException("Could not add peer with id=" + id + ", peerConfif=&gt;"<a name="line.143"></a>
-<span class="sourceLineNo">144</span>          + peerConfig + ", state=" + (enabled ? "ENABLED" : "DISABLED"), e);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    }<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  }<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>  @Override<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  public void unregisterPeer(String id) throws ReplicationException {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    try {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      if (!peerExists(id)) {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        throw new IllegalArgumentException("Cannot remove peer with id=" + id<a name="line.152"></a>
-<span class="sourceLineNo">153</span>            + " because that id does not exist.");<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      }<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      ZKUtil.deleteNodeRecursively(this.zookeeper, ZNodePaths.joinZNode(this.peersZNode, id));<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    } catch (KeeperException e) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      throw new ReplicationException("Could not remove peer with id=" + id, e);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
-<span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  @Override<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  public void enablePeer(String id) throws ReplicationException {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    changePeerState(id, ReplicationProtos.ReplicationState.State.ENABLED);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    LOG.info("peer " + id + " is enabled");<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  }<a name="line.165"></a>
-<span class="sourceLineNo">166</span><a name="line.166"></a>
-<span class="sourceLineNo">167</span>  @Override<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  public void disablePeer(String id) throws ReplicationException {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    changePeerState(id, ReplicationProtos.ReplicationState.State.DISABLED);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    LOG.info("peer " + id + " is disabled");<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  @Override<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public Map&lt;TableName, List&lt;String&gt;&gt; getPeerTableCFsConfig(String id) throws ReplicationException {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    try {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      if (!peerExists(id)) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>        throw new IllegalArgumentException("peer " + id + " doesn't exist");<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      }<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      try {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        ReplicationPeerConfig rpc = getReplicationPeerConfig(id);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        if (rpc == null) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          throw new ReplicationException("Unable to get tableCFs of the peer with id=" + id);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>        return rpc.getTableCFsMap();<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      } catch (Exception e) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>        throw new ReplicationException(e);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    } catch (KeeperException e) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      throw new ReplicationException("Unable to get tableCFs of the peer with id=" + id, e);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>  @Override<a name="line.193"></a>
-<span class="sourceLineNo">194</span>  public void setPeerTableCFsConfig(String id,<a name="line.194"></a>
-<span class="sourceLineNo">195</span>                                    Map&lt;TableName, ? extends Collection&lt;String&gt;&gt;  tableCFs)<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      throws ReplicationException {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    try {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      if (!peerExists(id)) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        throw new IllegalArgumentException("Cannot set peer tableCFs because id=" + id<a name="line.199"></a>
-<span class="sourceLineNo">200</span>            + " does not exist.");<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      }<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      ReplicationPeerConfig rpc = getReplicationPeerConfig(id);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      if (rpc == null) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        throw new ReplicationException("Unable to get tableCFs of the peer with id=" + id);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      rpc.setTableCFsMap(tableCFs);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      ZKUtil.setData(this.zookeeper, getPeerNode(id),<a name="line.207"></a>
-<span class="sourceLineNo">208</span>          ReplicationPeerConfigUtil.toByteArray(rpc));<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      LOG.info("Peer tableCFs with id= " + id + " is now " +<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        ReplicationPeerConfigUtil.convertToString(tableCFs));<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    } catch (KeeperException e) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      throw new ReplicationException("Unable to change tableCFs of the peer with id=" + id, e);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    }<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  @Override<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  public boolean getStatusOfPeer(String id) {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    ReplicationPeer replicationPeer = this.peerClusters.get(id);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    if (replicationPeer == null) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      throw new IllegalArgumentException("Peer with id= " + id + " is not cached");<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    }<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    return replicationPeer.getPeerState() == PeerState.ENABLED;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>  @Override<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  public boolean getStatusOfPeerFromBackingStore(String id) throws ReplicationException {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    try {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      if (!peerExists(id)) {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>        throw new IllegalArgumentException("peer " + id + " doesn't exist");<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      }<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      String peerStateZNode = getPeerStateNode(id);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      try {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>        return ReplicationPeerZKImpl.isStateEnabled(ZKUtil.getData(this.zookeeper, peerStateZNode));<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      } catch (KeeperException e) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        throw new ReplicationException(e);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      } catch (DeserializationException e) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        throw new ReplicationException(e);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      }<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    } catch (KeeperException e) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      throw new ReplicationException("Unable to get status of the peer with id=" + id +<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          " from backing store", e);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    } catch (InterruptedException e) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      throw new ReplicationException(e);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  }<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>  @Override<a name="line.247"></a>
-<span class="sourceLineNo">248</span>  public Map&lt;String, ReplicationPeerConfig&gt; getAllPeerConfigs() {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    Map&lt;String, ReplicationPeerConfig&gt; peers = new TreeMap&lt;&gt;();<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    List&lt;String&gt; ids = null;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    try {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      ids = ZKUtil.listChildrenNoWatch(this.zookeeper, this.peersZNode);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      for (String id : ids) {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        ReplicationPeerConfig peerConfig = getReplicationPeerConfig(id);<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        if (peerConfig == null) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          LOG.warn("Failed to get replication peer configuration of clusterid=" + id<a name="line.256"></a>
-<span class="sourceLineNo">257</span>            + " znode content, continuing.");<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          continue;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        peers.put(id, peerConfig);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    } catch (KeeperException e) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      this.abortable.abort("Cannot get the list of peers ", e);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    } catch (ReplicationException e) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      this.abortable.abort("Cannot get the list of peers ", e);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    return peers;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  }<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>  @Override<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  public ReplicationPeer getConnectedPeer(String peerId) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    return peerClusters.get(peerId);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  }<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>  @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public Set&lt;String&gt; getConnectedPeerIds() {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return peerClusters.keySet(); // this is not thread-safe<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>  /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * Returns a ReplicationPeerConfig from the znode or null for the given peerId.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   */<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  @Override<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public ReplicationPeerConfig getReplicationPeerConfig(String peerId)<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      throws ReplicationException {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    String znode = getPeerNode(peerId);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    byte[] data = null;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    try {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      data = ZKUtil.getData(this.zookeeper, znode);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    } catch (InterruptedException e) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      LOG.warn("Could not get configuration for peer because the thread " +<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          "was interrupted. peerId=" + peerId);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      Thread.currentThread().interrupt();<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      return null;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    } catch (KeeperException e) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      throw new ReplicationException("Error getting configuration for peer with id="<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          + peerId, e);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    if (data == null) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      LOG.error("Could not get configuration for peer because it doesn't exist. peerId=" + peerId);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      return null;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    }<a name="line.302"></a>
-<span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>    try {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      return ReplicationPeerConfigUtil.parsePeerFrom(data);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    } catch (DeserializationException e) {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      LOG.warn("Failed to parse cluster key from peerId=" + peerId<a name="line.307"></a>
-<span class="sourceLineNo">308</span>          + ", specifically the content from the following znode: " + znode);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      return null;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  }<a name="line.311"></a>
-<span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>  @Override<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  public Pair&lt;ReplicationPeerConfig, Configuration&gt; getPeerConf(String peerId)<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      throws ReplicationException {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    ReplicationPeerConfig peerConfig = getReplicationPeerConfig(peerId);<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>    if (peerConfig == null) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      return null;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    }<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>    Configuration otherConf;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    try {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      otherConf = HBaseConfiguration.createClusterConf(this.conf, peerConfig.getClusterKey());<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    } catch (IOException e) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      LOG.error("Can't get peer configuration for peerId=" + peerId + " because:", e);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      return null;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    if (!peerConfig.getConfiguration().isEmpty()) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      CompoundConfiguration compound = new CompoundConfiguration();<a name="line.331"></a>
-<span class="sourceLineNo">332</span>      compound.add(otherConf);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      compound.addStringMap(peerConfig.getConfiguration());<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      return new Pair&lt;&gt;(peerConfig, compound);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>    return new Pair&lt;&gt;(peerConfig, otherConf);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>  @Override<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  public void updatePeerConfig(String id, ReplicationPeerConfig newConfig)<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      throws ReplicationException {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    ReplicationPeer peer = getConnectedPeer(id);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    if (peer == null){<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      throw new ReplicationException("Could not find peer Id " + id + " in connected peers");<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    ReplicationPeerConfig existingConfig = peer.getPeerConfig();<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    if (newConfig.getClusterKey() != null &amp;&amp; !newConfig.getClusterKey().isEmpty() &amp;&amp;<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        !newConfig.getClusterKey().equals(existingConfig.getClusterKey())){<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      throw new ReplicationException("Changing the cluster key on an existing peer is not allowed."<a name="line.350"></a>
-<span class="sourceLineNo">351</span>          + " Existing key '" + existingConfig.getClusterKey() + "' does not match new key '"<a name="line.351"></a>
-<span class="sourceLineNo">352</span>          + newConfig.getClusterKey() +<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      "'");<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    }<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    String existingEndpointImpl = existingConfig.getReplicationEndpointImpl();<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    if (newConfig.getReplicationEndpointImpl() != null &amp;&amp;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        !newConfig.getReplicationEndpointImpl().isEmpty() &amp;&amp;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        !newConfig.getReplicationEndpointImpl().equals(existingEndpointImpl)){<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      throw new ReplicationException("Changing the replication endpoint implementation class " +<a name="line.359"></a>
-<span class="sourceLineNo">360</span>          "on an existing peer is not allowed. Existing class '"<a name="line.360"></a>
-<span class="sourceLineNo">361</span>          + existingConfig.getReplicationEndpointImpl()<a name="line.361"></a>
-<span class="sourceLineNo">362</span>          + "' does not match new class '" + newConfig.getReplicationEndpointImpl() + "'");<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    }<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    // Update existingConfig's peer config and peer data with the new values, but don't touch config<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    // or data that weren't explicitly changed<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    ReplicationPeerConfigBuilder builder = ReplicationPeerConfig.newBuilder(existingConfig);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    builder.putAllConfiguration(newConfig.getConfiguration())<a name="line.367"></a>
-<span class="sourceLineNo">368</span>        .putAllPeerData(newConfig.getPeerData())<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        .setReplicateAllUserTables(newConfig.replicateAllUserTables())<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        .setNamespaces(newConfig.getNamespaces()).setTableCFsMap(newConfig.getTableCFsMap())<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        .setExcludeNamespaces(newConfig.getExcludeNamespaces())<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        .setExcludeTableCFsMap(newConfig.getExcludeTableCFsMap())<a name="line.372"></a>
-<span class="sourceLineNo">373</span>        .setBandwidth(newConfig.getBandwidth());<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>    try {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      ZKUtil.setData(this.zookeeper, getPeerNode(id),<a name="line.376"></a>
-<span class="sourceLineNo">377</span>          ReplicationPeerConfigUtil.toByteArray(builder.build()));<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    catch(KeeperException ke){<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      throw new ReplicationException("There was a problem trying to save changes to the " +<a name="line.380"></a>
-<span class="sourceLineNo">381</span>          "replication peer " + id, ke);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    }<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>  /**<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   * List all registered peer clusters and set a watch on their znodes.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   */<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  @Override<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  public List&lt;String&gt; getAllPeerIds() {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    List&lt;String&gt; ids = null;<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    try {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      ids = ZKUtil.listChildrenAndWatchThem(this.zookeeper, this.peersZNode);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    } catch (KeeperException e) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      this.abortable.abort("Cannot get the list of peers ", e);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    return ids;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  }<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  /**<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * A private method used during initialization. This method attempts to add all registered<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * peer clusters. This method does not set a watch on the peer cluster znodes.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  private void addExistingPeers() throws ReplicationException {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    List&lt;String&gt; znodes = null;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    try {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      znodes = ZKUtil.listChildrenNoWatch(this.zookeeper, this.peersZNode);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    } catch (KeeperException e) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      throw new ReplicationException("Error getting the list of peer clusters.", e);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    }<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    if (znodes != null) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      for (String z : znodes) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        createAndAddPeer(z);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    }<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  }<a name="line.415"></a>
-<span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>  @Override<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  public boolean peerConnected(String peerId) throws ReplicationException {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    return createAndAddPeer(peerId);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  }<a name="line.420"></a>
-<span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>  @Override<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  public void peerDisconnected(String peerId) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    ReplicationPeer rp = this.peerClusters.get(peerId);<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    if (rp != null) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      ((ConcurrentMap&lt;String, ReplicationPeerZKImpl&gt;) peerClusters).remove(peerId, rp);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>  }<a name="line.428"></a>
-<span class="sourceLineNo">429</span><a name="line.429"></a>
-<span class="sourceLineNo">430</span>  /**<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * Attempt to connect to a new remote slave cluster.<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   * @param peerId a short that identifies the cluster<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * @return true if a new connection was made, false if no new connection was made.<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   */<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  public boolean createAndAddPeer(String peerId) throws ReplicationException {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    if (peerClusters == null) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      return false;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    }<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    if (this.peerClusters.containsKey(peerId)) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      return false;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
-<span class="sourceLineNo">442</span><a name="line.442"></a>
-<span class="sourceLineNo">443</span>    ReplicationPeerZKImpl peer = null;<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    try {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      peer = createPeer(peerId);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    } catch (Exception e) {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      throw new ReplicationException("Error adding peer with id=" + peerId, e);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    }<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    if (peer == null) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      return false;<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    }<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    ReplicationPeerZKImpl previous =<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      ((ConcurrentMap&lt;String, ReplicationPeerZKImpl&gt;) peerClusters).putIfAbsent(peerId, peer);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    if (previous == null) {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      LOG.info("Added new peer cluster=" + peer.getPeerConfig().getClusterKey());<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    } else {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      LOG.info("Peer already present, " + previous.getPeerConfig().getClusterKey() +<a name="line.457"></a>
-<span class="sourceLineNo">458</span>        ", new cluster=" + peer.getPeerConfig().getClusterKey());<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    }<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    return true;<a name="line.460"></a>
-<span class="sourceLineNo">461</span>  }<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>  /**<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * Update the state znode of a peer cluster.<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   * @param id<a name="line.465"></a>
-<span class="sourceLineNo">466</span>   * @param state<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   */<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  private void changePeerState(String id, ReplicationProtos.ReplicationState.State state)<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      throws ReplicationException {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    try {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      if (!peerExists(id)) {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>        throw new IllegalArgumentException("Cannot enable/disable peer because id=" + id<a name="line.472"></a>
-<span class="sourceLineNo">473</span>            + " does not exist.");<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      }<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      String peerStateZNode = getPeerStateNode(id);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      byte[] stateBytes =<a name="line.476"></a>
-<span class="sourceLineNo">477</span>          (state == ReplicationProtos.ReplicationState.State.ENABLED) ? ENABLED_ZNODE_BYTES<a name="line.477"></a>
-<span class="sourceLineNo">478</span>              : DISABLED_ZNODE_BYTES;<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      if (ZKUtil.checkExists(this.zookeeper, peerStateZNode) != -1) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        ZKUtil.setData(this.zookeeper, peerStateZNode, stateBytes);<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      } else {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>        ZKUtil.createAndWatch(this.zookeeper, peerStateZNode, stateBytes);<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      }<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      LOG.info("Peer with id= " + id + " is now " + state.name());<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    } catch (KeeperException e) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      throw new ReplicationException("Unable to change state of the peer with id=" + id, e);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    }<a name="line.487"></a>
-<span class="sourceLineNo">488</span>  }<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>  /**<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * Helper method to connect to a peer<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * @param peerId peer's identifier<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * @return object representing the peer<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * @throws ReplicationException<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   */<a name="line.495"></a>
-<span class="sourceLineNo">496</span>  private ReplicationPeerZKImpl createPeer(String peerId) throws ReplicationException {<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    Pair&lt;ReplicationPeerConfig, Configuration&gt; pair = getPeerConf(peerId);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    if (pair == null) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      return null;<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    }<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    Configuration peerConf = pair.getSecond();<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>    ReplicationPeerZKImpl peer = new ReplicationPeerZKImpl(zookeeper,<a name="line.503"></a>
-<span class="sourceLineNo">504</span>        peerConf, peerId, pair.getFirst(), abortable);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    try {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      peer.startStateTracker(this.getPeerStateNode(peerId));<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    } catch (KeeperException e) {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      throw new ReplicationException("Error starting the peer state tracker for peerId=" +<a name="line.508"></a>
-<span class="sourceLineNo">509</span>          peerId, e);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    }<a name="line.510"></a>
-<span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span>    try {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      peer.startPeerConfigTracker(this.getPeerNode(peerId));<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    } catch (KeeperException e) {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      throw new ReplicationException("Error starting the peer tableCFs tracker for peerId=" +<a name="line.515"></a>
-<span class="sourceLineNo">516</span>          peerId, e);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    }<a name="line.517"></a>
-<span class="sourceLineNo">518</span><a name="line.518"></a>
-<span class="sourceLineNo">519</span>    return peer;<a name="line.519"></a>
-<span class="sourceLineNo">520</span>  }<a name="line.520"></a>
-<span class="sourceLineNo">521</span><a name="line.521"></a>
-<span class="sourceLineNo">522</span>  private void checkQueuesDeleted(String peerId) throws ReplicationException {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    if (queuesClient == null) return;<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    try {<a name="line.524"></a>
-<span class="sourceLineNo">525</span>      List&lt;String&gt; replicators = queuesClient.getListOfReplicators();<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      if (replicators == null || replicators.isEmpty()) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>        return;<a name="line.527"></a>
-<span class="sourceLineNo">528</span>      }<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      for (String replicator : replicators) {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>        List&lt;String&gt; queueIds = queuesClient.getAllQueues(replicator);<a name="line.530"></a>
-<span class="sourceLineNo">531</span>        for (String queueId : queueIds) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>          ReplicationQueueInfo queueInfo = new ReplicationQueueInfo(queueId);<a name="line.532"></a>
-<span class="sourceLineNo">533</span>          if (queueInfo.getPeerId().equals(peerId)) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>            throw new ReplicationException("undeleted queue for peerId: " + peerId<a name="line.534"></a>
-<span class="sourceLineNo">535</span>                + ", replicator: " + replicator + ", queueId: " + queueId);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>          }<a name="line.536"></a>
-<span class="sourceLineNo">537</span>        }<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      }<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      // Check for hfile-refs queue<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      if (-1 != ZKUtil.checkExists(zookeeper, hfileRefsZNode)<a name="line.540"></a>
-<span class="sourceLineNo">541</span>          &amp;&amp; queuesClient.getAllPeersFromHFileRefsQueue().contains(peerId)) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>        throw new ReplicationException("Undeleted queue for peerId: " + peerId<a name="line.542"></a>
-<span class="sourceLineNo">543</span>            + ", found in hfile-refs node path " + hfileRefsZNode);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>      }<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    } catch (KeeperException e) {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      throw new ReplicationException("Could not check queues deleted with id=" + peerId, e);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    }<a name="line.547"></a>
-<span class="sourceLineNo">548</span>  }<a name="line.548"></a>
-<span class="sourceLineNo">549</span>}<a name="line.549"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.replication.ReplicationPeer.PeerState;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.zookeeper.ZKConfig;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.zookeeper.KeeperException;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.slf4j.Logger;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.slf4j.LoggerFactory;<a name="line.48"></a>
+<span class="sourceLineNo">049</span><a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>/**<a name="line.52"></a>
+<span class="sourceLineNo">053</span> * This class provides an implementation of the ReplicationPeers interface using ZooKeeper. The<a name="line.53"></a>
+<span class="sourceLineNo">054</span> * peers znode contains a list of all peer replication clusters and the current replication state of<a name="line.54"></a>
+<span class="sourceLineNo">055</span> * those clusters. It has one child peer znode for each peer cluster. The peer znode is named with<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * the cluster id provided by the user in the HBase shell. The value of the peer znode contains the<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * peers cluster key provided by the user in the HBase Shell. The cluster key contains a list of<a name="line.57"></a>
+<span class="sourceLineNo">058</span> * zookeeper quorum peers, the client port for the zookeeper quorum, and the base znode for HBase.<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * For example:<a name="line.59"></a>
+<span class="sourceLineNo">060</span> *<a name="line.60"></a>
+<span class="sourceLineNo">061</span> *  /hbase/replication/peers/1 [Value: zk1.host.com,zk2.host.com,zk3.host.com:2181:/hbase]<a name="line.61"></a>
+<span class="sourceLineNo">062</span> *  /hbase/replication/peers/2 [Value: zk5.host.com,zk6.host.com,zk7.host.com:2181:/hbase]<a name="line.62"></a>
+<span class="sourceLineNo">063</span> *<a name="line.63"></a>
+<span class="sourceLineNo">064</span> * Each of these peer znodes has a child znode that indicates whether or not replication is enabled<a name="line.64"></a>
+<span class="sourceLineNo">065</span> * on that peer cluster. These peer-state znodes do not have child znodes and simply contain a<a name="line.65"></a>
+<span class="sourceLineNo">066</span> * boolean value (i.e. ENABLED or DISABLED). This value is read/maintained by the<a name="line.66"></a>
+<span class="sourceLineNo">067</span> * ReplicationPeer.PeerStateTracker class. For example:<a name="line.67"></a>
+<span class="sourceLineNo">068</span> *<a name="line.68"></a>
+<span class="sourceLineNo">069</span> * /hbase/replication/peers/1/peer-state [Value: ENABLED]<a name="line.69"></a>
+<span class="sourceLineNo">070</span> *<a name="line.70"></a>
+<span class="sourceLineNo">071</span> * Each of these peer znodes has a child znode that indicates which data will be replicated<a name="line.71"></a>
+<span class="sourceLineNo">072</span> * to the peer cluster. These peer-tableCFs znodes do not have child znodes and only have a<a name="line.72"></a>
+<span class="sourceLineNo">073</span> * table/cf list config. This value is read/maintained by the ReplicationPeer.TableCFsTracker<a name="line.73"></a>
+<span class="sourceLineNo">074</span> * class. For example:<a name="line.74"></a>
+<span class="sourceLineNo">075</span> *<a name="line.75"></a>
+<span class="sourceLineNo">076</span> * /hbase/replication/peers/1/tableCFs [Value: "table1; table2:cf1,cf3; table3:cfx,cfy"]<a name="line.76"></a>
+<span class="sourceLineNo">077</span> */<a name="line.77"></a>
+<span class="sourceLineNo">078</span>@InterfaceAudience.Private<a name="line.78"></a>
+<span class="sourceLineNo">079</span>public class ReplicationPeersZKImpl extends ReplicationStateZKBase implements ReplicationPeers {<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  // Map of peer clusters keyed by their id<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  private Map&lt;String, ReplicationPeerZKImpl&gt; peerClusters;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  private final ReplicationQueuesClient queuesClient;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  private Abortable abortable;<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private static final Logger LOG = LoggerFactory.getLogger(ReplicationPeersZKImpl.class);<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>  public ReplicationPeersZKImpl(final ZKWatcher zk, final Configuration conf,<a name="line.88"></a>
+<span class="sourceLineNo">089</span>                                final ReplicationQueuesClient queuesClient, Abortable abortable) {<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    super(zk, conf, abortable);<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    this.abortable = abortable;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    this.peerClusters = new ConcurrentHashMap&lt;&gt;();<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    this.queuesClient = queuesClient;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  }<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>  @Override<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  public void init() throws ReplicationException {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    try {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      if (ZKUtil.checkExists(this.zookeeper, this.peersZNode) &lt; 0) {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>        ZKUtil.createWithParents(this.zookeeper, this.peersZNode);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      }<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    } catch (KeeperException e) {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      throw new ReplicationException("Could not initialize replication peers", e);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    }<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    addExistingPeers();<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  }<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>  @Override<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  public void registerPeer(String id, ReplicationPeerConfig peerConfig, boolean enabled)<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      throws ReplicationException {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    try {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      if (peerExists(id)) {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        throw new IllegalArgumentException("Cannot add a peer with id=" + id<a name="line.113"></a>
+<span class="sourceLineNo">114</span>            + " because that id already exists.");<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      }<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>      if(id.contains("-")){<a name="line.117"></a>
+<span class="sourceLineNo">118</span>        throw new IllegalArgumentException("Found invalid peer name:" + id);<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      }<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>      if (peerConfig.getClusterKey() != null) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        try {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>          ZKConfig.validateClusterKey(peerConfig.getClusterKey());<a name="line.123"></a>
+<span class="sourceLineNo">124</span>        } catch (IOException ioe) {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>          throw new IllegalArgumentException(ioe.getMessage());<a name="line.125"></a>
+<span class="sourceLineNo">126</span>        }<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      }<a name="line.127"></a>
+<span class="sourceLineNo">128</span><a name="line.128"></a>
+<span class="sourceLineNo">129</span>      checkQueuesDeleted(id);<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>      ZKUtil.createWithParents(this.zookeeper, this.peersZNode);<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>      List&lt;ZKUtilOp&gt; listOfOps = new ArrayList&lt;&gt;(2);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      ZKUtilOp op1 =<a name="line.134"></a>
+<span class="sourceLineNo">135</span>          ZKUtilOp.createAndFailSilent(getPeerNode(id),<a name="line.135"></a>
+<span class="sourceLineNo">136</span>            ReplicationPeerConfigUtil.toByteArray(peerConfig));<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      ZKUtilOp op2 =<a name="line.137"></a>
+<span class="sourceLineNo">138</span>          ZKUtilOp.createAndFailSilent(getPeerStateNode(id), enabled ? ENABLED_ZNODE_BYTES<a name="line.138"></a>
+<span class="sourceLineNo">139</span>              : DISABLED_ZNODE_BYTES);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      listOfOps.add(op1);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      listOfOps.add(op2);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      ZKUtil.multiOrSequential(this.zookeeper, listOfOps, false);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    } catch (KeeperException e) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      throw new ReplicationException("Could not add peer with id=" + id + ", peerConfif=&gt;"<a name="line.144"></a>
+<span class="sourceLineNo">145</span>          + peerConfig + ", state=" + (enabled ? "ENABLED" : "DISABLED"), e);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    }<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  }<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  @Override<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  public void unregisterPeer(String id) throws ReplicationException {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    try {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      if (!peerExists(id)) {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>        throw new IllegalArgumentException("Cannot remove peer with id=" + id<a name="line.153"></a>
+<span class="sourceLineNo">154</span>            + " because that id does not exist.");<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      }<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      ZKUtil.deleteNodeRecursively(this.zookeeper, ZNodePaths.joinZNode(this.peersZNode, id));<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    } catch (KeeperException e) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      throw new ReplicationException("Could not remove peer with id=" + id, e);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>  @Override<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  public void enablePeer(String id) throws ReplicationException {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    changePeerState(id, ReplicationProtos.ReplicationState.State.ENABLED);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    LOG.info("peer " + id + " is enabled");<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  }<a name="line.166"></a>
+<span class="sourceLineNo">167</span><a name="line.167"></a>
+<span class="sourceLineNo">168</span>  @Override<a name="line.168"></a>
+<span class="sourceLineNo">169</span>  public void disablePeer(String id) throws ReplicationException {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    changePeerState(id, ReplicationProtos.ReplicationState.State.DISABLED);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    LOG.info("peer " + id + " is disabled");<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>  @Override<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  public Map&lt;TableName, List&lt;String&gt;&gt; getPeerTableCFsConfig(String id) throws ReplicationException {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    try {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      if (!peerExists(id)) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        throw new IllegalArgumentException("peer " + id + " doesn't exist");<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      }<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      try {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>        ReplicationPeerConfig rpc = getReplicationPeerConfig(id);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        if (rpc == null) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          throw new ReplicationException("Unable to get tableCFs of the peer with id=" + id);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        }<a name="line.184"></a>
+<span class="sourceLineNo">185</span>        return rpc.getTableCFsMap();<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      } catch (Exception e) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        throw new ReplicationException(e);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    } catch (KeeperException e) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      throw new ReplicationException("Unable to get tableCFs of the peer with id=" + id, e);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
+<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">194</span>  @Override<a name="line.194"></a>
+<span class="sourceLineNo">195</span>  public void setPeerTableCFsConfig(String id,<a name="line.195"></a>
+<span class="sourceLineNo">196</span>                                    Map&lt;TableName, ? extends Collection&lt;String&gt;&gt;  tableCFs)<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      throws ReplicationException {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    try {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      if (!peerExists(id)) {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>        throw new IllegalArgumentException("Cannot set peer tableCFs because id=" + id<a name="line.200"></a>
+<span class="sourceLineNo">201</span>            + " does not exist.");<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      }<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      ReplicationPeerConfig rpc = getReplicationPeerConfig(id);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      if (rpc == null) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>        throw new ReplicationException("Unable to get tableCFs of the peer with id=" + id);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      }<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      rpc.setTableCFsMap(tableCFs);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      ZKUtil.setData(this.zookeeper, getPeerNode(id),<a name="line.208"></a>
+<span class="sourceLineNo">209</span>          ReplicationPeerConfigUtil.toByteArray(rpc));<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      LOG.info("Peer tableCFs with id= " + id + " is now " +<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        ReplicationPeerConfigUtil.convertToString(tableCFs));<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    } catch (KeeperException e) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      throw new ReplicationException("Unable to change tableCFs of the peer with id=" + id, e);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    }<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  }<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>  @Override<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  public boolean getStatusOfPeer(String id) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    ReplicationPeer replicationPeer = this.peerClusters.get(id);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    if (replicationPeer == null) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      throw new IllegalArgumentException("Peer with id= " + id + " is not cached");<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    return replicationPeer.getPeerState() == PeerState.ENABLED;<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  @Override<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public boolean getStatusOfPeerFromBackingStore(String id) throws ReplicationException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    try {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      if (!peerExists(id)) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>        throw new IllegalArgumentException("peer " + id + " doesn't exist");<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      }<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      String peerStateZNode = getPeerStateNode(id);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      try {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        return ReplicationPeerZKImpl.isStateEnabled(ZKUtil.getData(this.zookeeper, peerStateZNode));<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      } catch (KeeperException e) {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        throw new ReplicationException(e);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      } catch (DeserializationException e) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        throw new ReplicationException(e);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      }<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    } catch (KeeperException e) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      throw new ReplicationException("Unable to get status of the peer with id=" + id +<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          " from backing store", e);<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    } catch (InterruptedException e) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      throw new ReplicationException(e);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
+<span class="sourceLineNo">246</span>  }<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>  @Override<a name="line.248"></a>
+<span class="sourceLineNo">249</span>  public Map&lt;String, ReplicationPeerConfig&gt; getAllPeerConfigs() {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    Map&lt;String, ReplicationPeerConfig&gt; peers = new TreeMap&lt;&gt;();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    List&lt;String&gt; ids = null;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    try {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      ids = ZKUtil.listChildrenNoWatch(this.zookeeper, this.peersZNode);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      for (String id : ids) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        ReplicationPeerConfig peerConfig = getReplicationPeerConfig(id);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        if (peerConfig == null) {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>          LOG.warn("Failed to get replication peer configuration of clusterid=" + id<a name="line.257"></a>
+<span class="sourceLineNo">258</span>            + " znode content, continuing.");<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          continue;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        }<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        peers.put(id, peerConfig);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      }<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    } catch (KeeperException e) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      this.abortable.abort("Cannot get the list of peers ", e);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    } catch (ReplicationException e) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      this.abortable.abort("Cannot get the list of peers ", e);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    return peers;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>  }<a name="line.269"></a>
+<span class="sourceLineNo">270</span><a name="line.270"></a>
+<span class="sourceLineNo">271</span>  @Override<a name="line.271"></a>
+<span class="sourceLineNo">272</span>  public ReplicationPeer getConnectedPeer(String peerId) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    return peerClusters.get(peerId);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>  @Override<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  public Set&lt;String&gt; getConnectedPeerIds() {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    return peerClusters.keySet(); // this is not thread-safe<a name="line.278"></a>
+<span class="sourceLineNo">279</span>  }<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>  /**<a name="line.281"></a>
+<span class="sourceLineNo">282</span>   * Returns a ReplicationPeerConfig from the znode or null for the given peerId.<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   */<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  @Override<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  public ReplicationPeerConfig getReplicationPeerConfig(String peerId)<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      throws ReplicationException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    String znode = getPeerNode(peerId);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    byte[] data = null;<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    try {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      data = ZKUtil.getData(this.zookeeper, znode);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    } catch (InterruptedException e) {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      LOG.warn("Could not get configuration for peer because the thread " +<a name="line.292"></a>
+<span class="sourceLineNo">293</span>          "was interrupted. peerId=" + peerId);<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      Thread.currentThread().interrupt();<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      return null;<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    } catch (KeeperException e) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      throw new ReplicationException("Error getting configuration for peer with id="<a name="line.297"></a>
+<span class="sourceLineNo">298</span>          + peerId, e);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    }<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    if (data == null) {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      LOG.error("Could not get configuration for peer because it doesn't exist. peerId=" + peerId);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      return null;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>    try {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      return ReplicationPeerConfigUtil.parsePeerFrom(data);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    } catch (DeserializationException e) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      LOG.warn("Failed to parse cluster key from peerId=" + peerId<a name="line.308"></a>
+<span class="sourceLineNo">309</span>          + ", specifically the content from the following znode: " + znode);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      return null;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  }<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>  @Override<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  public Pair&lt;ReplicationPeerConfig, Configuration&gt; getPeerConf(String peerId)<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      throws ReplicationException {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    ReplicationPeerConfig peerConfig = getReplicationPeerConfig(peerId);<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>    if (peerConfig == null) {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      return null;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>    Configuration otherConf;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    try {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      otherConf = HBaseConfiguration.createClusterConf(this.conf, peerConfig.getClusterKey());<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    } catch (IOException e) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      LOG.error("Can't get peer configuration for peerId=" + peerId + " because:", e);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      return null;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    }<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>    if (!peerConfig.getConfiguration().isEmpty()) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      CompoundConfiguration compound = new CompoundConfiguration();<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      compound.add(otherConf);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      compound.addStringMap(peerConfig.getConfiguration());<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      return new Pair&lt;&gt;(peerConfig, compound);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    }<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>    return new Pair&lt;&gt;(peerConfig, otherConf);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
+<span class="sourceLineNo">340</span><a name="line.340"></a>
+<span class="sourceLineNo">341</span>  @Override<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  public void updatePeerConfig(String id, ReplicationPeerConfig newConfig)<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      throws ReplicationException {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    ReplicationPeer peer = getConnectedPeer(id);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    if (peer == null){<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      throw new ReplicationException("Could not find peer Id " + id + " in connected peers");<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    ReplicationPeerConfig existingConfig = peer.getPeerConfig();<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    if (newConfig.getClusterKey() != null &amp;&amp; !newConfig.getClusterKey().isEmpty() &amp;&amp;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        !newConfig.getClusterKey().equals(existingConfig.getClusterKey())){<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      throw new ReplicationException("Changing the cluster key on an existing peer is not allowed."<a name="line.351"></a>
+<span class="sourceLineNo">352</span>          + " Existing key '" + existingConfig.getClusterKey() + "' does not match new key '"<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          + newConfig.getClusterKey() +<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      "'");<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    String existingEndpointImpl = existingConfig.getReplicationEndpointImpl();<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    if (newConfig.getReplicationEndpointImpl() != null &amp;&amp;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        !newConfig.getReplicationEndpointImpl().isEmpty() &amp;&amp;<a name="line.358"></a>
+<span class="sourceLineNo">359</span>        !newConfig.getReplicationEndpointImpl().equals(existingEndpointImpl)){<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      throw new ReplicationException("Changing the replication endpoint implementation class " +<a name="line.360"></a>
+<span class="sourceLineNo">361</span>          "on an existing peer is not allowed. Existing class '"<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          + existingConfig.getReplicationEndpointImpl()<a name="line.362"></a>
+<span class="sourceLineNo">363</span>          + "' does not match new class '" + newConfig.getReplicationEndpointImpl() + "'");<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    // Update existingConfig's peer config and peer data with the new values, but don't touch config<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    // or data that weren't explicitly changed<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    ReplicationPeerConfigBuilder builder = ReplicationPeerConfig.newBuilder(existingConfig);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    builder.putAllConfiguration(newConfig.getConfiguration())<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        .putAllPeerData(newConfig.getPeerData())<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        .setReplicateAllUserTables(newConfig.replicateAllUserTables())<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        .setNamespaces(newConfig.getNamespaces()).setTableCFsMap(newConfig.getTableCFsMap())<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        .setExcludeNamespaces(newConfig.getExcludeNamespaces())<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        .setExcludeTableCFsMap(newConfig.getExcludeTableCFsMap())<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        .setBandwidth(newConfig.getBandwidth());<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>    try {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      ZKUtil.setData(this.zookeeper, getPeerNode(id),<a name="line.377"></a>
+<span class="sourceLineNo">378</span>          ReplicationPeerConfigUtil.toByteArray(builder.build()));<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    }<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    catch(KeeperException ke){<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      throw new ReplicationException("There was a problem trying to save changes to the " +<a name="line.381"></a>
+<span class="sourceLineNo">382</span>          "replication peer " + id, ke);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    }<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * List all registered peer clusters and set a watch on their znodes.<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  @Override<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  public List&lt;String&gt; getAllPeerIds() {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    List&lt;String&gt; ids = null;<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    try {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      ids = ZKUtil.listChildrenAndWatchThem(this.zookeeper, this.peersZNode);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    } catch (KeeperException e) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      this.abortable.abort("Cannot get the list of peers ", e);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    }<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    return ids;<a name="line.397"></a>
+<span class="sourceLineNo">398</span>  }<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>  /**<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   * A private method used during initialization. This method attempts to add all registered<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   * peer clusters. This method does not set a watch on the peer cluster znodes.<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   */<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  private void addExistingPeers() throws ReplicationException {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    List&lt;String&gt; znodes = null;<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    try {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      znodes = ZKUtil.listChildrenNoWatch(this.zookeeper, this.peersZNode);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    } catch (KeeperException e) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      throw new ReplicationException("Error getting the list of peer clusters.", e);<a name="line.409"></a>
+<span cl

<TRUNCATED>

[09/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/dependencies.html b/hbase-build-configuration/hbase-archetypes/dependencies.html
index 14eed14..af0e44e 100644
--- a/hbase-build-configuration/hbase-archetypes/dependencies.html
+++ b/hbase-build-configuration/hbase-archetypes/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -330,7 +330,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/dependency-convergence.html b/hbase-build-configuration/hbase-archetypes/dependency-convergence.html
index 73d1afe..4caef0e 100644
--- a/hbase-build-configuration/hbase-archetypes/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-archetypes/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -912,7 +912,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/dependency-info.html b/hbase-build-configuration/hbase-archetypes/dependency-info.html
index 4d64c8a..0546b77 100644
--- a/hbase-build-configuration/hbase-archetypes/dependency-info.html
+++ b/hbase-build-configuration/hbase-archetypes/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -148,7 +148,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/dependency-management.html b/hbase-build-configuration/hbase-archetypes/dependency-management.html
index 3333f94..1a4c19b 100644
--- a/hbase-build-configuration/hbase-archetypes/dependency-management.html
+++ b/hbase-build-configuration/hbase-archetypes/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html
index 02ade02..5492767 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -330,7 +330,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
index 4154722..a9d4ea4 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -912,7 +912,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html
index 8d1e97c..1ebde33 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -148,7 +148,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html
index c9893de..210805c 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html
index 30873aa..21055c2 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html
index bb7e285..f10ecd6 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
index 04224e3..49bd916 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html
index 3e3711f..a63295e 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html
index 5eab1fd..43997c5 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html
index e0bd170..941a7e8 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html
index 8a4c2a9..617cd50 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -218,7 +218,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html
index fa27d71..0a7a28f 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html
index 0af3f12..273288d 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -163,7 +163,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html
index fe53f08..2cfb73f 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html
index 594ee4c..4b4c0be 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -553,7 +553,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html
index 512c62b..47313ee 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -150,7 +150,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html
index f157ff3..31dccb2 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -4168,7 +4168,7 @@ The following provides more details on the included cryptographic software:
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html
index e3a3181..576fcaf 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -912,7 +912,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html
index 33e0cc7..30ba2ed 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -147,7 +147,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html
index bea4c18..8570aa4 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html
index 9216d70..d9a2f45 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html
index 85d55fe..3ee01b1 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html
index 2afd430..9f90a97 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html
index 2f44045..3b0d862 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html
index c63e521..1198d29 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html
index 95eb516..3399357 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html
index b416c8a..082c942 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -226,7 +226,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html
index 4f29a4c..3a81411 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html
index b08e3d9..cb31509 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -128,7 +128,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html
index 2ae2e12..1996877 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html
index 8bfc0c5..632c024 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html
index a86549e..bb6da40 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -553,7 +553,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
index f757d8b..61c71d3 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -150,7 +150,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html
index b446e41..30c748e 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -4193,7 +4193,7 @@ built on Jackson JSON processor</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
index b618831..6917192 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -912,7 +912,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
index 00e1fba..c9fe481 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -147,7 +147,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
index f8616ce..d905ab8 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html
index 668c088..963da86 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html
index 0d4b158..9951c94 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
index 5e6bac0..2c05213 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html
index d6d5647..728f290 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
index 4c78a10..162f043 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
index 09085e1..3f46b58 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html
index 642dab3..fc37c38 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -226,7 +226,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html
index a361757..e152842 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html
index e789361..899c5a2 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -128,7 +128,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html
index db1e03e..4d32461 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html
index 1baf9cd..6e2a8a6 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html
index 527b73e..99dfe51 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -553,7 +553,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/index.html b/hbase-build-configuration/hbase-archetypes/index.html
index 0a140db..c8b28c5 100644
--- a/hbase-build-configuration/hbase-archetypes/index.html
+++ b/hbase-build-configuration/hbase-archetypes/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -135,7 +135,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/integration.html b/hbase-build-configuration/hbase-archetypes/integration.html
index 1fb220e..ab38b6b 100644
--- a/hbase-build-configuration/hbase-archetypes/integration.html
+++ b/hbase-build-configuration/hbase-archetypes/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/issue-tracking.html b/hbase-build-configuration/hbase-archetypes/issue-tracking.html
index 5dfcacf..c6c21f9 100644
--- a/hbase-build-configuration/hbase-archetypes/issue-tracking.html
+++ b/hbase-build-configuration/hbase-archetypes/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/license.html b/hbase-build-configuration/hbase-archetypes/license.html
index a25a850..0a507eb 100644
--- a/hbase-build-configuration/hbase-archetypes/license.html
+++ b/hbase-build-configuration/hbase-archetypes/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/mail-lists.html b/hbase-build-configuration/hbase-archetypes/mail-lists.html
index 8590f02..8f676ba 100644
--- a/hbase-build-configuration/hbase-archetypes/mail-lists.html
+++ b/hbase-build-configuration/hbase-archetypes/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/plugin-management.html b/hbase-build-configuration/hbase-archetypes/plugin-management.html
index 54cfa41..d0c1afa 100644
--- a/hbase-build-configuration/hbase-archetypes/plugin-management.html
+++ b/hbase-build-configuration/hbase-archetypes/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/plugins.html b/hbase-build-configuration/hbase-archetypes/plugins.html
index 401e12a..b52f588 100644
--- a/hbase-build-configuration/hbase-archetypes/plugins.html
+++ b/hbase-build-configuration/hbase-archetypes/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -214,7 +214,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 


[02/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html
index c50b8e5..c1b9f8e 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html
@@ -246,7 +246,7 @@
 <span class="sourceLineNo">238</span>    puts.add(new TPut(wrap(rowName2), columnValues));<a name="line.238"></a>
 <span class="sourceLineNo">239</span><a name="line.239"></a>
 <span class="sourceLineNo">240</span>    handler.putMultiple(table, puts);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    List&lt;Boolean&gt; existsResult2 = handler.existsAll(table,gets );<a name="line.241"></a>
+<span class="sourceLineNo">241</span>    List&lt;Boolean&gt; existsResult2 = handler.existsAll(table, gets);<a name="line.241"></a>
 <span class="sourceLineNo">242</span><a name="line.242"></a>
 <span class="sourceLineNo">243</span>    assertTrue(existsResult2.get(0));<a name="line.243"></a>
 <span class="sourceLineNo">244</span>    assertTrue(existsResult2.get(1));<a name="line.244"></a>
@@ -598,1009 +598,1004 @@
 <span class="sourceLineNo">590</span>  /**<a name="line.590"></a>
 <span class="sourceLineNo">591</span>   * check that checkAndPut fails if the cell does not exist, then put in the cell, then check<a name="line.591"></a>
 <span class="sourceLineNo">592</span>   * that the checkAndPut succeeds.<a name="line.592"></a>
-<span class="sourceLineNo">593</span>   *<a name="line.593"></a>
-<span class="sourceLineNo">594</span>   * @throws Exception<a name="line.594"></a>
-<span class="sourceLineNo">595</span>   */<a name="line.595"></a>
-<span class="sourceLineNo">596</span>  @Test<a name="line.596"></a>
-<span class="sourceLineNo">597</span>  public void testCheckAndPut() throws Exception {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    byte[] rowName = "testCheckAndPut".getBytes();<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    ByteBuffer table = wrap(tableAname);<a name="line.600"></a>
-<span class="sourceLineNo">601</span><a name="line.601"></a>
-<span class="sourceLineNo">602</span>    List&lt;TColumnValue&gt; columnValuesA = new ArrayList&lt;&gt;(1);<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    TColumnValue columnValueA = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      wrap(valueAname));<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    columnValuesA.add(columnValueA);<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    TPut putA = new TPut(wrap(rowName), columnValuesA);<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    putA.setColumnValues(columnValuesA);<a name="line.607"></a>
-<span class="sourceLineNo">608</span><a name="line.608"></a>
-<span class="sourceLineNo">609</span>    List&lt;TColumnValue&gt; columnValuesB = new ArrayList&lt;&gt;(1);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    TColumnValue columnValueB = new TColumnValue(wrap(familyBname), wrap(qualifierBname),<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      wrap(valueBname));<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    columnValuesB.add(columnValueB);<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    TPut putB = new TPut(wrap(rowName), columnValuesB);<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    putB.setColumnValues(columnValuesB);<a name="line.614"></a>
-<span class="sourceLineNo">615</span><a name="line.615"></a>
-<span class="sourceLineNo">616</span>    assertFalse(handler.checkAndPut(table, wrap(rowName), wrap(familyAname),<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      wrap(qualifierAname), wrap(valueAname), putB));<a name="line.617"></a>
-<span class="sourceLineNo">618</span><a name="line.618"></a>
-<span class="sourceLineNo">619</span>    TGet get = new TGet(wrap(rowName));<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    TResult result = handler.get(table, get);<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    assertEquals(0, result.getColumnValuesSize());<a name="line.621"></a>
+<span class="sourceLineNo">593</span>   */<a name="line.593"></a>
+<span class="sourceLineNo">594</span>  @Test<a name="line.594"></a>
+<span class="sourceLineNo">595</span>  public void testCheckAndPut() throws Exception {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.596"></a>
+<span class="sourceLineNo">597</span>    byte[] rowName = "testCheckAndPut".getBytes();<a name="line.597"></a>
+<span class="sourceLineNo">598</span>    ByteBuffer table = wrap(tableAname);<a name="line.598"></a>
+<span class="sourceLineNo">599</span><a name="line.599"></a>
+<span class="sourceLineNo">600</span>    List&lt;TColumnValue&gt; columnValuesA = new ArrayList&lt;&gt;(1);<a name="line.600"></a>
+<span class="sourceLineNo">601</span>    TColumnValue columnValueA = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      wrap(valueAname));<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    columnValuesA.add(columnValueA);<a name="line.603"></a>
+<span class="sourceLineNo">604</span>    TPut putA = new TPut(wrap(rowName), columnValuesA);<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    putA.setColumnValues(columnValuesA);<a name="line.605"></a>
+<span class="sourceLineNo">606</span><a name="line.606"></a>
+<span class="sourceLineNo">607</span>    List&lt;TColumnValue&gt; columnValuesB = new ArrayList&lt;&gt;(1);<a name="line.607"></a>
+<span class="sourceLineNo">608</span>    TColumnValue columnValueB = new TColumnValue(wrap(familyBname), wrap(qualifierBname),<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      wrap(valueBname));<a name="line.609"></a>
+<span class="sourceLineNo">610</span>    columnValuesB.add(columnValueB);<a name="line.610"></a>
+<span class="sourceLineNo">611</span>    TPut putB = new TPut(wrap(rowName), columnValuesB);<a name="line.611"></a>
+<span class="sourceLineNo">612</span>    putB.setColumnValues(columnValuesB);<a name="line.612"></a>
+<span class="sourceLineNo">613</span><a name="line.613"></a>
+<span class="sourceLineNo">614</span>    assertFalse(handler.checkAndPut(table, wrap(rowName), wrap(familyAname),<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      wrap(qualifierAname), wrap(valueAname), putB));<a name="line.615"></a>
+<span class="sourceLineNo">616</span><a name="line.616"></a>
+<span class="sourceLineNo">617</span>    TGet get = new TGet(wrap(rowName));<a name="line.617"></a>
+<span class="sourceLineNo">618</span>    TResult result = handler.get(table, get);<a name="line.618"></a>
+<span class="sourceLineNo">619</span>    assertEquals(0, result.getColumnValuesSize());<a name="line.619"></a>
+<span class="sourceLineNo">620</span><a name="line.620"></a>
+<span class="sourceLineNo">621</span>    handler.put(table, putA);<a name="line.621"></a>
 <span class="sourceLineNo">622</span><a name="line.622"></a>
-<span class="sourceLineNo">623</span>    handler.put(table, putA);<a name="line.623"></a>
-<span class="sourceLineNo">624</span><a name="line.624"></a>
-<span class="sourceLineNo">625</span>    assertTrue(handler.checkAndPut(table, wrap(rowName), wrap(familyAname),<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      wrap(qualifierAname), wrap(valueAname), putB));<a name="line.626"></a>
-<span class="sourceLineNo">627</span><a name="line.627"></a>
-<span class="sourceLineNo">628</span>    result = handler.get(table, get);<a name="line.628"></a>
-<span class="sourceLineNo">629</span>    assertArrayEquals(rowName, result.getRow());<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    List&lt;TColumnValue&gt; returnedColumnValues = result.getColumnValues();<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    List&lt;TColumnValue&gt; expectedColumnValues = new ArrayList&lt;&gt;(2);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    expectedColumnValues.add(columnValueA);<a name="line.632"></a>
-<span class="sourceLineNo">633</span>    expectedColumnValues.add(columnValueB);<a name="line.633"></a>
-<span class="sourceLineNo">634</span>    assertTColumnValuesEqual(expectedColumnValues, returnedColumnValues);<a name="line.634"></a>
-<span class="sourceLineNo">635</span>  }<a name="line.635"></a>
-<span class="sourceLineNo">636</span><a name="line.636"></a>
-<span class="sourceLineNo">637</span>  /**<a name="line.637"></a>
-<span class="sourceLineNo">638</span>   * check that checkAndDelete fails if the cell does not exist, then put in the cell, then<a name="line.638"></a>
-<span class="sourceLineNo">639</span>   * check that the checkAndDelete succeeds.<a name="line.639"></a>
-<span class="sourceLineNo">640</span>   *<a name="line.640"></a>
-<span class="sourceLineNo">641</span>   * @throws Exception<a name="line.641"></a>
-<span class="sourceLineNo">642</span>   */<a name="line.642"></a>
-<span class="sourceLineNo">643</span>  @Test<a name="line.643"></a>
-<span class="sourceLineNo">644</span>  public void testCheckAndDelete() throws Exception {<a name="line.644"></a>
-<span class="sourceLineNo">645</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    byte[] rowName = "testCheckAndDelete".getBytes();<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    ByteBuffer table = wrap(tableAname);<a name="line.647"></a>
-<span class="sourceLineNo">648</span><a name="line.648"></a>
-<span class="sourceLineNo">649</span>    List&lt;TColumnValue&gt; columnValuesA = new ArrayList&lt;&gt;(1);<a name="line.649"></a>
-<span class="sourceLineNo">650</span>    TColumnValue columnValueA = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      wrap(valueAname));<a name="line.651"></a>
-<span class="sourceLineNo">652</span>    columnValuesA.add(columnValueA);<a name="line.652"></a>
-<span class="sourceLineNo">653</span>    TPut putA = new TPut(wrap(rowName), columnValuesA);<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    putA.setColumnValues(columnValuesA);<a name="line.654"></a>
-<span class="sourceLineNo">655</span><a name="line.655"></a>
-<span class="sourceLineNo">656</span>    List&lt;TColumnValue&gt; columnValuesB = new ArrayList&lt;&gt;(1);<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    TColumnValue columnValueB = new TColumnValue(wrap(familyBname), wrap(qualifierBname),<a name="line.657"></a>
-<span class="sourceLineNo">658</span>      wrap(valueBname));<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    columnValuesB.add(columnValueB);<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    TPut putB = new TPut(wrap(rowName), columnValuesB);<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    putB.setColumnValues(columnValuesB);<a name="line.661"></a>
-<span class="sourceLineNo">662</span><a name="line.662"></a>
-<span class="sourceLineNo">663</span>    // put putB so that we know whether the row has been deleted or not<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    handler.put(table, putB);<a name="line.664"></a>
-<span class="sourceLineNo">665</span><a name="line.665"></a>
-<span class="sourceLineNo">666</span>    TDelete delete = new TDelete(wrap(rowName));<a name="line.666"></a>
-<span class="sourceLineNo">667</span><a name="line.667"></a>
-<span class="sourceLineNo">668</span>    assertFalse(handler.checkAndDelete(table, wrap(rowName), wrap(familyAname),<a name="line.668"></a>
-<span class="sourceLineNo">669</span>        wrap(qualifierAname), wrap(valueAname), delete));<a name="line.669"></a>
-<span class="sourceLineNo">670</span><a name="line.670"></a>
-<span class="sourceLineNo">671</span>    TGet get = new TGet(wrap(rowName));<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    TResult result = handler.get(table, get);<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    assertArrayEquals(rowName, result.getRow());<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    assertTColumnValuesEqual(columnValuesB, result.getColumnValues());<a name="line.674"></a>
-<span class="sourceLineNo">675</span><a name="line.675"></a>
-<span class="sourceLineNo">676</span>    handler.put(table, putA);<a name="line.676"></a>
-<span class="sourceLineNo">677</span><a name="line.677"></a>
-<span class="sourceLineNo">678</span>    assertTrue(handler.checkAndDelete(table, wrap(rowName), wrap(familyAname),<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      wrap(qualifierAname), wrap(valueAname), delete));<a name="line.679"></a>
-<span class="sourceLineNo">680</span><a name="line.680"></a>
-<span class="sourceLineNo">681</span>    result = handler.get(table, get);<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    assertFalse(result.isSetRow());<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    assertEquals(0, result.getColumnValuesSize());<a name="line.683"></a>
-<span class="sourceLineNo">684</span>  }<a name="line.684"></a>
-<span class="sourceLineNo">685</span><a name="line.685"></a>
-<span class="sourceLineNo">686</span>  @Test<a name="line.686"></a>
-<span class="sourceLineNo">687</span>  public void testScan() throws Exception {<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    ByteBuffer table = wrap(tableAname);<a name="line.689"></a>
-<span class="sourceLineNo">690</span><a name="line.690"></a>
-<span class="sourceLineNo">691</span>    // insert data<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.692"></a>
-<span class="sourceLineNo">693</span>      wrap(valueAname));<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    columnValues.add(columnValue);<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      TPut put = new TPut(wrap(("testScan" + i).getBytes()), columnValues);<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      handler.put(table, put);<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    }<a name="line.699"></a>
-<span class="sourceLineNo">700</span><a name="line.700"></a>
-<span class="sourceLineNo">701</span>    // create scan instance<a name="line.701"></a>
-<span class="sourceLineNo">702</span>    TScan scan = new TScan();<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    TColumn column = new TColumn();<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    column.setFamily(familyAname);<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    column.setQualifier(qualifierAname);<a name="line.706"></a>
-<span class="sourceLineNo">707</span>    columns.add(column);<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    scan.setColumns(columns);<a name="line.708"></a>
-<span class="sourceLineNo">709</span>    scan.setStartRow("testScan".getBytes());<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    scan.setStopRow("testScan\uffff".getBytes());<a name="line.710"></a>
-<span class="sourceLineNo">711</span><a name="line.711"></a>
-<span class="sourceLineNo">712</span>    // get scanner and rows<a name="line.712"></a>
-<span class="sourceLineNo">713</span>    int scanId = handler.openScanner(table, scan);<a name="line.713"></a>
-<span class="sourceLineNo">714</span>    List&lt;TResult&gt; results = handler.getScannerRows(scanId, 10);<a name="line.714"></a>
-<span class="sourceLineNo">715</span>    assertEquals(10, results.size());<a name="line.715"></a>
-<span class="sourceLineNo">716</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.716"></a>
-<span class="sourceLineNo">717</span>      // check if the rows are returned and in order<a name="line.717"></a>
-<span class="sourceLineNo">718</span>      assertArrayEquals(("testScan" + i).getBytes(), results.get(i).getRow());<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    }<a name="line.719"></a>
+<span class="sourceLineNo">623</span>    assertTrue(handler.checkAndPut(table, wrap(rowName), wrap(familyAname),<a name="line.623"></a>
+<span class="sourceLineNo">624</span>      wrap(qualifierAname), wrap(valueAname), putB));<a name="line.624"></a>
+<span class="sourceLineNo">625</span><a name="line.625"></a>
+<span class="sourceLineNo">626</span>    result = handler.get(table, get);<a name="line.626"></a>
+<span class="sourceLineNo">627</span>    assertArrayEquals(rowName, result.getRow());<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    List&lt;TColumnValue&gt; returnedColumnValues = result.getColumnValues();<a name="line.628"></a>
+<span class="sourceLineNo">629</span>    List&lt;TColumnValue&gt; expectedColumnValues = new ArrayList&lt;&gt;(2);<a name="line.629"></a>
+<span class="sourceLineNo">630</span>    expectedColumnValues.add(columnValueA);<a name="line.630"></a>
+<span class="sourceLineNo">631</span>    expectedColumnValues.add(columnValueB);<a name="line.631"></a>
+<span class="sourceLineNo">632</span>    assertTColumnValuesEqual(expectedColumnValues, returnedColumnValues);<a name="line.632"></a>
+<span class="sourceLineNo">633</span>  }<a name="line.633"></a>
+<span class="sourceLineNo">634</span><a name="line.634"></a>
+<span class="sourceLineNo">635</span>  /**<a name="line.635"></a>
+<span class="sourceLineNo">636</span>   * check that checkAndDelete fails if the cell does not exist, then put in the cell, then<a name="line.636"></a>
+<span class="sourceLineNo">637</span>   * check that the checkAndDelete succeeds.<a name="line.637"></a>
+<span class="sourceLineNo">638</span>   */<a name="line.638"></a>
+<span class="sourceLineNo">639</span>  @Test<a name="line.639"></a>
+<span class="sourceLineNo">640</span>  public void testCheckAndDelete() throws Exception {<a name="line.640"></a>
+<span class="sourceLineNo">641</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    byte[] rowName = "testCheckAndDelete".getBytes();<a name="line.642"></a>
+<span class="sourceLineNo">643</span>    ByteBuffer table = wrap(tableAname);<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>    List&lt;TColumnValue&gt; columnValuesA = new ArrayList&lt;&gt;(1);<a name="line.645"></a>
+<span class="sourceLineNo">646</span>    TColumnValue columnValueA = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.646"></a>
+<span class="sourceLineNo">647</span>      wrap(valueAname));<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    columnValuesA.add(columnValueA);<a name="line.648"></a>
+<span class="sourceLineNo">649</span>    TPut putA = new TPut(wrap(rowName), columnValuesA);<a name="line.649"></a>
+<span class="sourceLineNo">650</span>    putA.setColumnValues(columnValuesA);<a name="line.650"></a>
+<span class="sourceLineNo">651</span><a name="line.651"></a>
+<span class="sourceLineNo">652</span>    List&lt;TColumnValue&gt; columnValuesB = new ArrayList&lt;&gt;(1);<a name="line.652"></a>
+<span class="sourceLineNo">653</span>    TColumnValue columnValueB = new TColumnValue(wrap(familyBname), wrap(qualifierBname),<a name="line.653"></a>
+<span class="sourceLineNo">654</span>      wrap(valueBname));<a name="line.654"></a>
+<span class="sourceLineNo">655</span>    columnValuesB.add(columnValueB);<a name="line.655"></a>
+<span class="sourceLineNo">656</span>    TPut putB = new TPut(wrap(rowName), columnValuesB);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    putB.setColumnValues(columnValuesB);<a name="line.657"></a>
+<span class="sourceLineNo">658</span><a name="line.658"></a>
+<span class="sourceLineNo">659</span>    // put putB so that we know whether the row has been deleted or not<a name="line.659"></a>
+<span class="sourceLineNo">660</span>    handler.put(table, putB);<a name="line.660"></a>
+<span class="sourceLineNo">661</span><a name="line.661"></a>
+<span class="sourceLineNo">662</span>    TDelete delete = new TDelete(wrap(rowName));<a name="line.662"></a>
+<span class="sourceLineNo">663</span><a name="line.663"></a>
+<span class="sourceLineNo">664</span>    assertFalse(handler.checkAndDelete(table, wrap(rowName), wrap(familyAname),<a name="line.664"></a>
+<span class="sourceLineNo">665</span>        wrap(qualifierAname), wrap(valueAname), delete));<a name="line.665"></a>
+<span class="sourceLineNo">666</span><a name="line.666"></a>
+<span class="sourceLineNo">667</span>    TGet get = new TGet(wrap(rowName));<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    TResult result = handler.get(table, get);<a name="line.668"></a>
+<span class="sourceLineNo">669</span>    assertArrayEquals(rowName, result.getRow());<a name="line.669"></a>
+<span class="sourceLineNo">670</span>    assertTColumnValuesEqual(columnValuesB, result.getColumnValues());<a name="line.670"></a>
+<span class="sourceLineNo">671</span><a name="line.671"></a>
+<span class="sourceLineNo">672</span>    handler.put(table, putA);<a name="line.672"></a>
+<span class="sourceLineNo">673</span><a name="line.673"></a>
+<span class="sourceLineNo">674</span>    assertTrue(handler.checkAndDelete(table, wrap(rowName), wrap(familyAname),<a name="line.674"></a>
+<span class="sourceLineNo">675</span>      wrap(qualifierAname), wrap(valueAname), delete));<a name="line.675"></a>
+<span class="sourceLineNo">676</span><a name="line.676"></a>
+<span class="sourceLineNo">677</span>    result = handler.get(table, get);<a name="line.677"></a>
+<span class="sourceLineNo">678</span>    assertFalse(result.isSetRow());<a name="line.678"></a>
+<span class="sourceLineNo">679</span>    assertEquals(0, result.getColumnValuesSize());<a name="line.679"></a>
+<span class="sourceLineNo">680</span>  }<a name="line.680"></a>
+<span class="sourceLineNo">681</span><a name="line.681"></a>
+<span class="sourceLineNo">682</span>  @Test<a name="line.682"></a>
+<span class="sourceLineNo">683</span>  public void testScan() throws Exception {<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.684"></a>
+<span class="sourceLineNo">685</span>    ByteBuffer table = wrap(tableAname);<a name="line.685"></a>
+<span class="sourceLineNo">686</span><a name="line.686"></a>
+<span class="sourceLineNo">687</span>    // insert data<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.688"></a>
+<span class="sourceLineNo">689</span>      wrap(valueAname));<a name="line.689"></a>
+<span class="sourceLineNo">690</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.690"></a>
+<span class="sourceLineNo">691</span>    columnValues.add(columnValue);<a name="line.691"></a>
+<span class="sourceLineNo">692</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.692"></a>
+<span class="sourceLineNo">693</span>      TPut put = new TPut(wrap(("testScan" + i).getBytes()), columnValues);<a name="line.693"></a>
+<span class="sourceLineNo">694</span>      handler.put(table, put);<a name="line.694"></a>
+<span class="sourceLineNo">695</span>    }<a name="line.695"></a>
+<span class="sourceLineNo">696</span><a name="line.696"></a>
+<span class="sourceLineNo">697</span>    // create scan instance<a name="line.697"></a>
+<span class="sourceLineNo">698</span>    TScan scan = new TScan();<a name="line.698"></a>
+<span class="sourceLineNo">699</span>    List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.699"></a>
+<span class="sourceLineNo">700</span>    TColumn column = new TColumn();<a name="line.700"></a>
+<span class="sourceLineNo">701</span>    column.setFamily(familyAname);<a name="line.701"></a>
+<span class="sourceLineNo">702</span>    column.setQualifier(qualifierAname);<a name="line.702"></a>
+<span class="sourceLineNo">703</span>    columns.add(column);<a name="line.703"></a>
+<span class="sourceLineNo">704</span>    scan.setColumns(columns);<a name="line.704"></a>
+<span class="sourceLineNo">705</span>    scan.setStartRow("testScan".getBytes());<a name="line.705"></a>
+<span class="sourceLineNo">706</span>    scan.setStopRow("testScan\uffff".getBytes());<a name="line.706"></a>
+<span class="sourceLineNo">707</span><a name="line.707"></a>
+<span class="sourceLineNo">708</span>    // get scanner and rows<a name="line.708"></a>
+<span class="sourceLineNo">709</span>    int scanId = handler.openScanner(table, scan);<a name="line.709"></a>
+<span class="sourceLineNo">710</span>    List&lt;TResult&gt; results = handler.getScannerRows(scanId, 10);<a name="line.710"></a>
+<span class="sourceLineNo">711</span>    assertEquals(10, results.size());<a name="line.711"></a>
+<span class="sourceLineNo">712</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.712"></a>
+<span class="sourceLineNo">713</span>      // check if the rows are returned and in order<a name="line.713"></a>
+<span class="sourceLineNo">714</span>      assertArrayEquals(("testScan" + i).getBytes(), results.get(i).getRow());<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    }<a name="line.715"></a>
+<span class="sourceLineNo">716</span><a name="line.716"></a>
+<span class="sourceLineNo">717</span>    // check that we are at the end of the scan<a name="line.717"></a>
+<span class="sourceLineNo">718</span>    results = handler.getScannerRows(scanId, 10);<a name="line.718"></a>
+<span class="sourceLineNo">719</span>    assertEquals(0, results.size());<a name="line.719"></a>
 <span class="sourceLineNo">720</span><a name="line.720"></a>
-<span class="sourceLineNo">721</span>    // check that we are at the end of the scan<a name="line.721"></a>
-<span class="sourceLineNo">722</span>    results = handler.getScannerRows(scanId, 10);<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    assertEquals(0, results.size());<a name="line.723"></a>
-<span class="sourceLineNo">724</span><a name="line.724"></a>
-<span class="sourceLineNo">725</span>    // close scanner and check that it was indeed closed<a name="line.725"></a>
-<span class="sourceLineNo">726</span>    handler.closeScanner(scanId);<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    try {<a name="line.727"></a>
-<span class="sourceLineNo">728</span>      handler.getScannerRows(scanId, 10);<a name="line.728"></a>
-<span class="sourceLineNo">729</span>      fail("Scanner id should be invalid");<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    } catch (TIllegalArgument e) {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    }<a name="line.731"></a>
-<span class="sourceLineNo">732</span>  }<a name="line.732"></a>
-<span class="sourceLineNo">733</span><a name="line.733"></a>
-<span class="sourceLineNo">734</span>  /**<a name="line.734"></a>
-<span class="sourceLineNo">735</span>   * Tests keeping a HBase scanner alive for long periods of time. Each call to getScannerRow()<a name="line.735"></a>
-<span class="sourceLineNo">736</span>   * should reset the ConnectionCache timeout for the scanner's connection<a name="line.736"></a>
-<span class="sourceLineNo">737</span>   * @throws Exception<a name="line.737"></a>
-<span class="sourceLineNo">738</span>   */<a name="line.738"></a>
-<span class="sourceLineNo">739</span>  @Test<a name="line.739"></a>
-<span class="sourceLineNo">740</span>  public void testLongLivedScan() throws Exception {<a name="line.740"></a>
-<span class="sourceLineNo">741</span>    int numTrials = 6;<a name="line.741"></a>
-<span class="sourceLineNo">742</span>    int trialPause = 1000;<a name="line.742"></a>
-<span class="sourceLineNo">743</span>    int cleanUpInterval = 100;<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    Configuration conf = new Configuration(UTIL.getConfiguration());<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    // Set the ConnectionCache timeout to trigger halfway through the trials<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    conf.setInt(ThriftHBaseServiceHandler.MAX_IDLETIME, (numTrials / 2) * trialPause);<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    conf.setInt(ThriftHBaseServiceHandler.CLEANUP_INTERVAL, cleanUpInterval);<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    ThriftHBaseServiceHandler handler = new ThriftHBaseServiceHandler(conf,<a name="line.748"></a>
-<span class="sourceLineNo">749</span>        UserProvider.instantiate(conf));<a name="line.749"></a>
-<span class="sourceLineNo">750</span><a name="line.750"></a>
-<span class="sourceLineNo">751</span>    ByteBuffer table = wrap(tableAname);<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    // insert data<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.753"></a>
-<span class="sourceLineNo">754</span>        wrap(valueAname));<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    columnValues.add(columnValue);<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    for (int i = 0; i &lt; numTrials; i++) {<a name="line.757"></a>
-<span class="sourceLineNo">758</span>      TPut put = new TPut(wrap(("testScan" + i).getBytes()), columnValues);<a name="line.758"></a>
-<span class="sourceLineNo">759</span>      handler.put(table, put);<a name="line.759"></a>
-<span class="sourceLineNo">760</span>    }<a name="line.760"></a>
-<span class="sourceLineNo">761</span><a name="line.761"></a>
-<span class="sourceLineNo">762</span>    // create scan instance<a name="line.762"></a>
-<span class="sourceLineNo">763</span>    TScan scan = new TScan();<a name="line.763"></a>
-<span class="sourceLineNo">764</span>    List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.764"></a>
-<span class="sourceLineNo">765</span>    TColumn column = new TColumn();<a name="line.765"></a>
-<span class="sourceLineNo">766</span>    column.setFamily(familyAname);<a name="line.766"></a>
-<span class="sourceLineNo">767</span>    column.setQualifier(qualifierAname);<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    columns.add(column);<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    scan.setColumns(columns);<a name="line.769"></a>
-<span class="sourceLineNo">770</span>    scan.setStartRow("testScan".getBytes());<a name="line.770"></a>
-<span class="sourceLineNo">771</span>    scan.setStopRow("testScan\uffff".getBytes());<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    // Prevent the scanner from caching results<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    scan.setCaching(1);<a name="line.773"></a>
-<span class="sourceLineNo">774</span><a name="line.774"></a>
-<span class="sourceLineNo">775</span>    // get scanner and rows<a name="line.775"></a>
-<span class="sourceLineNo">776</span>    int scanId = handler.openScanner(table, scan);<a name="line.776"></a>
-<span class="sourceLineNo">777</span>    for (int i = 0; i &lt; numTrials; i++) {<a name="line.777"></a>
-<span class="sourceLineNo">778</span>      // Make sure that the Scanner doesn't throw an exception after the ConnectionCache timeout<a name="line.778"></a>
-<span class="sourceLineNo">779</span>      List&lt;TResult&gt; results = handler.getScannerRows(scanId, 1);<a name="line.779"></a>
-<span class="sourceLineNo">780</span>      assertArrayEquals(("testScan" + i).getBytes(), results.get(0).getRow());<a name="line.780"></a>
-<span class="sourceLineNo">781</span>      Thread.sleep(trialPause);<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    }<a name="line.782"></a>
-<span class="sourceLineNo">783</span>  }<a name="line.783"></a>
+<span class="sourceLineNo">721</span>    // close scanner and check that it was indeed closed<a name="line.721"></a>
+<span class="sourceLineNo">722</span>    handler.closeScanner(scanId);<a name="line.722"></a>
+<span class="sourceLineNo">723</span>    try {<a name="line.723"></a>
+<span class="sourceLineNo">724</span>      handler.getScannerRows(scanId, 10);<a name="line.724"></a>
+<span class="sourceLineNo">725</span>      fail("Scanner id should be invalid");<a name="line.725"></a>
+<span class="sourceLineNo">726</span>    } catch (TIllegalArgument e) {<a name="line.726"></a>
+<span class="sourceLineNo">727</span>    }<a name="line.727"></a>
+<span class="sourceLineNo">728</span>  }<a name="line.728"></a>
+<span class="sourceLineNo">729</span><a name="line.729"></a>
+<span class="sourceLineNo">730</span>  /**<a name="line.730"></a>
+<span class="sourceLineNo">731</span>   * Tests keeping a HBase scanner alive for long periods of time. Each call to getScannerRow()<a name="line.731"></a>
+<span class="sourceLineNo">732</span>   * should reset the ConnectionCache timeout for the scanner's connection.<a name="line.732"></a>
+<span class="sourceLineNo">733</span>   */<a name="line.733"></a>
+<span class="sourceLineNo">734</span>  @Test<a name="line.734"></a>
+<span class="sourceLineNo">735</span>  public void testLongLivedScan() throws Exception {<a name="line.735"></a>
+<span class="sourceLineNo">736</span>    int numTrials = 6;<a name="line.736"></a>
+<span class="sourceLineNo">737</span>    int trialPause = 1000;<a name="line.737"></a>
+<span class="sourceLineNo">738</span>    int cleanUpInterval = 100;<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    Configuration conf = new Configuration(UTIL.getConfiguration());<a name="line.739"></a>
+<span class="sourceLineNo">740</span>    // Set the ConnectionCache timeout to trigger halfway through the trials<a name="line.740"></a>
+<span class="sourceLineNo">741</span>    conf.setInt(ThriftHBaseServiceHandler.MAX_IDLETIME, (numTrials / 2) * trialPause);<a name="line.741"></a>
+<span class="sourceLineNo">742</span>    conf.setInt(ThriftHBaseServiceHandler.CLEANUP_INTERVAL, cleanUpInterval);<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    ThriftHBaseServiceHandler handler = new ThriftHBaseServiceHandler(conf,<a name="line.743"></a>
+<span class="sourceLineNo">744</span>        UserProvider.instantiate(conf));<a name="line.744"></a>
+<span class="sourceLineNo">745</span><a name="line.745"></a>
+<span class="sourceLineNo">746</span>    ByteBuffer table = wrap(tableAname);<a name="line.746"></a>
+<span class="sourceLineNo">747</span>    // insert data<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.748"></a>
+<span class="sourceLineNo">749</span>        wrap(valueAname));<a name="line.749"></a>
+<span class="sourceLineNo">750</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.750"></a>
+<span class="sourceLineNo">751</span>    columnValues.add(columnValue);<a name="line.751"></a>
+<span class="sourceLineNo">752</span>    for (int i = 0; i &lt; numTrials; i++) {<a name="line.752"></a>
+<span class="sourceLineNo">753</span>      TPut put = new TPut(wrap(("testScan" + i).getBytes()), columnValues);<a name="line.753"></a>
+<span class="sourceLineNo">754</span>      handler.put(table, put);<a name="line.754"></a>
+<span class="sourceLineNo">755</span>    }<a name="line.755"></a>
+<span class="sourceLineNo">756</span><a name="line.756"></a>
+<span class="sourceLineNo">757</span>    // create scan instance<a name="line.757"></a>
+<span class="sourceLineNo">758</span>    TScan scan = new TScan();<a name="line.758"></a>
+<span class="sourceLineNo">759</span>    List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.759"></a>
+<span class="sourceLineNo">760</span>    TColumn column = new TColumn();<a name="line.760"></a>
+<span class="sourceLineNo">761</span>    column.setFamily(familyAname);<a name="line.761"></a>
+<span class="sourceLineNo">762</span>    column.setQualifier(qualifierAname);<a name="line.762"></a>
+<span class="sourceLineNo">763</span>    columns.add(column);<a name="line.763"></a>
+<span class="sourceLineNo">764</span>    scan.setColumns(columns);<a name="line.764"></a>
+<span class="sourceLineNo">765</span>    scan.setStartRow("testScan".getBytes());<a name="line.765"></a>
+<span class="sourceLineNo">766</span>    scan.setStopRow("testScan\uffff".getBytes());<a name="line.766"></a>
+<span class="sourceLineNo">767</span>    // Prevent the scanner from caching results<a name="line.767"></a>
+<span class="sourceLineNo">768</span>    scan.setCaching(1);<a name="line.768"></a>
+<span class="sourceLineNo">769</span><a name="line.769"></a>
+<span class="sourceLineNo">770</span>    // get scanner and rows<a name="line.770"></a>
+<span class="sourceLineNo">771</span>    int scanId = handler.openScanner(table, scan);<a name="line.771"></a>
+<span class="sourceLineNo">772</span>    for (int i = 0; i &lt; numTrials; i++) {<a name="line.772"></a>
+<span class="sourceLineNo">773</span>      // Make sure that the Scanner doesn't throw an exception after the ConnectionCache timeout<a name="line.773"></a>
+<span class="sourceLineNo">774</span>      List&lt;TResult&gt; results = handler.getScannerRows(scanId, 1);<a name="line.774"></a>
+<span class="sourceLineNo">775</span>      assertArrayEquals(("testScan" + i).getBytes(), results.get(0).getRow());<a name="line.775"></a>
+<span class="sourceLineNo">776</span>      Thread.sleep(trialPause);<a name="line.776"></a>
+<span class="sourceLineNo">777</span>    }<a name="line.777"></a>
+<span class="sourceLineNo">778</span>  }<a name="line.778"></a>
+<span class="sourceLineNo">779</span><a name="line.779"></a>
+<span class="sourceLineNo">780</span>  @Test<a name="line.780"></a>
+<span class="sourceLineNo">781</span>  public void testReverseScan() throws Exception {<a name="line.781"></a>
+<span class="sourceLineNo">782</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.782"></a>
+<span class="sourceLineNo">783</span>    ByteBuffer table = wrap(tableAname);<a name="line.783"></a>
 <span class="sourceLineNo">784</span><a name="line.784"></a>
-<span class="sourceLineNo">785</span>  @Test<a name="line.785"></a>
-<span class="sourceLineNo">786</span>  public void testReverseScan() throws Exception {<a name="line.786"></a>
-<span class="sourceLineNo">787</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.787"></a>
-<span class="sourceLineNo">788</span>    ByteBuffer table = wrap(tableAname);<a name="line.788"></a>
-<span class="sourceLineNo">789</span><a name="line.789"></a>
-<span class="sourceLineNo">790</span>    // insert data<a name="line.790"></a>
-<span class="sourceLineNo">791</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.791"></a>
-<span class="sourceLineNo">792</span>      wrap(valueAname));<a name="line.792"></a>
-<span class="sourceLineNo">793</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.793"></a>
-<span class="sourceLineNo">794</span>    columnValues.add(columnValue);<a name="line.794"></a>
-<span class="sourceLineNo">795</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.795"></a>
-<span class="sourceLineNo">796</span>      TPut put = new TPut(wrap(("testReverseScan" + i).getBytes()), columnValues);<a name="line.796"></a>
-<span class="sourceLineNo">797</span>      handler.put(table, put);<a name="line.797"></a>
-<span class="sourceLineNo">798</span>    }<a name="line.798"></a>
-<span class="sourceLineNo">799</span><a name="line.799"></a>
-<span class="sourceLineNo">800</span>    // create reverse scan instance<a name="line.800"></a>
-<span class="sourceLineNo">801</span>    TScan scan = new TScan();<a name="line.801"></a>
-<span class="sourceLineNo">802</span>    scan.setReversed(true);<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.803"></a>
-<span class="sourceLineNo">804</span>    TColumn column = new TColumn();<a name="line.804"></a>
-<span class="sourceLineNo">805</span>    column.setFamily(familyAname);<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    column.setQualifier(qualifierAname);<a name="line.806"></a>
-<span class="sourceLineNo">807</span>    columns.add(column);<a name="line.807"></a>
-<span class="sourceLineNo">808</span>    scan.setColumns(columns);<a name="line.808"></a>
-<span class="sourceLineNo">809</span>    scan.setStartRow("testReverseScan\uffff".getBytes());<a name="line.809"></a>
-<span class="sourceLineNo">810</span>    scan.setStopRow("testReverseScan".getBytes());<a name="line.810"></a>
-<span class="sourceLineNo">811</span><a name="line.811"></a>
-<span class="sourceLineNo">812</span>    // get scanner and rows<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    int scanId = handler.openScanner(table, scan);<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    List&lt;TResult&gt; results = handler.getScannerRows(scanId, 10);<a name="line.814"></a>
-<span class="sourceLineNo">815</span>    assertEquals(10, results.size());<a name="line.815"></a>
-<span class="sourceLineNo">816</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      // check if the rows are returned and in order<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      assertArrayEquals(("testReverseScan" + (9 - i)).getBytes(), results.get(i).getRow());<a name="line.818"></a>
-<span class="sourceLineNo">819</span>    }<a name="line.819"></a>
-<span class="sourceLineNo">820</span><a name="line.820"></a>
-<span class="sourceLineNo">821</span>    // check that we are at the end of the scan<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    results = handler.getScannerRows(scanId, 10);<a name="line.822"></a>
-<span class="sourceLineNo">823</span>    assertEquals(0, results.size());<a name="line.823"></a>
-<span class="sourceLineNo">824</span><a name="line.824"></a>
-<span class="sourceLineNo">825</span>    // close scanner and check that it was indeed closed<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    handler.closeScanner(scanId);<a name="line.826"></a>
-<span class="sourceLineNo">827</span>    try {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      handler.getScannerRows(scanId, 10);<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      fail("Scanner id should be invalid");<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    } catch (TIllegalArgument e) {<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    }<a name="line.831"></a>
-<span class="sourceLineNo">832</span>  }<a name="line.832"></a>
+<span class="sourceLineNo">785</span>    // insert data<a name="line.785"></a>
+<span class="sourceLineNo">786</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.786"></a>
+<span class="sourceLineNo">787</span>      wrap(valueAname));<a name="line.787"></a>
+<span class="sourceLineNo">788</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.788"></a>
+<span class="sourceLineNo">789</span>    columnValues.add(columnValue);<a name="line.789"></a>
+<span class="sourceLineNo">790</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.790"></a>
+<span class="sourceLineNo">791</span>      TPut put = new TPut(wrap(("testReverseScan" + i).getBytes()), columnValues);<a name="line.791"></a>
+<span class="sourceLineNo">792</span>      handler.put(table, put);<a name="line.792"></a>
+<span class="sourceLineNo">793</span>    }<a name="line.793"></a>
+<span class="sourceLineNo">794</span><a name="line.794"></a>
+<span class="sourceLineNo">795</span>    // create reverse scan instance<a name="line.795"></a>
+<span class="sourceLineNo">796</span>    TScan scan = new TScan();<a name="line.796"></a>
+<span class="sourceLineNo">797</span>    scan.setReversed(true);<a name="line.797"></a>
+<span class="sourceLineNo">798</span>    List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.798"></a>
+<span class="sourceLineNo">799</span>    TColumn column = new TColumn();<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    column.setFamily(familyAname);<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    column.setQualifier(qualifierAname);<a name="line.801"></a>
+<span class="sourceLineNo">802</span>    columns.add(column);<a name="line.802"></a>
+<span class="sourceLineNo">803</span>    scan.setColumns(columns);<a name="line.803"></a>
+<span class="sourceLineNo">804</span>    scan.setStartRow("testReverseScan\uffff".getBytes());<a name="line.804"></a>
+<span class="sourceLineNo">805</span>    scan.setStopRow("testReverseScan".getBytes());<a name="line.805"></a>
+<span class="sourceLineNo">806</span><a name="line.806"></a>
+<span class="sourceLineNo">807</span>    // get scanner and rows<a name="line.807"></a>
+<span class="sourceLineNo">808</span>    int scanId = handler.openScanner(table, scan);<a name="line.808"></a>
+<span class="sourceLineNo">809</span>    List&lt;TResult&gt; results = handler.getScannerRows(scanId, 10);<a name="line.809"></a>
+<span class="sourceLineNo">810</span>    assertEquals(10, results.size());<a name="line.810"></a>
+<span class="sourceLineNo">811</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.811"></a>
+<span class="sourceLineNo">812</span>      // check if the rows are returned and in order<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      assertArrayEquals(("testReverseScan" + (9 - i)).getBytes(), results.get(i).getRow());<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    }<a name="line.814"></a>
+<span class="sourceLineNo">815</span><a name="line.815"></a>
+<span class="sourceLineNo">816</span>    // check that we are at the end of the scan<a name="line.816"></a>
+<span class="sourceLineNo">817</span>    results = handler.getScannerRows(scanId, 10);<a name="line.817"></a>
+<span class="sourceLineNo">818</span>    assertEquals(0, results.size());<a name="line.818"></a>
+<span class="sourceLineNo">819</span><a name="line.819"></a>
+<span class="sourceLineNo">820</span>    // close scanner and check that it was indeed closed<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    handler.closeScanner(scanId);<a name="line.821"></a>
+<span class="sourceLineNo">822</span>    try {<a name="line.822"></a>
+<span class="sourceLineNo">823</span>      handler.getScannerRows(scanId, 10);<a name="line.823"></a>
+<span class="sourceLineNo">824</span>      fail("Scanner id should be invalid");<a name="line.824"></a>
+<span class="sourceLineNo">825</span>    } catch (TIllegalArgument e) {<a name="line.825"></a>
+<span class="sourceLineNo">826</span>    }<a name="line.826"></a>
+<span class="sourceLineNo">827</span>  }<a name="line.827"></a>
+<span class="sourceLineNo">828</span><a name="line.828"></a>
+<span class="sourceLineNo">829</span>  @Test<a name="line.829"></a>
+<span class="sourceLineNo">830</span>  public void testScanWithFilter() throws Exception {<a name="line.830"></a>
+<span class="sourceLineNo">831</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.831"></a>
+<span class="sourceLineNo">832</span>    ByteBuffer table = wrap(tableAname);<a name="line.832"></a>
 <span class="sourceLineNo">833</span><a name="line.833"></a>
-<span class="sourceLineNo">834</span>  @Test<a name="line.834"></a>
-<span class="sourceLineNo">835</span>  public void testScanWithFilter() throws Exception {<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    ByteBuffer table = wrap(tableAname);<a name="line.837"></a>
-<span class="sourceLineNo">838</span><a name="line.838"></a>
-<span class="sourceLineNo">839</span>    // insert data<a name="line.839"></a>
-<span class="sourceLineNo">840</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.840"></a>
-<span class="sourceLineNo">841</span>      wrap(valueAname));<a name="line.841"></a>
-<span class="sourceLineNo">842</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    columnValues.add(columnValue);<a name="line.843"></a>
-<span class="sourceLineNo">844</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.844"></a>
-<span class="sourceLineNo">845</span>      TPut put = new TPut(wrap(("testScanWithFilter" + i).getBytes()), columnValues);<a name="line.845"></a>
-<span class="sourceLineNo">846</span>      handler.put(table, put);<a name="line.846"></a>
-<span class="sourceLineNo">847</span>    }<a name="line.847"></a>
-<span class="sourceLineNo">848</span><a name="line.848"></a>
-<span class="sourceLineNo">849</span>    // create scan instance with filter<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    TScan scan = new TScan();<a name="line.850"></a>
-<span class="sourceLineNo">851</span>    List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.851"></a>
-<span class="sourceLineNo">852</span>    TColumn column = new TColumn();<a name="line.852"></a>
-<span class="sourceLineNo">853</span>    column.setFamily(familyAname);<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    column.setQualifier(qualifierAname);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    columns.add(column);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    scan.setColumns(columns);<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    scan.setStartRow("testScanWithFilter".getBytes());<a name="line.857"></a>
-<span class="sourceLineNo">858</span>    scan.setStopRow("testScanWithFilter\uffff".getBytes());<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    // only get the key part<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    scan.setFilterString(wrap(("KeyOnlyFilter()").getBytes()));<a name="line.860"></a>
-<span class="sourceLineNo">861</span><a name="line.861"></a>
-<span class="sourceLineNo">862</span>    // get scanner and rows<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    int scanId = handler.openScanner(table, scan);<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    List&lt;TResult&gt; results = handler.getScannerRows(scanId, 10);<a name="line.864"></a>
-<span class="sourceLineNo">865</span>    assertEquals(10, results.size());<a name="line.865"></a>
-<span class="sourceLineNo">866</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.866"></a>
-<span class="sourceLineNo">867</span>      // check if the rows are returned and in order<a name="line.867"></a>
-<span class="sourceLineNo">868</span>      assertArrayEquals(("testScanWithFilter" + i).getBytes(), results.get(i).getRow());<a name="line.868"></a>
-<span class="sourceLineNo">869</span>      // check that the value is indeed stripped by the filter<a name="line.869"></a>
-<span class="sourceLineNo">870</span>      assertEquals(0, results.get(i).getColumnValues().get(0).getValue().length);<a name="line.870"></a>
-<span class="sourceLineNo">871</span>    }<a name="line.871"></a>
-<span class="sourceLineNo">872</span><a name="line.872"></a>
-<span class="sourceLineNo">873</span>    // check that we are at the end of the scan<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    results = handler.getScannerRows(scanId, 10);<a name="line.874"></a>
-<span class="sourceLineNo">875</span>    assertEquals(0, results.size());<a name="line.875"></a>
-<span class="sourceLineNo">876</span><a name="line.876"></a>
-<span class="sourceLineNo">877</span>    // close scanner and check that it was indeed closed<a name="line.877"></a>
-<span class="sourceLineNo">878</span>    handler.closeScanner(scanId);<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    try {<a name="line.879"></a>
-<span class="sourceLineNo">880</span>      handler.getScannerRows(scanId, 10);<a name="line.880"></a>
-<span class="sourceLineNo">881</span>      fail("Scanner id should be invalid");<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    } catch (TIllegalArgument e) {<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    }<a name="line.883"></a>
-<span class="sourceLineNo">884</span>  }<a name="line.884"></a>
+<span class="sourceLineNo">834</span>    // insert data<a name="line.834"></a>
+<span class="sourceLineNo">835</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.835"></a>
+<span class="sourceLineNo">836</span>      wrap(valueAname));<a name="line.836"></a>
+<span class="sourceLineNo">837</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.837"></a>
+<span class="sourceLineNo">838</span>    columnValues.add(columnValue);<a name="line.838"></a>
+<span class="sourceLineNo">839</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.839"></a>
+<span class="sourceLineNo">840</span>      TPut put = new TPut(wrap(("testScanWithFilter" + i).getBytes()), columnValues);<a name="line.840"></a>
+<span class="sourceLineNo">841</span>      handler.put(table, put);<a name="line.841"></a>
+<span class="sourceLineNo">842</span>    }<a name="line.842"></a>
+<span class="sourceLineNo">843</span><a name="line.843"></a>
+<span class="sourceLineNo">844</span>    // create scan instance with filter<a name="line.844"></a>
+<span class="sourceLineNo">845</span>    TScan scan = new TScan();<a name="line.845"></a>
+<span class="sourceLineNo">846</span>    List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.846"></a>
+<span class="sourceLineNo">847</span>    TColumn column = new TColumn();<a name="line.847"></a>
+<span class="sourceLineNo">848</span>    column.setFamily(familyAname);<a name="line.848"></a>
+<span class="sourceLineNo">849</span>    column.setQualifier(qualifierAname);<a name="line.849"></a>
+<span class="sourceLineNo">850</span>    columns.add(column);<a name="line.850"></a>
+<span class="sourceLineNo">851</span>    scan.setColumns(columns);<a name="line.851"></a>
+<span class="sourceLineNo">852</span>    scan.setStartRow("testScanWithFilter".getBytes());<a name="line.852"></a>
+<span class="sourceLineNo">853</span>    scan.setStopRow("testScanWithFilter\uffff".getBytes());<a name="line.853"></a>
+<span class="sourceLineNo">854</span>    // only get the key part<a name="line.854"></a>
+<span class="sourceLineNo">855</span>    scan.setFilterString(wrap(("KeyOnlyFilter()").getBytes()));<a name="line.855"></a>
+<span class="sourceLineNo">856</span><a name="line.856"></a>
+<span class="sourceLineNo">857</span>    // get scanner and rows<a name="line.857"></a>
+<span class="sourceLineNo">858</span>    int scanId = handler.openScanner(table, scan);<a name="line.858"></a>
+<span class="sourceLineNo">859</span>    List&lt;TResult&gt; results = handler.getScannerRows(scanId, 10);<a name="line.859"></a>
+<span class="sourceLineNo">860</span>    assertEquals(10, results.size());<a name="line.860"></a>
+<span class="sourceLineNo">861</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.861"></a>
+<span class="sourceLineNo">862</span>      // check if the rows are returned and in order<a name="line.862"></a>
+<span class="sourceLineNo">863</span>      assertArrayEquals(("testScanWithFilter" + i).getBytes(), results.get(i).getRow());<a name="line.863"></a>
+<span class="sourceLineNo">864</span>      // check that the value is indeed stripped by the filter<a name="line.864"></a>
+<span class="sourceLineNo">865</span>      assertEquals(0, results.get(i).getColumnValues().get(0).getValue().length);<a name="line.865"></a>
+<span class="sourceLineNo">866</span>    }<a name="line.866"></a>
+<span class="sourceLineNo">867</span><a name="line.867"></a>
+<span class="sourceLineNo">868</span>    // check that we are at the end of the scan<a name="line.868"></a>
+<span class="sourceLineNo">869</span>    results = handler.getScannerRows(scanId, 10);<a name="line.869"></a>
+<span class="sourceLineNo">870</span>    assertEquals(0, results.size());<a name="line.870"></a>
+<span class="sourceLineNo">871</span><a name="line.871"></a>
+<span class="sourceLineNo">872</span>    // close scanner and check that it was indeed closed<a name="line.872"></a>
+<span class="sourceLineNo">873</span>    handler.closeScanner(scanId);<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    try {<a name="line.874"></a>
+<span class="sourceLineNo">875</span>      handler.getScannerRows(scanId, 10);<a name="line.875"></a>
+<span class="sourceLineNo">876</span>      fail("Scanner id should be invalid");<a name="line.876"></a>
+<span class="sourceLineNo">877</span>    } catch (TIllegalArgument e) {<a name="line.877"></a>
+<span class="sourceLineNo">878</span>    }<a name="line.878"></a>
+<span class="sourceLineNo">879</span>  }<a name="line.879"></a>
+<span class="sourceLineNo">880</span><a name="line.880"></a>
+<span class="sourceLineNo">881</span>  @Test<a name="line.881"></a>
+<span class="sourceLineNo">882</span>  public void testScanWithColumnFamilyTimeRange() throws Exception {<a name="line.882"></a>
+<span class="sourceLineNo">883</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    ByteBuffer table = wrap(tableAname);<a name="line.884"></a>
 <span class="sourceLineNo">885</span><a name="line.885"></a>
-<span class="sourceLineNo">886</span>  @Test<a name="line.886"></a>
-<span class="sourceLineNo">887</span>  public void testScanWithColumnFamilyTimeRange() throws Exception {<a name="line.887"></a>
-<span class="sourceLineNo">888</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    ByteBuffer table = wrap(tableAname);<a name="line.889"></a>
-<span class="sourceLineNo">890</span><a name="line.890"></a>
-<span class="sourceLineNo">891</span>    // insert data<a name="line.891"></a>
-<span class="sourceLineNo">892</span>    TColumnValue familyAColumnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.892"></a>
-<span class="sourceLineNo">893</span>        wrap(valueAname));<a name="line.893"></a>
-<span class="sourceLineNo">894</span>    TColumnValue familyBColumnValue = new TColumnValue(wrap(familyBname), wrap(qualifierBname),<a name="line.894"></a>
-<span class="sourceLineNo">895</span>        wrap(valueBname));<a name="line.895"></a>
-<span class="sourceLineNo">896</span>    long minTimestamp = System.currentTimeMillis();<a name="line.896"></a>
-<span class="sourceLineNo">897</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.897"></a>
-<span class="sourceLineNo">898</span>      familyAColumnValue.setTimestamp(minTimestamp + i);<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      familyBColumnValue.setTimestamp(minTimestamp + i);<a name="line.899"></a>
-<span class="sourceLineNo">900</span>      List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(2);<a name="line.900"></a>
-<span class="sourceLineNo">901</span>      columnValues.add(familyAColumnValue);<a name="line.901"></a>
-<span class="sourceLineNo">902</span>      columnValues.add(familyBColumnValue);<a name="line.902"></a>
-<span class="sourceLineNo">903</span>      TPut put = new TPut(wrap(("testScanWithColumnFamilyTimeRange" + i).getBytes()),<a name="line.903"></a>
-<span class="sourceLineNo">904</span>          columnValues);<a name="line.904"></a>
-<span class="sourceLineNo">905</span>      handler.put(table, put);<a name="line.905"></a>
-<span class="sourceLineNo">906</span>    }<a name="line.906"></a>
-<span class="sourceLineNo">907</span><a name="line.907"></a>
-<span class="sourceLineNo">908</span>    // create scan instance with column family time range<a name="line.908"></a>
-<span class="sourceLineNo">909</span>    TScan scan = new TScan();<a name="line.909"></a>
-<span class="sourceLineNo">910</span>    Map&lt;ByteBuffer,TTimeRange&gt; colFamTimeRangeMap = new HashMap&lt;&gt;(2);<a name="line.910"></a>
-<span class="sourceLineNo">911</span>    colFamTimeRangeMap.put(wrap(familyAname), new TTimeRange(minTimestamp + 3, minTimestamp + 5));<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    colFamTimeRangeMap.put(wrap(familyBname), new TTimeRange(minTimestamp + 6, minTimestamp + 9));<a name="line.912"></a>
-<span class="sourceLineNo">913</span>    scan.setColFamTimeRangeMap(colFamTimeRangeMap);<a name="line.913"></a>
-<span class="sourceLineNo">914</span><a name="line.914"></a>
-<span class="sourceLineNo">915</span>    // get scanner and rows<a name="line.915"></a>
-<span class="sourceLineNo">916</span>    int scanId = handler.openScanner(table, scan);<a name="line.916"></a>
-<span class="sourceLineNo">917</span>    List&lt;TResult&gt; results = handler.getScannerRows(scanId, 5);<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    assertEquals(5, results.size());<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    int familyACount = 0;<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    int familyBCount = 0;<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    for (TResult result : results) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>      List&lt;TColumnValue&gt; columnValues = result.getColumnValues();<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      if (CollectionUtils.isNotEmpty(columnValues)) {<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        if (Bytes.equals(familyAname, columnValues.get(0).getFamily())) {<a name="line.924"></a>
-<span class="sourceLineNo">925</span>          familyACount++;<a name="line.925"></a>
-<span class="sourceLineNo">926</span>        } else if (Bytes.equals(familyBname, columnValues.get(0).getFamily())) {<a name="line.926"></a>
-<span class="sourceLineNo">927</span>          familyBCount++;<a name="line.927"></a>
-<span class="sourceLineNo">928</span>        }<a name="line.928"></a>
-<span class="sourceLineNo">929</span>      }<a name="line.929"></a>
-<span class="sourceLineNo">930</span>    }<a name="line.930"></a>
-<span class="sourceLineNo">931</span>    assertEquals(2, familyACount);<a name="line.931"></a>
-<span class="sourceLineNo">932</span>    assertEquals(3, familyBCount);<a name="line.932"></a>
-<span class="sourceLineNo">933</span><a name="line.933"></a>
-<span class="sourceLineNo">934</span>    // check that we are at the end of the scan<a name="line.934"></a>
-<span class="sourceLineNo">935</span>    results = handler.getScannerRows(scanId, 1);<a name="line.935"></a>
-<span class="sourceLineNo">936</span>    assertEquals(0, results.size());<a name="line.936"></a>
-<span class="sourceLineNo">937</span><a name="line.937"></a>
-<span class="sourceLineNo">938</span>    // close scanner and check that it was indeed closed<a name="line.938"></a>
-<span class="sourceLineNo">939</span>    handler.closeScanner(scanId);<a name="line.939"></a>
-<span class="sourceLineNo">940</span>    try {<a name="line.940"></a>
-<span class="sourceLineNo">941</span>      handler.getScannerRows(scanId, 1);<a name="line.941"></a>
-<span class="sourceLineNo">942</span>      fail("Scanner id should be invalid");<a name="line.942"></a>
-<span class="sourceLineNo">943</span>    } catch (TIllegalArgument e) {<a name="line.943"></a>
-<span class="sourceLineNo">944</span>    }<a name="line.944"></a>
-<span class="sourceLineNo">945</span>  }<a name="line.945"></a>
+<span class="sourceLineNo">886</span>    // insert data<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    TColumnValue familyAColumnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.887"></a>
+<span class="sourceLineNo">888</span>        wrap(valueAname));<a name="line.888"></a>
+<span class="sourceLineNo">889</span>    TColumnValue familyBColumnValue = new TColumnValue(wrap(familyBname), wrap(qualifierBname),<a name="line.889"></a>
+<span class="sourceLineNo">890</span>        wrap(valueBname));<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    long minTimestamp = System.currentTimeMillis();<a name="line.891"></a>
+<span class="sourceLineNo">892</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      familyAColumnValue.setTimestamp(minTimestamp + i);<a name="line.893"></a>
+<span class="sourceLineNo">894</span>      familyBColumnValue.setTimestamp(minTimestamp + i);<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(2);<a name="line.895"></a>
+<span class="sourceLineNo">896</span>      columnValues.add(familyAColumnValue);<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      columnValues.add(familyBColumnValue);<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      TPut put = new TPut(wrap(("testScanWithColumnFamilyTimeRange" + i).getBytes()),<a name="line.898"></a>
+<span class="sourceLineNo">899</span>          columnValues);<a name="line.899"></a>
+<span class="sourceLineNo">900</span>      handler.put(table, put);<a name="line.900"></a>
+<span class="sourceLineNo">901</span>    }<a name="line.901"></a>
+<span class="sourceLineNo">902</span><a name="line.902"></a>
+<span class="sourceLineNo">903</span>    // create scan instance with column family time range<a name="line.903"></a>
+<span class="sourceLineNo">904</span>    TScan scan = new TScan();<a name="line.904"></a>
+<span class="sourceLineNo">905</span>    Map&lt;ByteBuffer,TTimeRange&gt; colFamTimeRangeMap = new HashMap&lt;&gt;(2);<a name="line.905"></a>
+<span class="sourceLineNo">906</span>    colFamTimeRangeMap.put(wrap(familyAname), new TTimeRange(minTimestamp + 3, minTimestamp + 5));<a name="line.906"></a>
+<span class="sourceLineNo">907</span>    colFamTimeRangeMap.put(wrap(familyBname), new TTimeRange(minTimestamp + 6, minTimestamp + 9));<a name="line.907"></a>
+<span class="sourceLineNo">908</span>    scan.setColFamTimeRangeMap(colFamTimeRangeMap);<a name="line.908"></a>
+<span class="sourceLineNo">909</span><a name="line.909"></a>
+<span class="sourceLineNo">910</span>    // get scanner and rows<a name="line.910"></a>
+<span class="sourceLineNo">911</span>    int scanId = handler.openScanner(table, scan);<a name="line.911"></a>
+<span class="sourceLineNo">912</span>    List&lt;TResult&gt; results = handler.getScannerRows(scanId, 5);<a name="line.912"></a>
+<span class="sourceLineNo">913</span>    assertEquals(5, results.size());<a name="line.913"></a>
+<span class="sourceLineNo">914</span>    int familyACount = 0;<a name="line.914"></a>
+<span class="sourceLineNo">915</span>    int familyBCount = 0;<a name="line.915"></a>
+<span class="sourceLineNo">916</span>    for (TResult result : results) {<a name="line.916"></a>
+<span class="sourceLineNo">917</span>      List&lt;TColumnValue&gt; columnValues = result.getColumnValues();<a name="line.917"></a>
+<span class="sourceLineNo">918</span>      if (CollectionUtils.isNotEmpty(columnValues)) {<a name="line.918"></a>
+<span class="sourceLineNo">919</span>        if (Bytes.equals(familyAname, columnValues.get(0).getFamily())) {<a name="line.919"></a>
+<span class="sourceLineNo">920</span>          familyACount++;<a name="line.920"></a>
+<span class="sourceLineNo">921</span>        } else if (Bytes.equals(familyBname, columnValues.get(0).getFamily())) {<a name="line.921"></a>
+<span class="sourceLineNo">922</span>          familyBCount++;<a name="line.922"></a>
+<span class="sourceLineNo">923</span>        }<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      }<a name="line.924"></a>
+<span class="sourceLineNo">925</span>    }<a name="line.925"></a>
+<span class="sourceLineNo">926</span>    assertEquals(2, familyACount);<a name="line.926"></a>
+<span class="sourceLineNo">927</span>    assertEquals(3, familyBCount);<a name="line.927"></a>
+<span class="sourceLineNo">928</span><a name="line.928"></a>
+<span class="sourceLineNo">929</span>    // check that we are at the end of the scan<a name="line.929"></a>
+<span class="sourceLineNo">930</span>    results = handler.getScannerRows(scanId, 1);<a name="line.930"></a>
+<span class="sourceLineNo">931</span>    assertEquals(0, results.size());<a name="line.931"></a>
+<span class="sourceLineNo">932</span><a name="line.932"></a>
+<span class="sourceLineNo">933</span>    // close scanner and check that it was indeed closed<a name="line.933"></a>
+<span class="sourceLineNo">934</span>    handler.closeScanner(scanId);<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    try {<a name="line.935"></a>
+<span class="sourceLineNo">936</span>      handler.getScannerRows(scanId, 1);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>      fail("Scanner id should be invalid");<a name="line.937"></a>
+<span class="sourceLineNo">938</span>    } catch (TIllegalArgument e) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>    }<a name="line.939"></a>
+<span class="sourceLineNo">940</span>  }<a name="line.940"></a>
+<span class="sourceLineNo">941</span><a name="line.941"></a>
+<span class="sourceLineNo">942</span>  @Test<a name="line.942"></a>
+<span class="sourceLineNo">943</span>  public void testSmallScan() throws Exception {<a name="line.943"></a>
+<span class="sourceLineNo">944</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.944"></a>
+<span class="sourceLineNo">945</span>    ByteBuffer table = wrap(tableAname);<a name="line.945"></a>
 <span class="sourceLineNo">946</span><a name="line.946"></a>
-<span class="sourceLineNo">947</span>  @Test<a name="line.947"></a>
-<span class="sourceLineNo">948</span>  public void testSmallScan() throws Exception {<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.949"></a>
-<span class="sourceLineNo">950</span>    ByteBuffer table = wrap(tableAname);<a name="line.950"></a>
-<span class="sourceLineNo">951</span><a name="line.951"></a>
-<span class="sourceLineNo">952</span>    // insert data<a name="line.952"></a>
-<span class="sourceLineNo">953</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.953"></a>
-<span class="sourceLineNo">954</span>            wrap(valueAname));<a name="line.954"></a>
-<span class="sourceLineNo">955</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;TColumnValue&gt;();<a name="line.955"></a>
-<span class="sourceLineNo">956</span>    columnValues.add(columnValue);<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.957"></a>
-<span class="sourceLineNo">958</span>      TPut put = new TPut(wrap(("testSmallScan" + i).getBytes()), columnValues);<a name="line.958"></a>
-<span class="sourceLineNo">959</span>      handler.put(table, put);<a name="line.959"></a>
-<span class="sourceLineNo">960</span>    }<a name="line.960"></a>
-<span class="sourceLineNo">961</span><a name="line.961"></a>
-<span class="sourceLineNo">962</span>    // small scan instance<a name="line.962"></a>
-<span class="sourceLineNo">963</span>    TScan scan = new TScan();<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    scan.setStartRow("testSmallScan".getBytes());<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    scan.setStopRow("testSmallScan\uffff".getBytes());<a name="line.965"></a>
-<span class="sourceLineNo">966</span>    scan.setReadType(TReadType.PREAD);<a name="line.966"></a>
-<span class="sourceLineNo">967</span>    scan.setCaching(2);<a name="line.967"></a>
-<span class="sourceLineNo">968</span><a name="line.968"></a>
-<span class="sourceLineNo">969</span>    // get scanner and rows<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    int scanId = handler.openScanner(table, scan);<a name="line.970"></a>
-<span class="sourceLineNo">971</span>    List&lt;TResult&gt; results = handler.getScannerRows(scanId, 10);<a name="line.971"></a>
-<span class="sourceLineNo">972</span>    assertEquals(10, results.size());<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.973"></a>
-<span class="sourceLineNo">974</span>      // check if the rows are returned and in order<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      assertArrayEquals(("testSmallScan" + i).getBytes(), results.get(i).getRow());<a name="line.975"></a>
-<span class="sourceLineNo">976</span>    }<a name="line.976"></a>
-<span class="sourceLineNo">977</span><a name="line.977"></a>
-<span class="sourceLineNo">978</span>    // check that we are at the end of the scan<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    results = handler.getScannerRows(scanId, 10);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    assertEquals(0, results.size());<a name="line.980"></a>
-<span class="sourceLineNo">981</span><a name="line.981"></a>
-<span class="sourceLineNo">982</span>    // close scanner and check that it was indeed closed<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    handler.closeScanner(scanId);<a name="line.983"></a>
-<span class="sourceLineNo">984</span>    try {<a name="line.984"></a>
-<span class="sourceLineNo">985</span>      handler.getScannerRows(scanId, 10);<a name="line.985"></a>
-<span class="sourceLineNo">986</span>      fail("Scanner id should be invalid");<a name="line.986"></a>
-<span class="sourceLineNo">987</span>    } catch (TIllegalArgument e) {<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    }<a name="line.988"></a>
-<span class="sourceLineNo">989</span>  }<a name="line.989"></a>
-<span class="sourceLineNo">990</span><a name="line.990"></a>
-<span class="sourceLineNo">991</span>  @Test<a name="line.991"></a>
-<span class="sourceLineNo">992</span>  public void testPutTTL() throws Exception {<a name="line.992"></a>
-<span class="sourceLineNo">993</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.993"></a>
-<span class="sourceLineNo">994</span>    byte[] rowName = "testPutTTL".getBytes();<a name="line.994"></a>
-<span class="sourceLineNo">995</span>    ByteBuffer table = wrap(tableAname);<a name="line.995"></a>
-<span class="sourceLineNo">996</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.996"></a>
-<span class="sourceLineNo">997</span><a name="line.997"></a>
-<span class="sourceLineNo">998</span>    // Add some dummy data<a name="line.998"></a>
-<span class="sourceLineNo">999</span>    columnValues.add(<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>        new TColumnValue(<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>            wrap(familyAname),<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>            wrap(qualifierAname),<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>            wrap(Bytes.toBytes(1L))));<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span><a name="line.1004"></a>
+<span class="sourceLineNo">947</span>    // insert data<a name="line.947"></a>
+<span class="sourceLineNo">948</span>    TColumnValue columnValue = new TColumnValue(wrap(familyAname), wrap(qualifierAname),<a name="line.948"></a>
+<span class="sourceLineNo">949</span>            wrap(valueAname));<a name="line.949"></a>
+<span class="sourceLineNo">950</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;TColumnValue&gt;();<a name="line.950"></a>
+<span class="sourceLineNo">951</span>    columnValues.add(columnValue);<a name="line.951"></a>
+<span class="sourceLineNo">952</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>      TPut put = new TPut(wrap(("testSmallScan" + i).getBytes()), columnValues);<a name="line.953"></a>
+<span class="sourceLineNo">954</span>      handler.put(table, put);<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    }<a name="line.955"></a>
+<span class="sourceLineNo">956</span><a name="line.956"></a>
+<span class="sourceLineNo">957</span>    // small scan instance<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    TScan scan = new TScan();<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    scan.setStartRow("testSmallScan".getBytes());<a name="line.959"></a>
+<span class="sourceLineNo">960</span>    scan.setStopRow("testSmallScan\uffff".getBytes());<a name="line.960"></a>
+<span class="sourceLineNo">961</span>    scan.setReadType(TReadType.PREAD);<a name="line.961"></a>
+<span class="sourceLineNo">962</span>    scan.setCaching(2);<a name="line.962"></a>
+<span class="sourceLineNo">963</span><a name="line.963"></a>
+<span class="sourceLineNo">964</span>    // get scanner and rows<a name="line.964"></a>
+<span class="sourceLineNo">965</span>    int scanId = handler.openScanner(table, scan);<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    List&lt;TResult&gt; results = handler.getScannerRows(scanId, 10);<a name="line.966"></a>
+<span class="sourceLineNo">967</span>    assertEquals(10, results.size());<a name="line.967"></a>
+<span class="sourceLineNo">968</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.968"></a>
+<span class="sourceLineNo">969</span>      // check if the rows are returned and in order<a name="line.969"></a>
+<span class="sourceLineNo">970</span>      assertArrayEquals(("testSmallScan" + i).getBytes(), results.get(i).getRow());<a name="line.970"></a>
+<span class="sourceLineNo">971</span>    }<a name="line.971"></a>
+<span class="sourceLineNo">972</span><a name="line.972"></a>
+<span class="sourceLineNo">973</span>    // check that we are at the end of the scan<a name="line.973"></a>
+<span class="sourceLineNo">974</span>    results = handler.getScannerRows(scanId, 10);<a name="line.974"></a>
+<span class="sourceLineNo">975</span>    assertEquals(0, results.size());<a name="line.975"></a>
+<span class="sourceLineNo">976</span><a name="line.976"></a>
+<span class="sourceLineNo">977</span>    // close scanner and check that it was indeed closed<a name="line.977"></a>
+<span class="sourceLineNo">978</span>    handler.closeScanner(scanId);<a name="line.978"></a>
+<span class="sourceLineNo">979</span>    try {<a name="line.979"></a>
+<span class="sourceLineNo">980</span>      handler.getScannerRows(scanId, 10);<a name="line.980"></a>
+<span class="sourceLineNo">981</span>      fail("Scanner id should be invalid");<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    } catch (TIllegalArgument e) {<a name="line.982"></a>
+<span class="sourceLineNo">983</span>    }<a name="line.983"></a>
+<span class="sourceLineNo">984</span>  }<a name="line.984"></a>
+<span class="sourceLineNo">985</span><a name="line.985"></a>
+<span class="sourceLineNo">986</span>  @Test<a name="line.986"></a>
+<span class="sourceLineNo">987</span>  public void testPutTTL() throws Exception {<a name="line.987"></a>
+<span class="sourceLineNo">988</span>    ThriftHBaseServiceHandler handler = createHandler();<a name="line.988"></a>
+<span class="sourceLineNo">989</span>    byte[] rowName = "testPutTTL".getBytes();<a name="line.989"></a>
+<span class="sourceLineNo">990</span>    ByteBuffer table = wrap(tableAname);<a name="line.990"></a>
+<span class="sourceLineNo">991</span>    List&lt;TColumnValue&gt; columnValues = new ArrayList&lt;&gt;(1);<a name="line.991"></a>
+<span class="sourceLineNo">992</span><a name="line.992"></a>
+<span class="sourceLineNo">993</span>    // Add some dummy data<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    columnValues.add(<a name="line.994"></a>
+<span class="sourceLineNo">995</span>        new TColumnValue(<a name="line.995"></a>
+<span class="sourceLineNo">996</span>            wrap(familyAname),<a name="line.996"></a>
+<span class="sourceLineNo">997</span>            wrap(qualifierAname),<a name="line.997"></a>
+<span class="sourceLineNo">998</span>            wrap(Bytes.toBytes(1L))));<a name="line.998"></a>
+<span class="sourceLineNo">999</span><a name="line.999"></a>
+<span class="sourceLineNo">1000</span><a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>    TPut put = new TPut(wrap(rowName), columnValues);<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>    put.setColumnValues(columnValues);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span><a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>    Map&lt;ByteBuffer, ByteBuffer&gt; attributes = new HashMap&lt;&gt;();<a name="line.1004"></a>
 <span class="sourceLineNo">1005</span><a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>    TPut put = new TPut(wrap(rowName), columnValues);<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>    put.setColumnValues(columnValues);<a name="line.1007"></a>
+<span class="sourceLineNo">1006</span>    // Time in ms for the kv's to live.<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>    long ttlTimeMs = 2000L;<a name="line.1007"></a>
 <span class="sourceLineNo">1008</span><a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>    Map&lt;ByteBuffer, ByteBuffer&gt; attributes = new HashMap&lt;&gt;();<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span><a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    // Time in ms for the kv's to live.<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    long ttlTimeMs = 2000L;<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span><a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>    // the _ttl attribute is a number of ms ttl for key values in this put.<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>    attributes.put(wrap(Bytes.toBytes("_ttl")), wrap(Bytes.toBytes(ttlTimeMs)));<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>    // Attach the attributes<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>    put.setAttributes(attributes);<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>    // Send it.<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>    handler.put(table, put);<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span><a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>    // Now get the data back<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>    TGet getOne = new TGet(wrap(rowName));<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>    TResult resultOne = handler.get(table, getOne);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span><a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>    // It's there.<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>    assertArrayEquals(rowName, resultOne.getRow());<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>    assertEquals(1, resultOne.getColumnValuesSize());<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span><a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>    // Sleep 30 seconds just to make 100% sure that the key value should be expired.<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>    Thread.sleep(ttlTimeMs * 15);<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span><a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>    TGet getTwo = new TGet(wrap(rowName));<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>    TResult resultTwo = handler.get(table, getTwo);<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span><a name="line.1034"></a>
+<span class="sourceLineNo">1009</span>    // the _ttl attribute is a number of ms ttl for key values in this put.<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>    attributes.put(wrap(Bytes.toBytes("_ttl")), wrap(Bytes.toBytes(ttlTimeMs)));<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>    // Attach the attributes<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    put.setAttributes(attributes);<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>    // Send it.<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>    handler.put(table, put);<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span><a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>    // Now get the data back<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>    TGet getOne = new TGet(wrap(rowName));<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>    TResult resultOne = handler.get(table, getOne);<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span><a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>    // It's there.<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>    assertArrayEquals(rowName, resultOne.getRow());<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>    assertEquals(1, resultOne.getColumnValuesSize());<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span><a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>    // Sleep 30 seconds just to make 100% sure that the key value should be expired.<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>    Thread.sleep(ttlTimeMs * 15);<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span><a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    TGet getTwo = new TGet(wrap(rowName));<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    TResult resultTwo = handler.get(table, getTwo);<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span><a name="line.1029"></a>
+<span class="sourceLineNo">1030</span><a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>    // Nothing should be there since it's ttl'd out.<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    assertNull(resultTwo.getRow());<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>    assertEquals(0, resultTwo.getColumnValuesSize());<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>  }<a name="line.1034"></a>
 <span class="sourceLineNo">1035</span><a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>    // Nothing should be there since it's ttl'd out.<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>    assertNull(resultTwo.getRow());<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>    assertEquals(0, resultTwo.getColumnValuesSize());<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>  }<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span><a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>  /**<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>   * Padding numbers to make comparison of sort order easier in a for loop<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>   *<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>   * @param n  The number to pad.<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>   * @param pad  The length to pad up to.<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>   * @return The padded number as a string.<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>   */<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>  private String pad(int n, byte pad) {<a name="line.1048"

<TRUNCATED>

[15/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html
index 7dd656e..fdaaf42 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html
@@ -169,1851 +169,1857 @@
 <span class="sourceLineNo">161</span>  static final String BIND_CONF_KEY = "hbase.regionserver.thrift.ipaddress";<a name="line.161"></a>
 <span class="sourceLineNo">162</span>  static final String COMPACT_CONF_KEY = "hbase.regionserver.thrift.compact";<a name="line.162"></a>
 <span class="sourceLineNo">163</span>  static final String FRAMED_CONF_KEY = "hbase.regionserver.thrift.framed";<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  static final String MAX_FRAME_SIZE_CONF_KEY = "hbase.regionserver.thrift.framed.max_frame_size_in_mb";<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  static final String PORT_CONF_KEY = "hbase.regionserver.thrift.port";<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  static final String COALESCE_INC_KEY = "hbase.regionserver.thrift.coalesceIncrement";<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  static final String USE_HTTP_CONF_KEY = "hbase.regionserver.thrift.http";<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  static final String HTTP_MIN_THREADS = "hbase.thrift.http_threads.min";<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  static final String HTTP_MAX_THREADS = "hbase.thrift.http_threads.max";<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>  static final String THRIFT_SSL_ENABLED = "hbase.thrift.ssl.enabled";<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  static final String THRIFT_SSL_KEYSTORE_STORE = "hbase.thrift.ssl.keystore.store";<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  static final String THRIFT_SSL_KEYSTORE_PASSWORD = "hbase.thrift.ssl.keystore.password";<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  static final String THRIFT_SSL_KEYSTORE_KEYPASSWORD = "hbase.thrift.ssl.keystore.keypassword";<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  static final String THRIFT_SSL_EXCLUDE_CIPHER_SUITES = "hbase.thrift.ssl.exclude.cipher.suites";<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  static final String THRIFT_SSL_INCLUDE_CIPHER_SUITES = "hbase.thrift.ssl.include.cipher.suites";<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  static final String THRIFT_SSL_EXCLUDE_PROTOCOLS = "hbase.thrift.ssl.exclude.protocols";<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  static final String THRIFT_SSL_INCLUDE_PROTOCOLS = "hbase.thrift.ssl.include.protocols";<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>  /**<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   * Amount of time in milliseconds before a server thread will timeout<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   * waiting for client to send data on a connected socket. Currently,<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * applies only to TBoundedThreadPoolServer<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   */<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  public static final String THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY =<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    "hbase.thrift.server.socket.read.timeout";<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public static final int THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT = 60000;<a name="line.187"></a>
-<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">164</span>  static final String MAX_FRAME_SIZE_CONF_KEY =<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          "hbase.regionserver.thrift.framed.max_frame_size_in_mb";<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  static final String PORT_CONF_KEY = "hbase.regionserver.thrift.port";<a name="line.166"></a>
+<span class="sourceLineNo">167</span>  static final String COALESCE_INC_KEY = "hbase.regionserver.thrift.coalesceIncrement";<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  static final String USE_HTTP_CONF_KEY = "hbase.regionserver.thrift.http";<a name="line.168"></a>
+<span class="sourceLineNo">169</span>  static final String HTTP_MIN_THREADS = "hbase.thrift.http_threads.min";<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  static final String HTTP_MAX_THREADS = "hbase.thrift.http_threads.max";<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  static final String THRIFT_SSL_ENABLED = "hbase.thrift.ssl.enabled";<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  static final String THRIFT_SSL_KEYSTORE_STORE = "hbase.thrift.ssl.keystore.store";<a name="line.173"></a>
+<span class="sourceLineNo">174</span>  static final String THRIFT_SSL_KEYSTORE_PASSWORD = "hbase.thrift.ssl.keystore.password";<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  static final String THRIFT_SSL_KEYSTORE_KEYPASSWORD = "hbase.thrift.ssl.keystore.keypassword";<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  static final String THRIFT_SSL_EXCLUDE_CIPHER_SUITES = "hbase.thrift.ssl.exclude.cipher.suites";<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  static final String THRIFT_SSL_INCLUDE_CIPHER_SUITES = "hbase.thrift.ssl.include.cipher.suites";<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  static final String THRIFT_SSL_EXCLUDE_PROTOCOLS = "hbase.thrift.ssl.exclude.protocols";<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  static final String THRIFT_SSL_INCLUDE_PROTOCOLS = "hbase.thrift.ssl.include.protocols";<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  /**<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   * Amount of time in milliseconds before a server thread will timeout<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * waiting for client to send data on a connected socket. Currently,<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * applies only to TBoundedThreadPoolServer<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   */<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public static final String THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY =<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    "hbase.thrift.server.socket.read.timeout";<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  public static final int THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT = 60000;<a name="line.188"></a>
 <span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>  /**<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * Thrift quality of protection configuration key. Valid values can be:<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * auth-conf: authentication, integrity and confidentiality checking<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * auth-int: authentication and integrity checking<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * auth: authentication only<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   *<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * This is used to authenticate the callers and support impersonation.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * The thrift server and the HBase cluster must run in secure mode.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  static final String THRIFT_QOP_KEY = "hbase.thrift.security.qop";<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  static final String BACKLOG_CONF_KEY = "hbase.regionserver.thrift.backlog";<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>  private static final String DEFAULT_BIND_ADDR = "0.0.0.0";<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  public static final int DEFAULT_LISTEN_PORT = 9090;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  public static final int HREGION_VERSION = 1;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  static final String THRIFT_SUPPORT_PROXYUSER = "hbase.thrift.support.proxyuser";<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  private final int listenPort;<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>  private Configuration conf;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  volatile TServer tserver;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  volatile Server httpServer;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>  private final Hbase.Iface handler;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  private final ThriftMetrics metrics;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private final HBaseHandler hbaseHandler;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  private final UserGroupInformation realUser;<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  private SaslUtil.QualityOfProtection qop;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  private String host;<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>  private final boolean securityEnabled;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  private final boolean doAsEnabled;<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>  private final JvmPauseMonitor pauseMonitor;<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  /** An enum of server implementation selections */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  enum ImplType {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    HS_HA("hsha", true, THsHaServer.class, true),<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    NONBLOCKING("nonblocking", true, TNonblockingServer.class, true),<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    THREAD_POOL("threadpool", false, TBoundedThreadPoolServer.class, true),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    THREADED_SELECTOR(<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        "threadedselector", true, TThreadedSelectorServer.class, true);<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>    public static final ImplType DEFAULT = THREAD_POOL;<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>    final String option;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    final boolean isAlwaysFramed;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    final Class&lt;? extends TServer&gt; serverClass;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    final boolean canSpecifyBindIP;<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    ImplType(String option, boolean isAlwaysFramed,<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        Class&lt;? extends TServer&gt; serverClass, boolean canSpecifyBindIP) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      this.option = option;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      this.isAlwaysFramed = isAlwaysFramed;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      this.serverClass = serverClass;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      this.canSpecifyBindIP = canSpecifyBindIP;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>    /**<a name="line.247"></a>
-<span class="sourceLineNo">248</span>     * @return &lt;code&gt;-option&lt;/code&gt; so we can get the list of options from<a name="line.248"></a>
-<span class="sourceLineNo">249</span>     *         {@link #values()}<a name="line.249"></a>
-<span class="sourceLineNo">250</span>     */<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    @Override<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    public String toString() {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      return "-" + option;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    String getDescription() {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      StringBuilder sb = new StringBuilder("Use the " +<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          serverClass.getSimpleName());<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      if (isAlwaysFramed) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        sb.append(" This implies the framed transport.");<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      if (this == DEFAULT) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        sb.append("This is the default.");<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      return sb.toString();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>    static OptionGroup createOptionGroup() {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      OptionGroup group = new OptionGroup();<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      for (ImplType t : values()) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        group.addOption(new Option(t.option, t.getDescription()));<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      }<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      return group;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>    static ImplType getServerImpl(Configuration conf) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      String confType = conf.get(SERVER_TYPE_CONF_KEY, THREAD_POOL.option);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      for (ImplType t : values()) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        if (confType.equals(t.option)) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          return t;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>        }<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      }<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      throw new AssertionError("Unknown server ImplType.option:" + confType);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    static void setServerImpl(CommandLine cmd, Configuration conf) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      ImplType chosenType = null;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      int numChosen = 0;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      for (ImplType t : values()) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        if (cmd.hasOption(t.option)) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          chosenType = t;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          ++numChosen;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        }<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      }<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      if (numChosen &lt; 1) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        LOG.info("Using default thrift server type");<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        chosenType = DEFAULT;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      } else if (numChosen &gt; 1) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        throw new AssertionError("Exactly one option out of " +<a name="line.299"></a>
-<span class="sourceLineNo">300</span>          Arrays.toString(values()) + " has to be specified");<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      LOG.info("Using thrift server type " + chosenType.option);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      conf.set(SERVER_TYPE_CONF_KEY, chosenType.option);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
-<span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span>    public String simpleClassName() {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      return serverClass.getSimpleName();<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    }<a name="line.308"></a>
-<span class="sourceLineNo">309</span><a name="line.309"></a>
-<span class="sourceLineNo">310</span>    public static List&lt;String&gt; serversThatCannotSpecifyBindIP() {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      List&lt;String&gt; l = new ArrayList&lt;&gt;();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      for (ImplType t : values()) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        if (!t.canSpecifyBindIP) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>          l.add(t.simpleClassName());<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      return l;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>  public ThriftServerRunner(Configuration conf) throws IOException {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    UserProvider userProvider = UserProvider.instantiate(conf);<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    // login the server principal (if using secure Hadoop)<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    securityEnabled = userProvider.isHadoopSecurityEnabled()<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      &amp;&amp; userProvider.isHBaseSecurityEnabled();<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    if (securityEnabled) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      host = Strings.domainNamePointerToHostName(DNS.getDefaultHost(<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        conf.get("hbase.thrift.dns.interface", "default"),<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        conf.get("hbase.thrift.dns.nameserver", "default")));<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      userProvider.login("hbase.thrift.keytab.file",<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        "hbase.thrift.kerberos.principal", host);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    }<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    this.conf = HBaseConfiguration.create(conf);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    this.listenPort = conf.getInt(PORT_CONF_KEY, DEFAULT_LISTEN_PORT);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    this.metrics = new ThriftMetrics(conf, ThriftMetrics.ThriftServerType.ONE);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    this.pauseMonitor = new JvmPauseMonitor(conf, this.metrics.getSource());<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    this.hbaseHandler = new HBaseHandler(conf, userProvider);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    this.hbaseHandler.initMetrics(metrics);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    this.handler = HbaseHandlerMetricsProxy.newInstance(<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      hbaseHandler, metrics, conf);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    this.realUser = userProvider.getCurrent().getUGI();<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    String strQop = conf.get(THRIFT_QOP_KEY);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    if (strQop != null) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      this.qop = SaslUtil.getQop(strQop);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    doAsEnabled = conf.getBoolean(THRIFT_SUPPORT_PROXYUSER, false);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    if (doAsEnabled) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      if (!conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        LOG.warn("Fail to enable the doAs feature. hbase.regionserver.thrift.http is not configured ");<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      }<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    if (qop != null) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      if (qop != QualityOfProtection.AUTHENTICATION &amp;&amp;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>          qop != QualityOfProtection.INTEGRITY &amp;&amp;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          qop != QualityOfProtection.PRIVACY) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        throw new IOException(String.format("Invalide %s: It must be one of %s, %s, or %s.",<a name="line.357"></a>
-<span class="sourceLineNo">358</span>                              THRIFT_QOP_KEY,<a name="line.358"></a>
-<span class="sourceLineNo">359</span>                              QualityOfProtection.AUTHENTICATION.name(),<a name="line.359"></a>
-<span class="sourceLineNo">360</span>                              QualityOfProtection.INTEGRITY.name(),<a name="line.360"></a>
-<span class="sourceLineNo">361</span>                              QualityOfProtection.PRIVACY.name()));<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      if (!securityEnabled) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        throw new IOException("Thrift server must"<a name="line.364"></a>
-<span class="sourceLineNo">365</span>          + " run in secure mode to support authentication");<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    }<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  /*<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * Runs the Thrift server<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   */<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  @Override<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  public void run() {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    realUser.doAs(new PrivilegedAction&lt;Object&gt;() {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      @Override<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      public Object run() {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>        try {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>          pauseMonitor.start();<a name="line.379"></a>
-<span class="sourceLineNo">380</span>          if (conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>            setupHTTPServer();<a name="line.381"></a>
-<span class="sourceLineNo">382</span>            httpServer.start();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>            httpServer.join();<a name="line.383"></a>
-<span class="sourceLineNo">384</span>          } else {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>            setupServer();<a name="line.385"></a>
-<span class="sourceLineNo">386</span>            tserver.serve();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>          }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        } catch (Exception e) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          LOG.error(HBaseMarkers.FATAL, "Cannot run ThriftServer", e);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>          // Crash the process if the ThriftServer is not running<a name="line.390"></a>
-<span class="sourceLineNo">391</span>          System.exit(-1);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        }<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        return null;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      }<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    });<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>  }<a name="line.397"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  /**<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * Thrift quality of protection configuration key. Valid values can be:<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * auth-conf: authentication, integrity and confidentiality checking<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * auth-int: authentication and integrity checking<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * auth: authentication only<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   *<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * This is used to authenticate the callers and support impersonation.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * The thrift server and the HBase cluster must run in secure mode.<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   */<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  static final String THRIFT_QOP_KEY = "hbase.thrift.security.qop";<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  static final String BACKLOG_CONF_KEY = "hbase.regionserver.thrift.backlog";<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>  private static final String DEFAULT_BIND_ADDR = "0.0.0.0";<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  public static final int DEFAULT_LISTEN_PORT = 9090;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  public static final int HREGION_VERSION = 1;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>  static final String THRIFT_SUPPORT_PROXYUSER = "hbase.thrift.support.proxyuser";<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  private final int listenPort;<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>  private Configuration conf;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  volatile TServer tserver;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>  volatile Server httpServer;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  private final Hbase.Iface handler;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  private final ThriftMetrics metrics;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  private final HBaseHandler hbaseHandler;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  private final UserGroupInformation realUser;<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>  private SaslUtil.QualityOfProtection qop;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  private String host;<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  private final boolean securityEnabled;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  private final boolean doAsEnabled;<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  private final JvmPauseMonitor pauseMonitor;<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>  /** An enum of server implementation selections */<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  enum ImplType {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    HS_HA("hsha", true, THsHaServer.class, true),<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    NONBLOCKING("nonblocking", true, TNonblockingServer.class, true),<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    THREAD_POOL("threadpool", false, TBoundedThreadPoolServer.class, true),<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    THREADED_SELECTOR(<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        "threadedselector", true, TThreadedSelectorServer.class, true);<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>    public static final ImplType DEFAULT = THREAD_POOL;<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    final String option;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    final boolean isAlwaysFramed;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    final Class&lt;? extends TServer&gt; serverClass;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    final boolean canSpecifyBindIP;<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>    ImplType(String option, boolean isAlwaysFramed,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        Class&lt;? extends TServer&gt; serverClass, boolean canSpecifyBindIP) {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      this.option = option;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      this.isAlwaysFramed = isAlwaysFramed;<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      this.serverClass = serverClass;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      this.canSpecifyBindIP = canSpecifyBindIP;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    }<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>    /**<a name="line.248"></a>
+<span class="sourceLineNo">249</span>     * @return &lt;code&gt;-option&lt;/code&gt; so we can get the list of options from<a name="line.249"></a>
+<span class="sourceLineNo">250</span>     *         {@link #values()}<a name="line.250"></a>
+<span class="sourceLineNo">251</span>     */<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    @Override<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    public String toString() {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      return "-" + option;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>    String getDescription() {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      StringBuilder sb = new StringBuilder("Use the " +<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          serverClass.getSimpleName());<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      if (isAlwaysFramed) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        sb.append(" This implies the framed transport.");<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      }<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      if (this == DEFAULT) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        sb.append("This is the default.");<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      return sb.toString();<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>    static OptionGroup createOptionGroup() {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      OptionGroup group = new OptionGroup();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      for (ImplType t : values()) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        group.addOption(new Option(t.option, t.getDescription()));<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      return group;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>    static ImplType getServerImpl(Configuration conf) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      String confType = conf.get(SERVER_TYPE_CONF_KEY, THREAD_POOL.option);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      for (ImplType t : values()) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        if (confType.equals(t.option)) {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>          return t;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      }<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      throw new AssertionError("Unknown server ImplType.option:" + confType);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    static void setServerImpl(CommandLine cmd, Configuration conf) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      ImplType chosenType = null;<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      int numChosen = 0;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      for (ImplType t : values()) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        if (cmd.hasOption(t.option)) {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          chosenType = t;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>          ++numChosen;<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        }<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      }<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      if (numChosen &lt; 1) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        LOG.info("Using default thrift server type");<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        chosenType = DEFAULT;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      } else if (numChosen &gt; 1) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        throw new AssertionError("Exactly one option out of " +<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          Arrays.toString(values()) + " has to be specified");<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      LOG.info("Using thrift server type " + chosenType.option);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      conf.set(SERVER_TYPE_CONF_KEY, chosenType.option);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span>    public String simpleClassName() {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      return serverClass.getSimpleName();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>    public static List&lt;String&gt; serversThatCannotSpecifyBindIP() {<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      List&lt;String&gt; l = new ArrayList&lt;&gt;();<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      for (ImplType t : values()) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        if (!t.canSpecifyBindIP) {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>          l.add(t.simpleClassName());<a name="line.315"></a>
+<span class="sourceLineNo">316</span>        }<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      return l;<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public ThriftServerRunner(Configuration conf) throws IOException {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    UserProvider userProvider = UserProvider.instantiate(conf);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // login the server principal (if using secure Hadoop)<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    securityEnabled = userProvider.isHadoopSecurityEnabled()<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      &amp;&amp; userProvider.isHBaseSecurityEnabled();<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    if (securityEnabled) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      host = Strings.domainNamePointerToHostName(DNS.getDefaultHost(<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        conf.get("hbase.thrift.dns.interface", "default"),<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        conf.get("hbase.thrift.dns.nameserver", "default")));<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      userProvider.login("hbase.thrift.keytab.file",<a name="line.332"></a>
+<span class="sourceLineNo">333</span>        "hbase.thrift.kerberos.principal", host);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    }<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    this.conf = HBaseConfiguration.create(conf);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    this.listenPort = conf.getInt(PORT_CONF_KEY, DEFAULT_LISTEN_PORT);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    this.metrics = new ThriftMetrics(conf, ThriftMetrics.ThriftServerType.ONE);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    this.pauseMonitor = new JvmPauseMonitor(conf, this.metrics.getSource());<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    this.hbaseHandler = new HBaseHandler(conf, userProvider);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    this.hbaseHandler.initMetrics(metrics);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    this.handler = HbaseHandlerMetricsProxy.newInstance(<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      hbaseHandler, metrics, conf);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    this.realUser = userProvider.getCurrent().getUGI();<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    String strQop = conf.get(THRIFT_QOP_KEY);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    if (strQop != null) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      this.qop = SaslUtil.getQop(strQop);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    doAsEnabled = conf.getBoolean(THRIFT_SUPPORT_PROXYUSER, false);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    if (doAsEnabled) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      if (!conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        LOG.warn("Fail to enable the doAs feature. hbase.regionserver.thrift.http is not " +<a name="line.351"></a>
+<span class="sourceLineNo">352</span>                "configured ");<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      }<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    }<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    if (qop != null) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      if (qop != QualityOfProtection.AUTHENTICATION &amp;&amp;<a name="line.356"></a>
+<span class="sourceLineNo">357</span>          qop != QualityOfProtection.INTEGRITY &amp;&amp;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>          qop != QualityOfProtection.PRIVACY) {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>        throw new IOException(String.format("Invalide %s: It must be one of %s, %s, or %s.",<a name="line.359"></a>
+<span class="sourceLineNo">360</span>                              THRIFT_QOP_KEY,<a name="line.360"></a>
+<span class="sourceLineNo">361</span>                              QualityOfProtection.AUTHENTICATION.name(),<a name="line.361"></a>
+<span class="sourceLineNo">362</span>                              QualityOfProtection.INTEGRITY.name(),<a name="line.362"></a>
+<span class="sourceLineNo">363</span>                              QualityOfProtection.PRIVACY.name()));<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      if (!securityEnabled) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>        throw new IOException("Thrift server must"<a name="line.366"></a>
+<span class="sourceLineNo">367</span>          + " run in secure mode to support authentication");<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    }<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  /*<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * Runs the Thrift server<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   */<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  @Override<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  public void run() {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    realUser.doAs(new PrivilegedAction&lt;Object&gt;() {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      @Override<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      public Object run() {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        try {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>          pauseMonitor.start();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>          if (conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>            setupHTTPServer();<a name="line.383"></a>
+<span class="sourceLineNo">384</span>            httpServer.start();<a name="line.384"></a>
+<span class="sourceLineNo">385</span>            httpServer.join();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>          } else {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>            setupServer();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>            tserver.serve();<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          }<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        } catch (Exception e) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>          LOG.error(HBaseMarkers.FATAL, "Cannot run ThriftServer", e);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          // Crash the process if the ThriftServer is not running<a name="line.392"></a>
+<span class="sourceLineNo">393</span>          System.exit(-1);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        }<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        return null;<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      }<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    });<a name="line.397"></a>
 <span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  public void shutdown() {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    if (pauseMonitor != null) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      pauseMonitor.stop();<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    if (tserver != null) {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      tserver.stop();<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      tserver = null;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    }<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    if (httpServer != null) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      try {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        httpServer.stop();<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        httpServer = null;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      } catch (Exception e) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        LOG.error("Problem encountered in shutting down HTTP server " + e.getCause());<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      httpServer = null;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    }<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  }<a name="line.416"></a>
-<span class="sourceLineNo">417</span><a name="line.417"></a>
-<span class="sourceLineNo">418</span>  private void setupHTTPServer() throws IOException {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    TProcessor processor = new Hbase.Processor&lt;&gt;(handler);<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    TServlet thriftHttpServlet = new ThriftHttpServlet(processor, protocolFactory, realUser,<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        conf, hbaseHandler, securityEnabled, doAsEnabled);<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>    // Set the default max thread number to 100 to limit<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    // the number of concurrent requests so that Thrfit HTTP server doesn't OOM easily.<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    // Jetty set the default max thread number to 250, if we don't set it.<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    //<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    // Our default min thread number 2 is the same as that used by Jetty.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    int minThreads = conf.getInt(HTTP_MIN_THREADS, 2);<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    int maxThreads = conf.getInt(HTTP_MAX_THREADS, 100);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    QueuedThreadPool threadPool = new QueuedThreadPool(maxThreads);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    threadPool.setMinThreads(minThreads);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    httpServer = new Server(threadPool);<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>    // Context handler<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    ServletContextHandler ctxHandler = new ServletContextHandler(httpServer, "/", ServletContextHandler.SESSIONS);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    ctxHandler.addServlet(new ServletHolder(thriftHttpServlet), "/*");<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>    // set up Jetty and run the embedded server<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    HttpConfiguration httpConfig = new HttpConfiguration();<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    httpConfig.setSecureScheme("https");<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    httpConfig.setSecurePort(listenPort);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    httpConfig.setHeaderCacheSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    httpConfig.setRequestHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    httpConfig.setResponseHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    httpConfig.setSendServerVersion(false);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    httpConfig.setSendDateHeader(false);<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>    ServerConnector serverConnector;<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    if(conf.getBoolean(THRIFT_SSL_ENABLED, false)) {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      HttpConfiguration httpsConfig = new HttpConfiguration(httpConfig);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      httpsConfig.addCustomizer(new SecureRequestCustomizer());<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>      SslContextFactory sslCtxFactory = new SslContextFactory();<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      String keystore = conf.get(THRIFT_SSL_KEYSTORE_STORE);<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      String password = HBaseConfiguration.getPassword(conf,<a name="line.456"></a>
-<span class="sourceLineNo">457</span>          THRIFT_SSL_KEYSTORE_PASSWORD, null);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      String keyPassword = HBaseConfiguration.getPassword(conf,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>          THRIFT_SSL_KEYSTORE_KEYPASSWORD, password);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      sslCtxFactory.setKeyStorePath(keystore);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      sslCtxFactory.setKeyStorePassword(password);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      sslCtxFactory.setKeyManagerPassword(keyPassword);<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span>      String[] excludeCiphers = conf.getStrings(<a name="line.464"></a>
-<span class="sourceLineNo">465</span>          THRIFT_SSL_EXCLUDE_CIPHER_SUITES, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      if (excludeCiphers.length != 0) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>        sslCtxFactory.setExcludeCipherSuites(excludeCiphers);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      }<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      String[] includeCiphers = conf.getStrings(<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          THRIFT_SSL_INCLUDE_CIPHER_SUITES, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      if (includeCiphers.length != 0) {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>        sslCtxFactory.setIncludeCipherSuites(includeCiphers);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>      // Disable SSLv3 by default due to "Poodle" Vulnerability - CVE-2014-3566<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      String[] excludeProtocols = conf.getStrings(<a name="line.476"></a>
-<span class="sourceLineNo">477</span>          THRIFT_SSL_EXCLUDE_PROTOCOLS, "SSLv3");<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      if (excludeProtocols.length != 0) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        sslCtxFactory.setExcludeProtocols(excludeProtocols);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      }<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      String[] includeProtocols = conf.getStrings(<a name="line.481"></a>
-<span class="sourceLineNo">482</span>          THRIFT_SSL_INCLUDE_PROTOCOLS, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      if (includeProtocols.length != 0) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>        sslCtxFactory.setIncludeProtocols(includeProtocols);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      }<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>      serverConnector = new ServerConnector(httpServer,<a name="line.487"></a>
-<span class="sourceLineNo">488</span>          new SslConnectionFactory(sslCtxFactory, HttpVersion.HTTP_1_1.toString()),<a name="line.488"></a>
-<span class="sourceLineNo">489</span>          new HttpConnectionFactory(httpsConfig));<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    } else {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      serverConnector = new ServerConnector(httpServer, new HttpConnectionFactory(httpConfig));<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    serverConnector.setPort(listenPort);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    String host = getBindAddress(conf).getHostAddress();<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    serverConnector.setHost(host);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    httpServer.addConnector(serverConnector);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    httpServer.setStopAtShutdown(true);<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    if (doAsEnabled) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      ProxyUsers.refreshSuperUserGroupsConfiguration(conf);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    }<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>    LOG.info("Starting Thrift HTTP Server on " + Integer.toString(listenPort));<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  }<a name="line.504"></a>
+<span class="sourceLineNo">399</span>  }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>  public void shutdown() {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    if (pauseMonitor != null) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      pauseMonitor.stop();<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    }<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    if (tserver != null) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      tserver.stop();<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      tserver = null;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    if (httpServer != null) {<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      try {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        httpServer.stop();<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        httpServer = null;<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      } catch (Exception e) {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        LOG.error("Problem encountered in shutting down HTTP server " + e.getCause());<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      }<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      httpServer = null;<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>  }<a name="line.418"></a>
+<span class="sourceLineNo">419</span><a name="line.419"></a>
+<span class="sourceLineNo">420</span>  private void setupHTTPServer() throws IOException {<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    TProcessor processor = new Hbase.Processor&lt;&gt;(handler);<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    TServlet thriftHttpServlet = new ThriftHttpServlet(processor, protocolFactory, realUser,<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        conf, hbaseHandler, securityEnabled, doAsEnabled);<a name="line.424"></a>
+<span class="sourceLineNo">425</span><a name="line.425"></a>
+<span class="sourceLineNo">426</span>    // Set the default max thread number to 100 to limit<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    // the number of concurrent requests so that Thrfit HTTP server doesn't OOM easily.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    // Jetty set the default max thread number to 250, if we don't set it.<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    //<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    // Our default min thread number 2 is the same as that used by Jetty.<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    int minThreads = conf.getInt(HTTP_MIN_THREADS, 2);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    int maxThreads = conf.getInt(HTTP_MAX_THREADS, 100);<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    QueuedThreadPool threadPool = new QueuedThreadPool(maxThreads);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    threadPool.setMinThreads(minThreads);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    httpServer = new Server(threadPool);<a name="line.435"></a>
+<span class="sourceLineNo">436</span><a name="line.436"></a>
+<span class="sourceLineNo">437</span>    // Context handler<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    ServletContextHandler ctxHandler = new ServletContextHandler(httpServer, "/",<a name="line.438"></a>
+<span class="sourceLineNo">439</span>            ServletContextHandler.SESSIONS);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    ctxHandler.addServlet(new ServletHolder(thriftHttpServlet), "/*");<a name="line.440"></a>
+<span class="sourceLineNo">441</span><a name="line.441"></a>
+<span class="sourceLineNo">442</span>    // set up Jetty and run the embedded server<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    HttpConfiguration httpConfig = new HttpConfiguration();<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    httpConfig.setSecureScheme("https");<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    httpConfig.setSecurePort(listenPort);<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    httpConfig.setHeaderCacheSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    httpConfig.setRequestHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    httpConfig.setResponseHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    httpConfig.setSendServerVersion(false);<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    httpConfig.setSendDateHeader(false);<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    ServerConnector serverConnector;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    if(conf.getBoolean(THRIFT_SSL_ENABLED, false)) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      HttpConfiguration httpsConfig = new HttpConfiguration(httpConfig);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      httpsConfig.addCustomizer(new SecureRequestCustomizer());<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>      SslContextFactory sslCtxFactory = new SslContextFactory();<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      String keystore = conf.get(THRIFT_SSL_KEYSTORE_STORE);<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      String password = HBaseConfiguration.getPassword(conf,<a name="line.459"></a>
+<span class="sourceLineNo">460</span>          THRIFT_SSL_KEYSTORE_PASSWORD, null);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      String keyPassword = HBaseConfiguration.getPassword(conf,<a name="line.461"></a>
+<span class="sourceLineNo">462</span>          THRIFT_SSL_KEYSTORE_KEYPASSWORD, password);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      sslCtxFactory.setKeyStorePath(keystore);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      sslCtxFactory.setKeyStorePassword(password);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      sslCtxFactory.setKeyManagerPassword(keyPassword);<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>      String[] excludeCiphers = conf.getStrings(<a name="line.467"></a>
+<span class="sourceLineNo">468</span>          THRIFT_SSL_EXCLUDE_CIPHER_SUITES, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      if (excludeCiphers.length != 0) {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>        sslCtxFactory.setExcludeCipherSuites(excludeCiphers);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      }<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      String[] includeCiphers = conf.getStrings(<a name="line.472"></a>
+<span class="sourceLineNo">473</span>          THRIFT_SSL_INCLUDE_CIPHER_SUITES, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      if (includeCiphers.length != 0) {<a name="line.474"></a>
+<span class="sourceLineNo">475</span>        sslCtxFactory.setIncludeCipherSuites(includeCiphers);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      }<a name="line.476"></a>
+<span class="sourceLineNo">477</span><a name="line.477"></a>
+<span class="sourceLineNo">478</span>      // Disable SSLv3 by default due to "Poodle" Vulnerability - CVE-2014-3566<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      String[] excludeProtocols = conf.getStrings(<a name="line.479"></a>
+<span class="sourceLineNo">480</span>          THRIFT_SSL_EXCLUDE_PROTOCOLS, "SSLv3");<a name="line.480"></a>
+<span class="sourceLineNo">481</span>      if (excludeProtocols.length != 0) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>        sslCtxFactory.setExcludeProtocols(excludeProtocols);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      }<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      String[] includeProtocols = conf.getStrings(<a name="line.484"></a>
+<span class="sourceLineNo">485</span>          THRIFT_SSL_INCLUDE_PROTOCOLS, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      if (includeProtocols.length != 0) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>        sslCtxFactory.setIncludeProtocols(includeProtocols);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      }<a name="line.488"></a>
+<span class="sourceLineNo">489</span><a name="line.489"></a>
+<span class="sourceLineNo">490</span>      serverConnector = new ServerConnector(httpServer,<a name="line.490"></a>
+<span class="sourceLineNo">491</span>          new SslConnectionFactory(sslCtxFactory, HttpVersion.HTTP_1_1.toString()),<a name="line.491"></a>
+<span class="sourceLineNo">492</span>          new HttpConnectionFactory(httpsConfig));<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    } else {<a name="line.493"></a>
+<span class="sourceLineNo">494</span>      serverConnector = new ServerConnector(httpServer, new HttpConnectionFactory(httpConfig));<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    }<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    serverConnector.setPort(listenPort);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    String host = getBindAddress(conf).getHostAddress();<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    serverConnector.setHost(host);<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    httpServer.addConnector(serverConnector);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    httpServer.setStopAtShutdown(true);<a name="line.500"></a>
+<span class="sourceLineNo">501</span><a name="line.501"></a>
+<span class="sourceLineNo">502</span>    if (doAsEnabled) {<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      ProxyUsers.refreshSuperUserGroupsConfiguration(conf);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    }<a name="line.504"></a>
 <span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>  /**<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * Setting up the thrift TServer<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   */<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  private void setupServer() throws Exception {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    // Construct correct ProtocolFactory<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    TProtocolFactory protocolFactory;<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    if (conf.getBoolean(COMPACT_CONF_KEY, false)) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      LOG.debug("Using compact protocol");<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      protocolFactory = new TCompactProtocol.Factory();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    } else {<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      LOG.debug("Using binary protocol");<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      protocolFactory = new TBinaryProtocol.Factory();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    }<a name="line.518"></a>
+<span class="sourceLineNo">506</span>    LOG.info("Starting Thrift HTTP Server on " + Integer.toString(listenPort));<a name="line.506"></a>
+<span class="sourceLineNo">507</span>  }<a name="line.507"></a>
+<span class="sourceLineNo">508</span><a name="line.508"></a>
+<span class="sourceLineNo">509</span>  /**<a name="line.509"></a>
+<span class="sourceLineNo">510</span>   * Setting up the thrift TServer<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
+<span class="sourceLineNo">512</span>  private void setupServer() throws Exception {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    // Construct correct ProtocolFactory<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    TProtocolFactory protocolFactory = getProtocolFactory();<a name="line.514"></a>
+<span class="sourceLineNo">515</span><a name="line.515"></a>
+<span class="sourceLineNo">516</span>    final TProcessor p = new Hbase.Processor&lt;&gt;(handler);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    ImplType implType = ImplType.getServerImpl(conf);<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    TProcessor processor = p;<a name="line.518"></a>
 <span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>    final TProcessor p = new Hbase.Processor&lt;&gt;(handler);<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    ImplType implType = ImplType.getServerImpl(conf);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    TProcessor processor = p;<a name="line.522"></a>
-<span class="sourceLineNo">523</span><a name="line.523"></a>
-<span class="sourceLineNo">524</span>    // Construct correct TransportFactory<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    TTransportFactory transportFactory;<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    if (conf.getBoolean(FRAMED_CONF_KEY, false) || implType.isAlwaysFramed) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      if (qop != null) {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>        throw new RuntimeException("Thrift server authentication"<a name="line.528"></a>
-<span class="sourceLineNo">529</span>          + " doesn't work with framed transport yet");<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      }<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      transportFactory = new TFramedTransport.Factory(<a name="line.531"></a>
-<span class="sourceLineNo">532</span>          conf.getInt(MAX_FRAME_SIZE_CONF_KEY, 2)  * 1024 * 1024);<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      LOG.debug("Using framed transport");<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    } else if (qop == null) {<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      transportFactory = new TTransportFactory();<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    } else {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      // Extract the name from the principal<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      String name = SecurityUtil.getUserFromPrincipal(<a name="line.538"></a>
-<span class="sourceLineNo">539</span>        conf.get("hbase.thrift.kerberos.principal"));<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      Map&lt;String, String&gt; saslProperties = SaslUtil.initSaslProperties(qop.name());<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      TSaslServerTransport.Factory saslFactory = new TSaslServerTransport.Factory();<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      saslFactory.addServerDefinition("GSSAPI", name, host, saslProperties,<a name="line.542"></a>
-<span class="sourceLineNo">543</span>        new SaslGssCallbackHandler() {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>          @Override<a name="line.544"></a>
-<span class="sourceLineNo">545</span>          public void handle(Callback[] callbacks)<a name="line.545"></a>
-<span class="sourceLineNo">546</span>              throws UnsupportedCallbackException {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>            AuthorizeCallback ac = null;<a name="line.547"></a>
-<span class="sourceLineNo">548</span>            for (Callback callback : callbacks) {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>              if (callback instanceof AuthorizeCallback) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>                ac = (AuthorizeCallback) callback;<a name="line.550"></a>
-<span class="sourceLineNo">551</span>              } else {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>                throw new UnsupportedCallbackException(callback,<a name="line.552"></a>
-<span class="sourceLineNo">553</span>                    "Unrecognized SASL GSSAPI Callback");<a name="line.553"></a>
-<span class="sourceLineNo">554</span>              }<a name="line.554"></a>
-<span class="sourceLineNo">555</span>            }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>            if (ac != null) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>              String authid = ac.getAuthenticationID();<a name="line.557"></a>
-<span class="sourceLineNo">558</span>              String authzid = ac.getAuthorizationID();<a name="line.558"></a>
-<span class="sourceLineNo">559</span>              if (!authid.equals(authzid)) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>                ac.setAuthorized(false);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>              } else {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>                ac.setAuthorized(true);<a name="line.562"></a>
-<span class="sourceLineNo">563</span>                String userName = SecurityUtil.getUserFromPrincipal(authzid);<a name="line.563"></a>
-<span class="sourceLineNo">564</span>                LOG.info("Effective user: " + userName);<a name="line.564"></a>
-<span class="sourceLineNo">565</span>                ac.setAuthorizedID(userName);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>              }<a name="line.566"></a>
-<span class="sourceLineNo">567</span>            }<a name="line.567"></a>
-<span class="sourceLineNo">568</span>          }<a name="line.568"></a>
-<span class="sourceLineNo">569</span>        });<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      transportFactory = saslFactory;<a name="line.570"></a>
-<span class="sourceLineNo">571</span><a name="line.571"></a>
-<span class="sourceLineNo">572</span>      // Create a processor wrapper, to get the caller<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      processor = new TProcessor() {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>        @Override<a name="line.574"></a>
-<span class="sourceLineNo">575</span>        public boolean process(TProtocol inProt,<a name="line.575"></a>
-<span class="sourceLineNo">576</span>            TProtocol outProt) throws TException {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>          TSaslServerTransport saslServerTransport =<a name="line.577"></a>
-<span class="sourceLineNo">578</span>            (TSaslServerTransport)inProt.getTransport();<a name="line.578"></a>
-<span class="sourceLineNo">579</span>          SaslServer saslServer = saslServerTransport.getSaslServer();<a name="line.579"></a>
-<span class="sourceLineNo">580</span>          String principal = saslServer.getAuthorizationID();<a name="line.580"></a>
-<span class="sourceLineNo">581</span>          hbaseHandler.setEffectiveUser(principal);<a name="line.581"></a>
-<span class="sourceLineNo">582</span>          return p.process(inProt, outProt);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>        }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>      };<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    }<a name="line.585"></a>
-<span class="sourceLineNo">586</span><a name="line.586"></a>
-<span class="sourceLineNo">587</span>    if (conf.get(BIND_CONF_KEY) != null &amp;&amp; !implType.canSpecifyBindIP) {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      LOG.error("Server types " + Joiner.on(", ").join(<a name="line.588"></a>
-<span class="sourceLineNo">589</span>          ImplType.serversThatCannotSpecifyBindIP()) + " don't support IP " +<a name="line.589"></a>
-<span class="sourceLineNo">590</span>          "address binding at the moment. See " +<a name="line.590"></a>
-<span class="sourceLineNo">591</span>          "https://issues.apache.org/jira/browse/HBASE-2155 for details.");<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      throw new RuntimeException(<a name="line.592"></a>
-<span class="sourceLineNo">593</span>          "-" + BIND_CONF_KEY + " not supported with " + implType);<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    }<a name="line.594"></a>
-<span class="sourceLineNo">595</span><a name="line.595"></a>
-<span class="sourceLineNo">596</span>    // Thrift's implementation uses '0' as a placeholder for 'use the default.'<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    int backlog = conf.getInt(BACKLOG_CONF_KEY, 0);<a name="line.597"></a>
-<span class="sourceLineNo">598</span><a name="line.598"></a>
-<span class="sourceLineNo">599</span>    if (implType == ImplType.HS_HA || implType == ImplType.NONBLOCKING ||<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        implType == ImplType.THREADED_SELECTOR) {<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      InetAddress listenAddress = getBindAddress(conf);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      TNonblockingServerTransport serverTransport = new TNonblockingServerSocket(<a name="line.602"></a>
-<span class="sourceLineNo">603</span>          new InetSocketAddress(listenAddress, listenPort));<a name="line.603"></a>
-<span class="sourceLineNo">604</span><a name="line.604"></a>
-<span class="sourceLineNo">605</span>      if (implType == ImplType.NONBLOCKING) {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>        TNonblockingServer.Args serverArgs =<a name="line.606"></a>
-<span class="sourceLineNo">607</span>            new TNonblockingServer.Args(serverTransport);<a name="line.607"></a>
-<span class="sourceLineNo">608</span>        serverArgs.processor(processor)<a name="line.608"></a>
-<span class="sourceLineNo">609</span>                  .transportFactory(transportFactory)<a name="line.609"></a>
-<span class="sourceLineNo">610</span>                  .protocolFactory(protocolFactory);<a name="line.610"></a>
-<span class="sourceLineNo">611</span>        tserver = new TNonblockingServer(serverArgs);<a name="line.611"></a>
-<span class="sourceLineNo">612</span>      } else if (implType == ImplType.HS_HA) {<a name="line.612"></a>
-<span class="sourceLineNo">613</span>        THsHaServer.Args serverArgs = new THsHaServer.Args(serverTransport);<a name="line.613"></a>
-<span class="sourceLineNo">614</span>        CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        ExecutorService executorService = createExecutor(<a name="line.615"></a>
-<span class="sourceLineNo">616</span>            callQueue, serverArgs.getMaxWorkerThreads(), serverArgs.getMaxWorkerThreads());<a name="line.616"></a>
-<span class="sourceLineNo">617</span>        serverArgs.executorService(executorService)<a name="line.617"></a>
-<span class="sourceLineNo">618</span>                  .processor(processor)<a name="line.618"></a>
-<span class="sourceLineNo">619</span>                  .transportFactory(transportFactory)<a name="line.619"></a>
-<span class="sourceLineNo">620</span>                  .protocolFactory(protocolFactory);<a name="line.620"></a>
-<span class="sourceLineNo">621</span>        tserver = new THsHaServer(serverArgs);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      } else { // THREADED_SELECTOR<a name="line.622"></a>
-<span class="sourceLineNo">623</span>        TThreadedSelectorServer.Args serverArgs =<a name="line.623"></a>
-<span class="sourceLineNo">624</span>            new HThreadedSelectorServerArgs(serverTransport, conf);<a name="line.624"></a>
-<span class="sourceLineNo">625</span>        CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>        ExecutorService executorService = createExecutor(<a name="line.626"></a>
-<span class="sourceLineNo">627</span>            callQueue, serverArgs.getWorkerThreads(), serverArgs.getWorkerThreads());<a name="line.627"></a>
-<span class="sourceLineNo">628</span>        serverArgs.executorService(executorService)<a name="line.628"></a>
-<span class="sourceLineNo">629</span>                  .processor(processor)<a name="line.629"></a>
-<span class="sourceLineNo">630</span>                  .transportFactory(transportFactory)<a name="line.630"></a>
-<span class="sourceLineNo">631</span>                  .protocolFactory(protocolFactory);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>        tserver = new TThreadedSelectorServer(serverArgs);<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      }<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      LOG.info("starting HBase " + implType.simpleClassName() +<a name="line.634"></a>
-<span class="sourceLineNo">635</span>          " server on " + Integer.toString(listenPort));<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    } else if (implType == ImplType.THREAD_POOL) {<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      // Thread pool server. Get the IP address to bind to.<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      InetAddress listenAddress = getBindAddress(conf);<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      int readTimeout = conf.getInt(THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY,<a name="line.639"></a>
-<span class="sourceLineNo">640</span>          THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT);<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      TServerTransport serverTransport = new TServerSocket(<a name="line.641"></a>
-<span class="sourceLineNo">642</span>          new TServerSocket.ServerSocketTransportArgs().<a name="line.642"></a>
-<span class="sourceLineNo">643</span>              bindAddr(new InetSocketAddress(listenAddress, listenPort)).<a name="line.643"></a>
-<span class="sourceLineNo">644</span>              backlog(backlog).<a name="line.644"></a>
-<span class="sourceLineNo">645</span>              clientTimeout(readTimeout));<a name="line.645"></a>
-<span class="sourceLineNo">646</span><a name="line.646"></a>
-<span class="sourceLineNo">647</span>      TBoundedThreadPoolServer.Args serverArgs =<a name="line.647"></a>
-<span class="sourceLineNo">648</span>          new TBoundedThreadPoolServer.Args(serverTransport, conf);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      serverArgs.processor(processor)<a name="line.649"></a>
-<span class="sourceLineNo">650</span>                .transportFactory(transportFactory)<a name="line.650"></a>
-<span class="sourceLineNo">651</span>                .protocolFactory(protocolFactory);<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      LOG.info("starting " + ImplType.THREAD_POOL.simpleClassName() + " on "<a name="line.652"></a>
-<span class="sourceLineNo">653</span>          + listenAddress + ":" + Integer.toString(listenPort)<a name="line.653"></a>
-<span class="sourceLineNo">654</span>          + " with readTimeout " + readTimeout + "ms; " + serverArgs);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      TBoundedThreadPoolServer tserver =<a name="line.655"></a>
-<span class="sourceLineNo">656</span>          new TBoundedThreadPoolServer(serverArgs, metrics);<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      this.tserver = tserver;<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    } else {<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      throw new AssertionError("Unsupported Thrift server implementation: " +<a name="line.659"></a>
-<span class="sourceLineNo">660</span>          implType.simpleClassName());<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    }<a name="line.661"></a>
+<span class="sourceLineNo">520</span>    // Construct correct TransportFactory<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    TTransportFactory transportFactory;<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    if (conf.getBoolean(FRAMED_CONF_KEY, false) || implType.isAlwaysFramed) {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>      if (qop != null) {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>        throw new RuntimeException("Thrift server authentication"<a name="line.524"></a>
+<span class="sourceLineNo">525</span>          + " doesn't work with framed transport yet");<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      }<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      transportFactory = new TFramedTransport.Factory(<a name="line.527"></a>
+<span class="sourceLineNo">528</span>          conf.getInt(MAX_FRAME_SIZE_CONF_KEY, 2)  * 1024 * 1024);<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      LOG.debug("Using framed transport");<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    } else if (qop == null) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>      transportFactory = new TTransportFactory();<a name="line.531"></a>
+<span class="sourceLineNo">532</span>    } else {<a name="line.532"></a>
+<span class="sourceLineNo">533</span>      // Extract the name from the principal<a name="line.533"></a>
+<span class="sourceLineNo">534</span>      String name = SecurityUtil.getUserFromPrincipal(<a name="line.534"></a>
+<span class="sourceLineNo">535</span>        conf.get("hbase.thrift.kerberos.principal"));<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      Map&lt;String, String&gt; saslProperties = SaslUtil.initSaslProperties(qop.name());<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      TSaslServerTransport.Factory saslFactory = new TSaslServerTransport.Factory();<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      saslFactory.addServerDefinition("GSSAPI", name, host, saslProperties,<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        new SaslGssCallbackHandler() {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>          @Override<a name="line.540"></a>
+<span class="sourceLineNo">541</span

<TRUNCATED>

[12/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html
index 34c72f3..111106e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html
@@ -54,193 +54,202 @@
 <span class="sourceLineNo">046</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.46"></a>
 <span class="sourceLineNo">047</span><a name="line.47"></a>
 <span class="sourceLineNo">048</span>@InterfaceAudience.Private<a name="line.48"></a>
-<span class="sourceLineNo">049</span>public class ThriftUtilities {<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>  /**<a name="line.51"></a>
-<span class="sourceLineNo">052</span>   * This utility method creates a new Hbase HColumnDescriptor object based on a<a name="line.52"></a>
-<span class="sourceLineNo">053</span>   * Thrift ColumnDescriptor "struct".<a name="line.53"></a>
-<span class="sourceLineNo">054</span>   *<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   * @param in<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   *          Thrift ColumnDescriptor object<a name="line.56"></a>
-<span class="sourceLineNo">057</span>   * @return HColumnDescriptor<a name="line.57"></a>
-<span class="sourceLineNo">058</span>   * @throws IllegalArgument<a name="line.58"></a>
-<span class="sourceLineNo">059</span>   */<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  static public HColumnDescriptor colDescFromThrift(ColumnDescriptor in)<a name="line.60"></a>
-<span class="sourceLineNo">061</span>      throws IllegalArgument {<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    Compression.Algorithm comp =<a name="line.62"></a>
-<span class="sourceLineNo">063</span>      Compression.getCompressionAlgorithmByName(in.compression.toLowerCase(Locale.ROOT));<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    BloomType bt =<a name="line.64"></a>
-<span class="sourceLineNo">065</span>      BloomType.valueOf(in.bloomFilterType);<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>    if (in.name == null || !in.name.hasRemaining()) {<a name="line.67"></a>
-<span class="sourceLineNo">068</span>      throw new IllegalArgument("column name is empty");<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    }<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    byte [] parsedName = CellUtil.parseColumn(Bytes.getBytes(in.name))[0];<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    HColumnDescriptor col = new HColumnDescriptor(parsedName)<a name="line.71"></a>
-<span class="sourceLineNo">072</span>        .setMaxVersions(in.maxVersions)<a name="line.72"></a>
-<span class="sourceLineNo">073</span>        .setCompressionType(comp)<a name="line.73"></a>
-<span class="sourceLineNo">074</span>        .setInMemory(in.inMemory)<a name="line.74"></a>
-<span class="sourceLineNo">075</span>        .setBlockCacheEnabled(in.blockCacheEnabled)<a name="line.75"></a>
-<span class="sourceLineNo">076</span>        .setTimeToLive(in.timeToLive &gt; 0 ? in.timeToLive : Integer.MAX_VALUE)<a name="line.76"></a>
-<span class="sourceLineNo">077</span>        .setBloomFilterType(bt);<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    return col;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>  /**<a name="line.81"></a>
-<span class="sourceLineNo">082</span>   * This utility method creates a new Thrift ColumnDescriptor "struct" based on<a name="line.82"></a>
-<span class="sourceLineNo">083</span>   * an Hbase HColumnDescriptor object.<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   *<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   * @param in<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   *          Hbase HColumnDescriptor object<a name="line.86"></a>
-<span class="sourceLineNo">087</span>   * @return Thrift ColumnDescriptor<a name="line.87"></a>
-<span class="sourceLineNo">088</span>   */<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  static public ColumnDescriptor colDescFromHbase(HColumnDescriptor in) {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    ColumnDescriptor col = new ColumnDescriptor();<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    col.name = ByteBuffer.wrap(Bytes.add(in.getName(), KeyValue.COLUMN_FAMILY_DELIM_ARRAY));<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    col.maxVersions = in.getMaxVersions();<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    col.compression = in.getCompressionType().toString();<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    col.inMemory = in.isInMemory();<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    col.blockCacheEnabled = in.isBlockCacheEnabled();<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    col.bloomFilterType = in.getBloomFilterType().toString();<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    col.timeToLive = in.getTimeToLive();<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    return col;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  }<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>  /**<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * This utility method creates a list of Thrift TCell "struct" based on<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * an Hbase Cell object. The empty list is returned if the input is null.<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   *<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * @param in<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   *          Hbase Cell object<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   * @return Thrift TCell array<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   */<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  static public List&lt;TCell&gt; cellFromHBase(Cell in) {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    List&lt;TCell&gt; list = new ArrayList&lt;&gt;(1);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    if (in != null) {<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      list.add(new TCell(ByteBuffer.wrap(CellUtil.cloneValue(in)), in.getTimestamp()));<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    }<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    return list;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  }<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  /**<a name="line.117"></a>
-<span class="sourceLineNo">118</span>   * This utility method creates a list of Thrift TCell "struct" based on<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   * an Hbase Cell array. The empty list is returned if the input is null.<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * @param in Hbase Cell array<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   * @return Thrift TCell array<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   */<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  static public List&lt;TCell&gt; cellFromHBase(Cell[] in) {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    List&lt;TCell&gt; list = null;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    if (in != null) {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      list = new ArrayList&lt;&gt;(in.length);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      for (int i = 0; i &lt; in.length; i++) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        list.add(new TCell(ByteBuffer.wrap(CellUtil.cloneValue(in[i])), in[i].getTimestamp()));<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    } else {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      list = new ArrayList&lt;&gt;(0);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    return list;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  }<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>  /**<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * This utility method creates a list of Thrift TRowResult "struct" based on<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * an Hbase RowResult object. The empty list is returned if the input is<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   * null.<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   *<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * @param in<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   *          Hbase RowResult object<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * @param sortColumns<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   *          This boolean dictates if row data is returned in a sorted order<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   *          sortColumns = True will set TRowResult's sortedColumns member<a name="line.145"></a>
-<span class="sourceLineNo">146</span>   *                        which is an ArrayList of TColumn struct<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   *          sortColumns = False will set TRowResult's columns member which is<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   *                        a map of columnName and TCell struct<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * @return Thrift TRowResult array<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   */<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  static public List&lt;TRowResult&gt; rowResultFromHBase(Result[] in, boolean sortColumns) {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    List&lt;TRowResult&gt; results = new ArrayList&lt;&gt;(in.length);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    for ( Result result_ : in) {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>        if(result_ == null || result_.isEmpty()) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>            continue;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        }<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        TRowResult result = new TRowResult();<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        result.row = ByteBuffer.wrap(result_.getRow());<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        if (sortColumns) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          result.sortedColumns = new ArrayList&lt;&gt;();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>          for (Cell kv : result_.rawCells()) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>            result.sortedColumns.add(new TColumn(<a name="line.162"></a>
-<span class="sourceLineNo">163</span>                ByteBuffer.wrap(CellUtil.makeColumn(CellUtil.cloneFamily(kv),<a name="line.163"></a>
-<span class="sourceLineNo">164</span>                    CellUtil.cloneQualifier(kv))),<a name="line.164"></a>
-<span class="sourceLineNo">165</span>                new TCell(ByteBuffer.wrap(CellUtil.cloneValue(kv)), kv.getTimestamp())));<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          }<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        } else {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>          result.columns = new TreeMap&lt;&gt;();<a name="line.168"></a>
-<span class="sourceLineNo">169</span>          for (Cell kv : result_.rawCells()) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>            result.columns.put(<a name="line.170"></a>
-<span class="sourceLineNo">171</span>                ByteBuffer.wrap(CellUtil.makeColumn(CellUtil.cloneFamily(kv),<a name="line.171"></a>
-<span class="sourceLineNo">172</span>                    CellUtil.cloneQualifier(kv))),<a name="line.172"></a>
-<span class="sourceLineNo">173</span>                new TCell(ByteBuffer.wrap(CellUtil.cloneValue(kv)), kv.getTimestamp()));<a name="line.173"></a>
-<span class="sourceLineNo">174</span>          }<a name="line.174"></a>
-<span class="sourceLineNo">175</span>        }<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      results.add(result);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    return results;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  }<a name="line.179"></a>
-<span class="sourceLineNo">180</span><a name="line.180"></a>
-<span class="sourceLineNo">181</span>  /**<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   * This utility method creates a list of Thrift TRowResult "struct" based on<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * an array of Hbase RowResult objects. The empty list is returned if the input is<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * null.<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   *<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * @param in<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   *          Array of Hbase RowResult objects<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @return Thrift TRowResult array<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  static public List&lt;TRowResult&gt; rowResultFromHBase(Result[] in) {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    return rowResultFromHBase(in, false);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  static public List&lt;TRowResult&gt; rowResultFromHBase(Result in) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    Result [] result = { in };<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    return rowResultFromHBase(result);<a name="line.196"></a>
+<span class="sourceLineNo">049</span>public final class ThriftUtilities {<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private ThriftUtilities() {<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  }<a name="line.51"></a>
+<span class="sourceLineNo">052</span><a name="line.52"></a>
+<span class="sourceLineNo">053</span>  /**<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   * This utility method creates a new Hbase HColumnDescriptor object based on a<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   * Thrift ColumnDescriptor "struct".<a name="line.55"></a>
+<span class="sourceLineNo">056</span>   *<a name="line.56"></a>
+<span class="sourceLineNo">057</span>   * @param in Thrift ColumnDescriptor object<a name="line.57"></a>
+<span class="sourceLineNo">058</span>   * @return HColumnDescriptor<a name="line.58"></a>
+<span class="sourceLineNo">059</span>   * @throws IllegalArgument if the column name is empty<a name="line.59"></a>
+<span class="sourceLineNo">060</span>   */<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  static public HColumnDescriptor colDescFromThrift(ColumnDescriptor in)<a name="line.61"></a>
+<span class="sourceLineNo">062</span>      throws IllegalArgument {<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    Compression.Algorithm comp =<a name="line.63"></a>
+<span class="sourceLineNo">064</span>      Compression.getCompressionAlgorithmByName(in.compression.toLowerCase(Locale.ROOT));<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    BloomType bt =<a name="line.65"></a>
+<span class="sourceLineNo">066</span>      BloomType.valueOf(in.bloomFilterType);<a name="line.66"></a>
+<span class="sourceLineNo">067</span><a name="line.67"></a>
+<span class="sourceLineNo">068</span>    if (in.name == null || !in.name.hasRemaining()) {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      throw new IllegalArgument("column name is empty");<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    }<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    byte [] parsedName = CellUtil.parseColumn(Bytes.getBytes(in.name))[0];<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    HColumnDescriptor col = new HColumnDescriptor(parsedName)<a name="line.72"></a>
+<span class="sourceLineNo">073</span>        .setMaxVersions(in.maxVersions)<a name="line.73"></a>
+<span class="sourceLineNo">074</span>        .setCompressionType(comp)<a name="line.74"></a>
+<span class="sourceLineNo">075</span>        .setInMemory(in.inMemory)<a name="line.75"></a>
+<span class="sourceLineNo">076</span>        .setBlockCacheEnabled(in.blockCacheEnabled)<a name="line.76"></a>
+<span class="sourceLineNo">077</span>        .setTimeToLive(in.timeToLive &gt; 0 ? in.timeToLive : Integer.MAX_VALUE)<a name="line.77"></a>
+<span class="sourceLineNo">078</span>        .setBloomFilterType(bt);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    return col;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  }<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  /**<a name="line.82"></a>
+<span class="sourceLineNo">083</span>   * This utility method creates a new Thrift ColumnDescriptor "struct" based on<a name="line.83"></a>
+<span class="sourceLineNo">084</span>   * an Hbase HColumnDescriptor object.<a name="line.84"></a>
+<span class="sourceLineNo">085</span>   *<a name="line.85"></a>
+<span class="sourceLineNo">086</span>   * @param in<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   *          Hbase HColumnDescriptor object<a name="line.87"></a>
+<span class="sourceLineNo">088</span>   * @return Thrift ColumnDescriptor<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   */<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  static public ColumnDescriptor colDescFromHbase(HColumnDescriptor in) {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    ColumnDescriptor col = new ColumnDescriptor();<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    col.name = ByteBuffer.wrap(Bytes.add(in.getName(), KeyValue.COLUMN_FAMILY_DELIM_ARRAY));<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    col.maxVersions = in.getMaxVersions();<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    col.compression = in.getCompressionType().toString();<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    col.inMemory = in.isInMemory();<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    col.blockCacheEnabled = in.isBlockCacheEnabled();<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    col.bloomFilterType = in.getBloomFilterType().toString();<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    col.timeToLive = in.getTimeToLive();<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    return col;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  }<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>  /**<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * This utility method creates a list of Thrift TCell "struct" based on<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   * an Hbase Cell object. The empty list is returned if the input is null.<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   *<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * @param in<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   *          Hbase Cell object<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @return Thrift TCell array<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   */<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  static public List&lt;TCell&gt; cellFromHBase(Cell in) {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    List&lt;TCell&gt; list = new ArrayList&lt;&gt;(1);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    if (in != null) {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      list.add(new TCell(ByteBuffer.wrap(CellUtil.cloneValue(in)), in.getTimestamp()));<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    }<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    return list;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  /**<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   * This utility method creates a list of Thrift TCell "struct" based on<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   * an Hbase Cell array. The empty list is returned if the input is null.<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   * @param in Hbase Cell array<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * @return Thrift TCell array<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   */<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  static public List&lt;TCell&gt; cellFromHBase(Cell[] in) {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    List&lt;TCell&gt; list = null;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    if (in != null) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      list = new ArrayList&lt;&gt;(in.length);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      for (int i = 0; i &lt; in.length; i++) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        list.add(new TCell(ByteBuffer.wrap(CellUtil.cloneValue(in[i])), in[i].getTimestamp()));<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    } else {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      list = new ArrayList&lt;&gt;(0);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    return list;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  }<a name="line.135"></a>
+<span class="sourceLineNo">136</span><a name="line.136"></a>
+<span class="sourceLineNo">137</span>  /**<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   * This utility method creates a list of Thrift TRowResult "struct" based on<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * an Hbase RowResult object. The empty list is returned if the input is<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   * null.<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   *<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   * @param in<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   *          Hbase RowResult object<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * @param sortColumns<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   *          This boolean dictates if row data is returned in a sorted order<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   *          sortColumns = True will set TRowResult's sortedColumns member<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   *                        which is an ArrayList of TColumn struct<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   *          sortColumns = False will set TRowResult's columns member which is<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   *                        a map of columnName and TCell struct<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   * @return Thrift TRowResult array<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   */<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  static public List&lt;TRowResult&gt; rowResultFromHBase(Result[] in, boolean sortColumns) {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    List&lt;TRowResult&gt; results = new ArrayList&lt;&gt;(in.length);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    for (Result result_ : in) {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      if(result_ == null || result_.isEmpty()) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>        continue;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      }<a name="line.157"></a>
+<span class="sourceLineNo">158</span><a name="line.158"></a>
+<span class="sourceLineNo">159</span>      TRowResult result = new TRowResult();<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      result.row = ByteBuffer.wrap(result_.getRow());<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>      if (sortColumns) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        result.sortedColumns = new ArrayList&lt;&gt;();<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        for (Cell kv : result_.rawCells()) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          result.sortedColumns.add(new TColumn(<a name="line.165"></a>
+<span class="sourceLineNo">166</span>              ByteBuffer.wrap(CellUtil.makeColumn(CellUtil.cloneFamily(kv),<a name="line.166"></a>
+<span class="sourceLineNo">167</span>                  CellUtil.cloneQualifier(kv))),<a name="line.167"></a>
+<span class="sourceLineNo">168</span>              new TCell(ByteBuffer.wrap(CellUtil.cloneValue(kv)), kv.getTimestamp())));<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        }<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      } else {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        result.columns = new TreeMap&lt;&gt;();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        for (Cell kv : result_.rawCells()) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>          result.columns.put(<a name="line.173"></a>
+<span class="sourceLineNo">174</span>              ByteBuffer.wrap(CellUtil.makeColumn(CellUtil.cloneFamily(kv),<a name="line.174"></a>
+<span class="sourceLineNo">175</span>                  CellUtil.cloneQualifier(kv))),<a name="line.175"></a>
+<span class="sourceLineNo">176</span>              new TCell(ByteBuffer.wrap(CellUtil.cloneValue(kv)), kv.getTimestamp()));<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      }<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>      results.add(result);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>    return results;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  /**<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * This utility method creates a list of Thrift TRowResult "struct" based on<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   * an array of Hbase RowResult objects. The empty list is returned if the input is<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   * null.<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   *<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * @param in<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   *          Array of Hbase RowResult objects<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * @return Thrift TRowResult array<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   */<a name="line.194"></a>
+<span class="sourceLineNo">195</span>  static public List&lt;TRowResult&gt; rowResultFromHBase(Result[] in) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    return rowResultFromHBase(in, false);<a name="line.196"></a>
 <span class="sourceLineNo">197</span>  }<a name="line.197"></a>
 <span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>  /**<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   * From a {@link TIncrement} create an {@link Increment}.<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   * @param tincrement the Thrift version of an increment<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   * @return an increment that the {@link TIncrement} represented.<a name="line.202"></a>
-<span class="sourceLineNo">203</span>   */<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  public static Increment incrementFromThrift(TIncrement tincrement) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    Increment inc = new Increment(tincrement.getRow());<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    byte[][] famAndQf = CellUtil.parseColumn(tincrement.getColumn());<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    if (famAndQf.length != 2) return null;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    inc.addColumn(famAndQf[0], famAndQf[1], tincrement.getAmmount());<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    return inc;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  }<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  /**<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * From a {@link TAppend} create an {@link Append}.<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   * @param tappend the Thrift version of an append.<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * @return an increment that the {@link TAppend} represented.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   */<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  public static Append appendFromThrift(TAppend tappend) {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    Append append = new Append(tappend.getRow());<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    List&lt;ByteBuffer&gt; columns = tappend.getColumns();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    List&lt;ByteBuffer&gt; values = tappend.getValues();<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>    if (columns.size() != values.size()) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      throw new IllegalArgumentException(<a name="line.223"></a>
-<span class="sourceLineNo">224</span>          "Sizes of columns and values in tappend object are not matching");<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>    int length = columns.size();<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>    for (int i = 0; i &lt; length; i++) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      byte[][] famAndQf = CellUtil.parseColumn(getBytes(columns.get(i)));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      append.addColumn(famAndQf[0], famAndQf[1], getBytes(values.get(i)));<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    return append;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>}<a name="line.235"></a>
+<span class="sourceLineNo">199</span>  static public List&lt;TRowResult&gt; rowResultFromHBase(Result in) {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    Result [] result = { in };<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    return rowResultFromHBase(result);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  }<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>  /**<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   * From a {@link TIncrement} create an {@link Increment}.<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   * @param tincrement the Thrift version of an increment<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * @return an increment that the {@link TIncrement} represented.<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   */<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  public static Increment incrementFromThrift(TIncrement tincrement) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    Increment inc = new Increment(tincrement.getRow());<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    byte[][] famAndQf = CellUtil.parseColumn(tincrement.getColumn());<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>    if (famAndQf.length != 2) {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      return null;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>    inc.addColumn(famAndQf[0], famAndQf[1], tincrement.getAmmount());<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    return inc;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>  }<a name="line.219"></a>
+<span class="sourceLineNo">220</span><a name="line.220"></a>
+<span class="sourceLineNo">221</span>  /**<a name="line.221"></a>
+<span class="sourceLineNo">222</span>   * From a {@link TAppend} create an {@link Append}.<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * @param tappend the Thrift version of an append.<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * @return an increment that the {@link TAppend} represented.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   */<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  public static Append appendFromThrift(TAppend tappend) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    Append append = new Append(tappend.getRow());<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    List&lt;ByteBuffer&gt; columns = tappend.getColumns();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    List&lt;ByteBuffer&gt; values = tappend.getValues();<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>    if (columns.size() != values.size()) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      throw new IllegalArgumentException(<a name="line.232"></a>
+<span class="sourceLineNo">233</span>          "Sizes of columns and values in tappend object are not matching");<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>    int length = columns.size();<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>    for (int i = 0; i &lt; length; i++) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      byte[][] famAndQf = CellUtil.parseColumn(getBytes(columns.get(i)));<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      append.addColumn(famAndQf[0], famAndQf[1], getBytes(values.get(i)));<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    }<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    return append;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>  }<a name="line.243"></a>
+<span class="sourceLineNo">244</span>}<a name="line.244"></a>
 
 
 


[06/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html
index 10c9d49..7dab9fc 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html
@@ -109,7 +109,7 @@
 <span class="sourceLineNo">101</span>  private static ByteBuffer valueBname = asByteBuffer("valueB");<a name="line.101"></a>
 <span class="sourceLineNo">102</span>  private static ByteBuffer valueCname = asByteBuffer("valueC");<a name="line.102"></a>
 <span class="sourceLineNo">103</span>  private static ByteBuffer valueDname = asByteBuffer("valueD");<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  private static ByteBuffer valueEname = asByteBuffer(100l);<a name="line.104"></a>
+<span class="sourceLineNo">104</span>  private static ByteBuffer valueEname = asByteBuffer(100L);<a name="line.104"></a>
 <span class="sourceLineNo">105</span><a name="line.105"></a>
 <span class="sourceLineNo">106</span>  @Rule<a name="line.106"></a>
 <span class="sourceLineNo">107</span>  public TestName name = new TestName();<a name="line.107"></a>
@@ -132,761 +132,748 @@
 <span class="sourceLineNo">124</span>   * consolidate all testing to one method because HBaseClusterTestCase<a name="line.124"></a>
 <span class="sourceLineNo">125</span>   * is prone to OutOfMemoryExceptions when there are three or more<a name="line.125"></a>
 <span class="sourceLineNo">126</span>   * JUnit test methods.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   *<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   * @throws Exception<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   */<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  @Test<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  public void testAll() throws Exception {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    // Run all tests<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    doTestTableCreateDrop();<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    doTestThriftMetrics();<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    doTestTableMutations();<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    doTestTableTimestampsAndColumns();<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    doTestTableScanners();<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    doTestGetTableRegions();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    doTestFilterRegistration();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    doTestGetRegionInfo();<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    doTestIncrements();<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    doTestAppend();<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    doTestCheckAndPut();<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  }<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>  /**<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * Tests for creating, enabling, disabling, and deleting tables.  Also<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * tests that creating a table with an invalid column name yields an<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * IllegalArgument exception.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   *<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * @throws Exception<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public void doTestTableCreateDrop() throws Exception {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    doTestTableCreateDrop(handler);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>  public static void doTestTableCreateDrop(Hbase.Iface handler) throws Exception {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    createTestTables(handler);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    dropTestTables(handler);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>  public static final class MySlowHBaseHandler extends ThriftServerRunner.HBaseHandler<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      implements Hbase.Iface {<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span>    protected MySlowHBaseHandler(Configuration c)<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        throws IOException {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      super(c, UserProvider.instantiate(c));<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>    @Override<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public List&lt;ByteBuffer&gt; getTableNames() throws IOError {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      Threads.sleepWithoutInterrupt(3000);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      return super.getTableNames();<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  }<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>  /**<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   * TODO: These counts are supposed to be zero but sometimes they are not, they are equal to the<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   * passed in maybe.  Investigate why.  My guess is they are set by the test that runs just<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * previous to this one.  Sometimes they are cleared.  Sometimes not.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * @param name<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * @param maybe<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * @param metrics<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * @return<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   */<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  private int getCurrentCount(final String name, final int maybe, final ThriftMetrics metrics) {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    int currentCount = 0;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    try {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      metricsHelper.assertCounter(name, maybe, metrics.getSource());<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      LOG.info("Shouldn't this be null? name=" + name + ", equals=" + maybe);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      currentCount = maybe;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    } catch (AssertionError e) {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      // Ignore<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    }<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    return currentCount;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  }<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>  /**<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   * Tests if the metrics for thrift handler work correctly<a name="line.202"></a>
-<span class="sourceLineNo">203</span>   */<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  public void doTestThriftMetrics() throws Exception {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    LOG.info("START doTestThriftMetrics");<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    Configuration conf = UTIL.getConfiguration();<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    ThriftMetrics metrics = getMetrics(conf);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    Hbase.Iface handler = getHandlerForMetricsTest(metrics, conf);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    int currentCountCreateTable = getCurrentCount("createTable_num_ops", 2, metrics);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    int currentCountDeleteTable = getCurrentCount("deleteTable_num_ops", 2, metrics);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    int currentCountDisableTable = getCurrentCount("disableTable_num_ops", 2, metrics);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    createTestTables(handler);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    dropTestTables(handler);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    metricsHelper.assertCounter("createTable_num_ops", currentCountCreateTable + 2,<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      metrics.getSource());<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    metricsHelper.assertCounter("deleteTable_num_ops", currentCountDeleteTable + 2,<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      metrics.getSource());<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    metricsHelper.assertCounter("disableTable_num_ops", currentCountDisableTable + 2,<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      metrics.getSource());<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    handler.getTableNames(); // This will have an artificial delay.<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>    // 3 to 6 seconds (to account for potential slowness), measured in nanoseconds<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   try {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>     metricsHelper.assertGaugeGt("getTableNames_avg_time", 3L * 1000 * 1000 * 1000, metrics.getSource());<a name="line.224"></a>
-<span class="sourceLineNo">225</span>     metricsHelper.assertGaugeLt("getTableNames_avg_time",6L * 1000 * 1000 * 1000, metrics.getSource());<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   } catch (AssertionError e) {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>     LOG.info("Fix me!  Why does this happen?  A concurrent cluster running?", e);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   }<a name="line.228"></a>
+<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  @Test<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  public void testAll() throws Exception {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    // Run all tests<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    doTestTableCreateDrop();<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    doTestThriftMetrics();<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    doTestTableMutations();<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    doTestTableTimestampsAndColumns();<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    doTestTableScanners();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    doTestGetTableRegions();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    doTestFilterRegistration();<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    doTestGetRegionInfo();<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    doTestIncrements();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    doTestAppend();<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    doTestCheckAndPut();<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>  /**<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * Tests for creating, enabling, disabling, and deleting tables.  Also<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   * tests that creating a table with an invalid column name yields an<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * IllegalArgument exception.<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   */<a name="line.148"></a>
+<span class="sourceLineNo">149</span>  public void doTestTableCreateDrop() throws Exception {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    doTestTableCreateDrop(handler);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  }<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span>  public static void doTestTableCreateDrop(Hbase.Iface handler) throws Exception {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    createTestTables(handler);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    dropTestTables(handler);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>  public static final class MySlowHBaseHandler extends ThriftServerRunner.HBaseHandler<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      implements Hbase.Iface {<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>    protected MySlowHBaseHandler(Configuration c)<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        throws IOException {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      super(c, UserProvider.instantiate(c));<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    }<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>    @Override<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    public List&lt;ByteBuffer&gt; getTableNames() throws IOError {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      Threads.sleepWithoutInterrupt(3000);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      return super.getTableNames();<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    }<a name="line.173"></a>
+<span class="sourceLineNo">174</span>  }<a name="line.174"></a>
+<span class="sourceLineNo">175</span><a name="line.175"></a>
+<span class="sourceLineNo">176</span>  /**<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   * TODO: These counts are supposed to be zero but sometimes they are not, they are equal to the<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   * passed in maybe.  Investigate why.  My guess is they are set by the test that runs just<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   * previous to this one.  Sometimes they are cleared.  Sometimes not.<a name="line.179"></a>
+<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  private int getCurrentCount(final String name, final int maybe, final ThriftMetrics metrics) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    int currentCount = 0;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    try {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      metricsHelper.assertCounter(name, maybe, metrics.getSource());<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      LOG.info("Shouldn't this be null? name=" + name + ", equals=" + maybe);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      currentCount = maybe;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    } catch (AssertionError e) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      // Ignore<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    return currentCount;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  /**<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * Tests if the metrics for thrift handler work correctly<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   */<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  public void doTestThriftMetrics() throws Exception {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    LOG.info("START doTestThriftMetrics");<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    Configuration conf = UTIL.getConfiguration();<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    ThriftMetrics metrics = getMetrics(conf);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    Hbase.Iface handler = getHandlerForMetricsTest(metrics, conf);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    int currentCountCreateTable = getCurrentCount("createTable_num_ops", 2, metrics);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    int currentCountDeleteTable = getCurrentCount("deleteTable_num_ops", 2, metrics);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    int currentCountDisableTable = getCurrentCount("disableTable_num_ops", 2, metrics);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    createTestTables(handler);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    dropTestTables(handler);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    metricsHelper.assertCounter("createTable_num_ops", currentCountCreateTable + 2,<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      metrics.getSource());<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    metricsHelper.assertCounter("deleteTable_num_ops", currentCountDeleteTable + 2,<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      metrics.getSource());<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    metricsHelper.assertCounter("disableTable_num_ops", currentCountDisableTable + 2,<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      metrics.getSource());<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    handler.getTableNames(); // This will have an artificial delay.<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>    // 3 to 6 seconds (to account for potential slowness), measured in nanoseconds<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    try {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      metricsHelper.assertGaugeGt("getTableNames_avg_time", 3L * 1000 * 1000 * 1000,<a name="line.216"></a>
+<span class="sourceLineNo">217</span>              metrics.getSource());<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      metricsHelper.assertGaugeLt("getTableNames_avg_time",6L * 1000 * 1000 * 1000,<a name="line.218"></a>
+<span class="sourceLineNo">219</span>              metrics.getSource());<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    } catch (AssertionError e) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      LOG.info("Fix me!  Why does this happen?  A concurrent cluster running?", e);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>  private static Hbase.Iface getHandlerForMetricsTest(ThriftMetrics metrics, Configuration conf)<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      throws Exception {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    Hbase.Iface handler = new MySlowHBaseHandler(conf);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    return HbaseHandlerMetricsProxy.newInstance(handler, metrics, conf);<a name="line.228"></a>
 <span class="sourceLineNo">229</span>  }<a name="line.229"></a>
 <span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  private static Hbase.Iface getHandlerForMetricsTest(ThriftMetrics metrics, Configuration conf)<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      throws Exception {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    Hbase.Iface handler = new MySlowHBaseHandler(conf);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    return HbaseHandlerMetricsProxy.newInstance(handler, metrics, conf);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  }<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>  private static ThriftMetrics getMetrics(Configuration conf) throws Exception {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    return new ThriftMetrics( conf, ThriftMetrics.ThriftServerType.ONE);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>  }<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>  public static void createTestTables(Hbase.Iface handler) throws Exception {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    // Create/enable/disable/delete tables, ensure methods act correctly<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    assertEquals(handler.getTableNames().size(), 0);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    assertEquals(handler.getTableNames().size(), 1);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    assertEquals(handler.getColumnDescriptors(tableAname).size(), 2);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    assertTrue(handler.isTableEnabled(tableAname));<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    handler.createTable(tableBname, getColumnDescriptors());<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    assertEquals(handler.getTableNames().size(), 2);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>  }<a name="line.251"></a>
-<span class="sourceLineNo">252</span><a name="line.252"></a>
-<span class="sourceLineNo">253</span>  public static void checkTableList(Hbase.Iface handler) throws Exception {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    assertTrue(handler.getTableNames().contains(tableAname));<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  }<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>  public static void dropTestTables(Hbase.Iface handler) throws Exception {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    handler.disableTable(tableBname);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    assertFalse(handler.isTableEnabled(tableBname));<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    handler.deleteTable(tableBname);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    assertEquals(handler.getTableNames().size(), 1);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    handler.disableTable(tableAname);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    assertFalse(handler.isTableEnabled(tableAname));<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    /* TODO Reenable.<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    assertFalse(handler.isTableEnabled(tableAname));<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    handler.enableTable(tableAname);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertTrue(handler.isTableEnabled(tableAname));<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    handler.disableTable(tableAname);*/<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    handler.deleteTable(tableAname);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    assertEquals(handler.getTableNames().size(), 0);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  }<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>  public void doTestIncrements() throws Exception {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    createTestTables(handler);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    doTestIncrements(handler);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    dropTestTables(handler);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>  public static void doTestIncrements(HBaseHandler handler) throws Exception {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    List&lt;Mutation&gt; mutations = new ArrayList&lt;&gt;(1);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    mutations.add(new Mutation(false, columnAAname, valueEname, true));<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    mutations.add(new Mutation(false, columnAname, valueEname, true));<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    handler.mutateRow(tableAname, rowAname, mutations, null);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    handler.mutateRow(tableAname, rowBname, mutations, null);<a name="line.287"></a>
-<span class="sourceLineNo">288</span><a name="line.288"></a>
-<span class="sourceLineNo">289</span>    List&lt;TIncrement&gt; increments = new ArrayList&lt;&gt;(3);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    increments.add(new TIncrement(tableAname, rowBname, columnAAname, 7));<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    increments.add(new TIncrement(tableAname, rowBname, columnAAname, 7));<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    increments.add(new TIncrement(tableAname, rowBname, columnAAname, 7));<a name="line.292"></a>
+<span class="sourceLineNo">231</span>  private static ThriftMetrics getMetrics(Configuration conf) throws Exception {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    return new ThriftMetrics(conf, ThriftMetrics.ThriftServerType.ONE);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  }<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>  public static void createTestTables(Hbase.Iface handler) throws Exception {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    // Create/enable/disable/delete tables, ensure methods act correctly<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    assertEquals(handler.getTableNames().size(), 0);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    assertEquals(handler.getTableNames().size(), 1);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    assertEquals(handler.getColumnDescriptors(tableAname).size(), 2);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    assertTrue(handler.isTableEnabled(tableAname));<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    handler.createTable(tableBname, getColumnDescriptors());<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    assertEquals(handler.getTableNames().size(), 2);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  }<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>  public static void checkTableList(Hbase.Iface handler) throws Exception {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    assertTrue(handler.getTableNames().contains(tableAname));<a name="line.248"></a>
+<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>  public static void dropTestTables(Hbase.Iface handler) throws Exception {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    handler.disableTable(tableBname);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    assertFalse(handler.isTableEnabled(tableBname));<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    handler.deleteTable(tableBname);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    assertEquals(handler.getTableNames().size(), 1);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    handler.disableTable(tableAname);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    assertFalse(handler.isTableEnabled(tableAname));<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    /* TODO Reenable.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    assertFalse(handler.isTableEnabled(tableAname));<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    handler.enableTable(tableAname);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    assertTrue(handler.isTableEnabled(tableAname));<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    handler.disableTable(tableAname);*/<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    handler.deleteTable(tableAname);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    assertEquals(handler.getTableNames().size(), 0);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  }<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>  public void doTestIncrements() throws Exception {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    createTestTables(handler);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    doTestIncrements(handler);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    dropTestTables(handler);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public static void doTestIncrements(HBaseHandler handler) throws Exception {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    List&lt;Mutation&gt; mutations = new ArrayList&lt;&gt;(1);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    mutations.add(new Mutation(false, columnAAname, valueEname, true));<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    mutations.add(new Mutation(false, columnAname, valueEname, true));<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    handler.mutateRow(tableAname, rowAname, mutations, null);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    handler.mutateRow(tableAname, rowBname, mutations, null);<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>    List&lt;TIncrement&gt; increments = new ArrayList&lt;&gt;(3);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    increments.add(new TIncrement(tableAname, rowBname, columnAAname, 7));<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    increments.add(new TIncrement(tableAname, rowBname, columnAAname, 7));<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    increments.add(new TIncrement(tableAname, rowBname, columnAAname, 7));<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>    int numIncrements = 60000;<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    for (int i = 0; i &lt; numIncrements; i++) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      handler.increment(new TIncrement(tableAname, rowAname, columnAname, 2));<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      handler.incrementRows(increments);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
 <span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>    int numIncrements = 60000;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    for (int i = 0; i &lt; numIncrements; i++) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      handler.increment(new TIncrement(tableAname, rowAname, columnAname, 2));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      handler.incrementRows(increments);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    }<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>    Thread.sleep(1000);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    long lv = handler.get(tableAname, rowAname, columnAname, null).get(0).value.getLong();<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    // Wait on all increments being flushed<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    while (handler.coalescer.getQueueSize() != 0) Threads.sleep(10);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    assertEquals((100 + (2 * numIncrements)), lv );<a name="line.304"></a>
+<span class="sourceLineNo">294</span>    Thread.sleep(1000);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    long lv = handler.get(tableAname, rowAname, columnAname, null).get(0).value.getLong();<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    // Wait on all increments being flushed<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    while (handler.coalescer.getQueueSize() != 0) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      Threads.sleep(10);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    }<a name="line.299"></a>
+<span class="sourceLineNo">300</span><a name="line.300"></a>
+<span class="sourceLineNo">301</span>    assertEquals((100 + (2 * numIncrements)), lv);<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>    lv = handler.get(tableAname, rowBname, columnAAname, null).get(0).value.getLong();<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    assertEquals((100 + (3 * 7 * numIncrements)), lv);<a name="line.304"></a>
 <span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>    lv = handler.get(tableAname, rowBname, columnAAname, null).get(0).value.getLong();<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    assertEquals((100 + (3 * 7 * numIncrements)), lv);<a name="line.308"></a>
+<span class="sourceLineNo">306</span>    assertTrue(handler.coalescer.getSuccessfulCoalescings() &gt; 0);<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span>  }<a name="line.308"></a>
 <span class="sourceLineNo">309</span><a name="line.309"></a>
-<span class="sourceLineNo">310</span>    assertTrue(handler.coalescer.getSuccessfulCoalescings() &gt; 0);<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>  }<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>  /**<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * Tests adding a series of Mutations and BatchMutations, including a<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * delete mutation.  Also tests data retrieval, and getting back multiple<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * versions.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   *<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * @throws Exception<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public void doTestTableMutations() throws Exception {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.323"></a>
-<span class="sourceLineNo">324</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    doTestTableMutations(handler);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  }<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  public static void doTestTableMutations(Hbase.Iface handler) throws Exception {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    // Setup<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.330"></a>
-<span class="sourceLineNo">331</span><a name="line.331"></a>
-<span class="sourceLineNo">332</span>    // Apply a few Mutations to rowA<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    //     mutations.add(new Mutation(false, columnAname, valueAname));<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    //     mutations.add(new Mutation(false, columnBname, valueBname));<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    handler.mutateRow(tableAname, rowAname, getMutations(), null);<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>    // Assert that the changes were made<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    assertEquals(valueAname,<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      handler.get(tableAname, rowAname, columnAname, null).get(0).value);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    TRowResult rowResult1 = handler.getRow(tableAname, rowAname, null).get(0);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    assertEquals(rowAname, rowResult1.row);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    assertEquals(valueBname,<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      rowResult1.columns.get(columnBname).value);<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>    // Apply a few BatchMutations for rowA and rowB<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    // rowAmutations.add(new Mutation(true, columnAname, null));<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    // rowAmutations.add(new Mutation(false, columnBname, valueCname));<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    // batchMutations.add(new BatchMutation(rowAname, rowAmutations));<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    // Mutations to rowB<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    // rowBmutations.add(new Mutation(false, columnAname, valueCname));<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    // rowBmutations.add(new Mutation(false, columnBname, valueDname));<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    // batchMutations.add(new BatchMutation(rowBname, rowBmutations));<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    handler.mutateRows(tableAname, getBatchMutations(), null);<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>    // Assert that changes were made to rowA<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    List&lt;TCell&gt; cells = handler.get(tableAname, rowAname, columnAname, null);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    assertFalse(cells.size() &gt; 0);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    assertEquals(valueCname, handler.get(tableAname, rowAname, columnBname, null).get(0).value);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    List&lt;TCell&gt; versions = handler.getVer(tableAname, rowAname, columnBname, MAXVERSIONS, null);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    assertEquals(valueCname, versions.get(0).value);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    assertEquals(valueBname, versions.get(1).value);<a name="line.361"></a>
+<span class="sourceLineNo">310</span>  /**<a name="line.310"></a>
+<span class="sourceLineNo">311</span>   * Tests adding a series of Mutations and BatchMutations, including a<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   * delete mutation.  Also tests data retrieval, and getting back multiple<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * versions.<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  public void doTestTableMutations() throws Exception {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.317"></a>
+<span class="sourceLineNo">318</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    doTestTableMutations(handler);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  public static void doTestTableMutations(Hbase.Iface handler) throws Exception {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    // Setup<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.324"></a>
+<span class="sourceLineNo">325</span><a name="line.325"></a>
+<span class="sourceLineNo">326</span>    // Apply a few Mutations to rowA<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    //     mutations.add(new Mutation(false, columnAname, valueAname));<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    //     mutations.add(new Mutation(false, columnBname, valueBname));<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    handler.mutateRow(tableAname, rowAname, getMutations(), null);<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>    // Assert that the changes were made<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    assertEquals(valueAname,<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      handler.get(tableAname, rowAname, columnAname, null).get(0).value);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    TRowResult rowResult1 = handler.getRow(tableAname, rowAname, null).get(0);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    assertEquals(rowAname, rowResult1.row);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    assertEquals(valueBname,<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      rowResult1.columns.get(columnBname).value);<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>    // Apply a few BatchMutations for rowA and rowB<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    // rowAmutations.add(new Mutation(true, columnAname, null));<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    // rowAmutations.add(new Mutation(false, columnBname, valueCname));<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    // batchMutations.add(new BatchMutation(rowAname, rowAmutations));<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    // Mutations to rowB<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    // rowBmutations.add(new Mutation(false, columnAname, valueCname));<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    // rowBmutations.add(new Mutation(false, columnBname, valueDname));<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // batchMutations.add(new BatchMutation(rowBname, rowBmutations));<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    handler.mutateRows(tableAname, getBatchMutations(), null);<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    // Assert that changes were made to rowA<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    List&lt;TCell&gt; cells = handler.get(tableAname, rowAname, columnAname, null);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    assertFalse(cells.size() &gt; 0);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    assertEquals(valueCname, handler.get(tableAname, rowAname, columnBname, null).get(0).value);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    List&lt;TCell&gt; versions = handler.getVer(tableAname, rowAname, columnBname, MAXVERSIONS, null);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    assertEquals(valueCname, versions.get(0).value);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    assertEquals(valueBname, versions.get(1).value);<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>    // Assert that changes were made to rowB<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    TRowResult rowResult2 = handler.getRow(tableAname, rowBname, null).get(0);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    assertEquals(rowBname, rowResult2.row);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    assertEquals(valueCname, rowResult2.columns.get(columnAname).value);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    assertEquals(valueDname, rowResult2.columns.get(columnBname).value);<a name="line.361"></a>
 <span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>    // Assert that changes were made to rowB<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    TRowResult rowResult2 = handler.getRow(tableAname, rowBname, null).get(0);<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    assertEquals(rowBname, rowResult2.row);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    assertEquals(valueCname, rowResult2.columns.get(columnAname).value);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    assertEquals(valueDname, rowResult2.columns.get(columnBname).value);<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>    // Apply some deletes<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    handler.deleteAll(tableAname, rowAname, columnBname, null);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    handler.deleteAllRow(tableAname, rowBname, null);<a name="line.371"></a>
+<span class="sourceLineNo">363</span>    // Apply some deletes<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    handler.deleteAll(tableAname, rowAname, columnBname, null);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    handler.deleteAllRow(tableAname, rowBname, null);<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>    // Assert that the deletes were applied<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    int size = handler.get(tableAname, rowAname, columnBname, null).size();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    assertEquals(0, size);<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    size = handler.getRow(tableAname, rowBname, null).size();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    assertEquals(0, size);<a name="line.371"></a>
 <span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>    // Assert that the deletes were applied<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    int size = handler.get(tableAname, rowAname, columnBname, null).size();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    assertEquals(0, size);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    size = handler.getRow(tableAname, rowBname, null).size();<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    assertEquals(0, size);<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>    // Try null mutation<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    List&lt;Mutation&gt; mutations = new ArrayList&lt;&gt;(1);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    mutations.add(new Mutation(false, columnAname, null, true));<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    handler.mutateRow(tableAname, rowAname, mutations, null);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    TRowResult rowResult3 = handler.getRow(tableAname, rowAname, null).get(0);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    assertEquals(rowAname, rowResult3.row);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    assertEquals(0, rowResult3.columns.get(columnAname).value.remaining());<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>    // Teardown<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    handler.disableTable(tableAname);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    handler.deleteTable(tableAname);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  }<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>  /**<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   * Similar to testTableMutations(), except Mutations are applied with<a name="line.393"></a>
-<span class="sourceLineNo">394</span>   * specific timestamps and data retrieval uses these timestamps to<a name="line.394"></a>
-<span class="sourceLineNo">395</span>   * extract specific versions of data.<a name="line.395"></a>
-<span class="sourceLineNo">396</span>   *<a name="line.396"></a>
-<span class="sourceLineNo">397</span>   * @throws Exception<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   */<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  public void doTestTableTimestampsAndColumns() throws Exception {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    // Setup<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.404"></a>
-<span class="sourceLineNo">405</span><a name="line.405"></a>
-<span class="sourceLineNo">406</span>    // Apply timestamped Mutations to rowA<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    long time1 = System.currentTimeMillis();<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    handler.mutateRowTs(tableAname, rowAname, getMutations(), time1, null);<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>    Thread.sleep(1000);<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>    // Apply timestamped BatchMutations for rowA and rowB<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    long time2 = System.currentTimeMillis();<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    handler.mutateRowsTs(tableAname, getBatchMutations(), time2, null);<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>    // Apply an overlapping timestamped mutation to rowB<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    handler.mutateRowTs(tableAname, rowBname, getMutations(), time2, null);<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>    // the getVerTs is [inf, ts) so you need to increment one.<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    time1 += 1;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    time2 += 2;<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>    // Assert that the timestamp-related methods retrieve the correct data<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    assertEquals(2, handler.getVerTs(tableAname, rowAname, columnBname, time2,<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      MAXVERSIONS, null).size());<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    assertEquals(1, handler.getVerTs(tableAname, rowAname, columnBname, time1,<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      MAXVERSIONS, null).size());<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>    TRowResult rowResult1 = handler.getRowTs(tableAname, rowAname, time1, null).get(0);<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    TRowResult rowResult2 = handler.getRowTs(tableAname, rowAname, time2, null).get(0);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    // columnA was completely deleted<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    //assertTrue(Bytes.equals(rowResult1.columns.get(columnAname).value, valueAname));<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    assertEquals(rowResult1.columns.get(columnBname).value, valueBname);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    assertEquals(rowResult2.columns.get(columnBname).value, valueCname);<a name="line.434"></a>
-<span class="sourceLineNo">435</span><a name="line.435"></a>
-<span class="sourceLineNo">436</span>    // ColumnAname has been deleted, and will never be visible even with a getRowTs()<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    assertFalse(rowResult2.columns.containsKey(columnAname));<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>    List&lt;ByteBuffer&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    columns.add(columnBname);<a name="line.440"></a>
+<span class="sourceLineNo">373</span>    // Try null mutation<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    List&lt;Mutation&gt; mutations = new ArrayList&lt;&gt;(1);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    mutations.add(new Mutation(false, columnAname, null, true));<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    handler.mutateRow(tableAname, rowAname, mutations, null);<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    TRowResult rowResult3 = handler.getRow(tableAname, rowAname, null).get(0);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    assertEquals(rowAname, rowResult3.row);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    assertEquals(0, rowResult3.columns.get(columnAname).value.remaining());<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>    // Teardown<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    handler.disableTable(tableAname);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    handler.deleteTable(tableAname);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * Similar to testTableMutations(), except Mutations are applied with<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * specific timestamps and data retrieval uses these timestamps to<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * extract specific versions of data.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  public void doTestTableTimestampsAndColumns() throws Exception {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    // Setup<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    // Apply timestamped Mutations to rowA<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    long time1 = System.currentTimeMillis();<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    handler.mutateRowTs(tableAname, rowAname, getMutations(), time1, null);<a name="line.400"></a>
+<span class="sourceLineNo">401</span><a name="line.401"></a>
+<span class="sourceLineNo">402</span>    Thread.sleep(1000);<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>    // Apply timestamped BatchMutations for rowA and rowB<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    long time2 = System.currentTimeMillis();<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    handler.mutateRowsTs(tableAname, getBatchMutations(), time2, null);<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>    // Apply an overlapping timestamped mutation to rowB<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    handler.mutateRowTs(tableAname, rowBname, getMutations(), time2, null);<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // the getVerTs is [inf, ts) so you need to increment one.<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    time1 += 1;<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    time2 += 2;<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>    // Assert that the timestamp-related methods retrieve the correct data<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    assertEquals(2, handler.getVerTs(tableAname, rowAname, columnBname, time2,<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      MAXVERSIONS, null).size());<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    assertEquals(1, handler.getVerTs(tableAname, rowAname, columnBname, time1,<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      MAXVERSIONS, null).size());<a name="line.419"></a>
+<span class="sourceLineNo">420</span><a name="line.420"></a>
+<span class="sourceLineNo">421</span>    TRowResult rowResult1 = handler.getRowTs(tableAname, rowAname, time1, null).get(0);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    TRowResult rowResult2 = handler.getRowTs(tableAname, rowAname, time2, null).get(0);<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    // columnA was completely deleted<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    //assertTrue(Bytes.equals(rowResult1.columns.get(columnAname).value, valueAname));<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    assertEquals(rowResult1.columns.get(columnBname).value, valueBname);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    assertEquals(rowResult2.columns.get(columnBname).value, valueCname);<a name="line.426"></a>
+<span class="sourceLineNo">427</span><a name="line.427"></a>
+<span class="sourceLineNo">428</span>    // ColumnAname has been deleted, and will never be visible even with a getRowTs()<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    assertFalse(rowResult2.columns.containsKey(columnAname));<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>    List&lt;ByteBuffer&gt; columns = new ArrayList&lt;&gt;(1);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    columns.add(columnBname);<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>    rowResult1 = handler.getRowWithColumns(tableAname, rowAname, columns, null).get(0);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    assertEquals(rowResult1.columns.get(columnBname).value, valueCname);<a name="line.435"></a>
+<span class="sourceLineNo">436</span>    assertFalse(rowResult1.columns.containsKey(columnAname));<a name="line.436"></a>
+<span class="sourceLineNo">437</span><a name="line.437"></a>
+<span class="sourceLineNo">438</span>    rowResult1 = handler.getRowWithColumnsTs(tableAname, rowAname, columns, time1, null).get(0);<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    assertEquals(rowResult1.columns.get(columnBname).value, valueBname);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    assertFalse(rowResult1.columns.containsKey(columnAname));<a name="line.440"></a>
 <span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    rowResult1 = handler.getRowWithColumns(tableAname, rowAname, columns, null).get(0);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    assertEquals(rowResult1.columns.get(columnBname).value, valueCname);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    assertFalse(rowResult1.columns.containsKey(columnAname));<a name="line.444"></a>
-<span class="sourceLineNo">445</span><a name="line.445"></a>
-<span class="sourceLineNo">446</span>    rowResult1 = handler.getRowWithColumnsTs(tableAname, rowAname, columns, time1, null).get(0);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    assertEquals(rowResult1.columns.get(columnBname).value, valueBname);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    assertFalse(rowResult1.columns.containsKey(columnAname));<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>    // Apply some timestamped deletes<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    // this actually deletes _everything_.<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    // nukes everything in columnB: forever.<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    handler.deleteAllTs(tableAname, rowAname, columnBname, time1, null);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    handler.deleteAllRowTs(tableAname, rowBname, time2, null);<a name="line.454"></a>
-<span class="sourceLineNo">455</span><a name="line.455"></a>
-<span class="sourceLineNo">456</span>    // Assert that the timestamp-related methods retrieve the correct data<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    int size = handler.getVerTs(tableAname, rowAname, columnBname, time1, MAXVERSIONS, null).size();<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    assertEquals(0, size);<a name="line.458"></a>
+<span class="sourceLineNo">442</span>    // Apply some timestamped deletes<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    // this actually deletes _everything_.<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    // nukes everything in columnB: forever.<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    handler.deleteAllTs(tableAname, rowAname, columnBname, time1, null);<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    handler.deleteAllRowTs(tableAname, rowBname, time2, null);<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>    // Assert that the timestamp-related methods retrieve the correct data<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    int size = handler.getVerTs(tableAname, rowAname, columnBname, time1, MAXVERSIONS, null).size();<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    assertEquals(0, size);<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    size = handler.getVerTs(tableAname, rowAname, columnBname, time2, MAXVERSIONS, null).size();<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    assertEquals(1, size);<a name="line.453"></a>
+<span class="sourceLineNo">454</span><a name="line.454"></a>
+<span class="sourceLineNo">455</span>    // should be available....<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    assertEquals(handler.get(tableAname, rowAname, columnBname, null).get(0).value, valueCname);<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>    assertEquals(0, handler.getRow(tableAname, rowBname, null).size());<a name="line.458"></a>
 <span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>    size = handler.getVerTs(tableAname, rowAname, columnBname, time2, MAXVERSIONS, null).size();<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    assertEquals(1, size);<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>    // should be available....<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    assertEquals(handler.get(tableAname, rowAname, columnBname, null).get(0).value, valueCname);<a name="line.464"></a>
-<span class="sourceLineNo">465</span><a name="line.465"></a>
-<span class="sourceLineNo">466</span>    assertEquals(0, handler.getRow(tableAname, rowBname, null).size());<a name="line.466"></a>
-<span class="sourceLineNo">467</span><a name="line.467"></a>
-<span class="sourceLineNo">468</span>    // Teardown<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    handler.disableTable(tableAname);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    handler.deleteTable(tableAname);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>  }<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>  /**<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * Tests the four different scanner-opening methods (with and without<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   * a stoprow, with and without a timestamp).<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   *<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @throws Exception<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  public void doTestTableScanners() throws Exception {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    // Setup<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.482"></a>
-<span class="sourceLineNo">483</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.484"></a>
-<span class="sourceLineNo">485</span><a name="line.485"></a>
-<span class="sourceLineNo">486</span>    // Apply timestamped Mutations to rowA<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    long time1 = System.currentTimeMillis();<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    handler.mutateRowTs(tableAname, rowAname, getMutations(), time1, null);<a name="line.488"></a>
+<span class="sourceLineNo">460</span>    // Teardown<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    handler.disableTable(tableAname);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    handler.deleteTable(tableAname);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>  }<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>  /**<a name="line.465"></a>
+<span class="sourceLineNo">466</span>   * Tests the four different scanner-opening methods (with and without<a name="line.466"></a>
+<span class="sourceLineNo">467</span>   * a stoprow, with and without a timestamp).<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   */<a name="line.468"></a>
+<span class="sourceLineNo">469</span>  public void doTestTableScanners() throws Exception {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    // Setup<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.472"></a>
+<span class="sourceLineNo">473</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.474"></a>
+<span class="sourceLineNo">475</span><a name="line.475"></a>
+<span class="sourceLineNo">476</span>    // Apply timestamped Mutations to rowA<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    long time1 = System.currentTimeMillis();<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    handler.mutateRowTs(tableAname, rowAname, getMutations(), time1, null);<a name="line.478"></a>
+<span class="sourceLineNo">479</span><a name="line.479"></a>
+<span class="sourceLineNo">480</span>    // Sleep to assure that 'time1' and 'time2' will be different even with a<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    // coarse grained system timer.<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    Thread.sleep(1000);<a name="line.482"></a>
+<span class="sourceLineNo">483</span><a name="line.483"></a>
+<span class="sourceLineNo">484</span>    // Apply timestamped BatchMutations for rowA and rowB<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    long time2 = System.currentTimeMillis();<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    handler.mutateRowsTs(tableAname, getBatchMutations(), time2, null);<a name="line.486"></a>
+<span class="sourceLineNo">487</span><a name="line.487"></a>
+<span class="sourceLineNo">488</span>    time1 += 1;<a name="line.488"></a>
 <span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>    // Sleep to assure that 'time1' and 'time2' will be different even with a<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    // coarse grained system timer.<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    Thread.sleep(1000);<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    // Apply timestamped BatchMutations for rowA and rowB<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    long time2 = System.currentTimeMillis();<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    handler.mutateRowsTs(tableAname, getBatchMutations(), time2, null);<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    time1 += 1;<a name="line.498"></a>
+<span class="sourceLineNo">490</span>    // Test a scanner on all rows and all columns, no timestamp<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    int scanner1 = handler.scannerOpen(tableAname, rowAname, getColumnList(true, true), null);<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    TRowResult rowResult1a = handler.scannerGet(scanner1).get(0);<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    assertEquals(rowResult1a.row, rowAname);<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    // This used to be '1'.  I don't know why when we are asking for two columns<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    // and when the mutations above would seem to add two columns to the row.<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    // -- St.Ack 05/12/2009<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    assertEquals(rowResult1a.columns.size(), 1);<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    assertEquals(rowResult1a.columns.get(columnBname).value, valueCname);<a name="line.498"></a>
 <span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>    // Test a scanner on all rows and all columns, no timestamp<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    int scanner1 = handler.scannerOpen(tableAname, rowAname, getColumnList(true, true), null);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    TRowResult rowResult1a = handler.scannerGet(scanner1).get(0);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    assertEquals(rowResult1a.row, rowAname);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    // This used to be '1'.  I don't know why when we are asking for two columns<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    // and when the mutations above would seem to add two columns to the row.<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    // -- St.Ack 05/12/2009<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    assertEquals(rowResult1a.columns.size(), 1);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    assertEquals(rowResult1a.columns.get(columnBname).value, valueCname);<a name="line.508"></a>
-<span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span>    TRowResult rowResult1b = handler.scannerGet(scanner1).get(0);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    assertEquals(rowResult1b.row, rowBname);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    assertEquals(rowResult1b.columns.size(), 2);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    assertEquals(rowResult1b.columns.get(columnAname).value, valueCname);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    assertEquals(rowResult1b.columns.get(columnBname).value, valueDname);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    closeScanner(scanner1, handler);<a name="line.515"></a>
+<span class="sourceLineNo">500</span>    TRowResult rowResult1b = handler.scannerGet(scanner1).get(0);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    assertEquals(rowResult1b.row, rowBname);<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    assertEquals(rowResult1b.columns.size(), 2);<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    assertEquals(rowResult1b.columns.get(columnAname).value, valueCname);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    assertEquals(rowResult1b.columns.get(columnBname).value, valueDname);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    closeScanner(scanner1, handler);<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>    // Test a scanner on all rows and all columns, with timestamp<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    int scanner2 = handler.scannerOpenTs(tableAname, rowAname, getColumnList(true, true), time1,<a name="line.508"></a>
+<span class="sourceLineNo">509</span>            null);<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    TRowResult rowResult2a = handler.scannerGet(scanner2).get(0);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    assertEquals(rowResult2a.columns.size(), 1);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    // column A deleted, does not exist.<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    //assertTrue(Bytes.equals(rowResult2a.columns.get(columnAname).value, valueAname));<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    assertEquals(rowResult2a.columns.get(columnBname).value, valueBname);<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    closeScanner(scanner2, handler);<a name="line.515"></a>
 <span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>    // Test a scanner on all rows and all columns, with timestamp<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    int scanner2 = handler.scannerOpenTs(tableAname, rowAname, getColumnList(true, true), time1, null);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    TRowResult rowResult2a = handler.scannerGet(scanner2).get(0);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    assertEquals(rowResult2a.columns.size(), 1);<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    // column A deleted, does not exist.<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    //assertTrue(Bytes.equals(rowResult2a.columns.get(columnAname).value, valueAname));<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    assertEquals(rowResult2a.columns.get(columnBname).value, valueBname);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    closeScanner(scanner2, handler);<a name="line.524"></a>
-<span class="sourceLineNo">525</span><a name="line.525"></a>
-<span class="sourceLineNo">526</span>    // Test a scanner on the first row and first column only, no timestamp<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    int scanner3 = handler.scannerOpenWithStop(tableAname, rowAname, rowBname,<a name="line.527"></a>
-<span class="sourceLineNo">528</span>        getColumnList(true, false), null);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    closeScanner(scanner3, handler);<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>    // Test a scanner on the first row and second column only, with timestamp<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    int scanner4 = handler.scannerOpenWithStopTs(tableAname, rowAname, rowBname,<a name="line.532"></a>
-<span class="sourceLineNo">533</span>        getColumnList(false, true), time1, null);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    TRowResult rowResult4a = handler.scannerGet(scanner4).get(0);<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    assertEquals(rowResult4a.columns.size(), 1);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    assertEquals(rowResult4a.columns.get(columnBname).value, valueBname);<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>    // Test scanner using a TScan object once with sortColumns False and once with sortColumns true<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    TScan scanNoSortColumns = new TScan();<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    scanNoSortColumns.setStartRow(rowAname);<a name="line.540"></a>
-<span class="sourceLineNo">541</span>    scanNoSortColumns.setStopRow(rowBname);<a name="line.541"></a>
-<span class="sourceLineNo">542</span><a name="line.542"></a>
-<span class="sourceLineNo">543</span>    int scanner5 = handler.scannerOpenWithScan(tableAname , scanNoSortColumns, null);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    TRowResult rowResult5 = handler.scannerGet(scanner5).get(0);<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    assertEquals(rowResult5.columns.size(), 1);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    assertEquals(rowResult5.columns.get(columnBname).value, valueCname);<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>    TScan scanSortColumns = new TScan();<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    scanSortColumns.setStartRow(rowAname);<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    scanSortColumns.setStopRow(rowBname);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    scanSortColumns = scanSortColumns.setSortColumns(true);<a name="line.551"></a>
-<span class="sourceLineNo">552</span><a name="line.552"></a>
-<span class="sourceLineNo">553</span>    int scanner6 = handler.scannerOpenWithScan(tableAname ,scanSortColumns, null);<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    TRowResult rowResult6 = handler.scannerGet(scanner6).get(0);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    assertEquals(rowResult6.sortedColumns.size(), 1);<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    assertEquals(rowResult6.sortedColumns.get(0).getCell().value, valueCname);<a name="line.556"></a>
-<span class="sourceLineNo">557</span><a name="line.557"></a>
-<span class="sourceLineNo">558</span>    List&lt;Mutation&gt; rowBmutations = new ArrayList&lt;&gt;(20);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    for (int i = 0; i &lt; 20; i++) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      rowBmutations.add(new Mutation(false, asByteBuffer("columnA:" + i), valueCname, true));<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    }<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    ByteBuffer rowC = asByteBuffer("rowC");<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    handler.mutateRow(tableAname, rowC, rowBmutations, null);<a name="line.563"></a>
-<span class="sourceLineNo">564</span><a name="line.564"></a>
-<span class="sourceLineNo">565</span>    TScan scanSortMultiColumns = new TScan();<a name="line.565"></a>
-<span class="sourceLineNo">566</span>    scanSortMultiColumns.setStartRow(rowC);<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    scanSortMultiColumns = scanSortMultiColumns.setSortColumns(true);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    int scanner7 = handler.scannerOpenWithScan(tableAname, scanSortMultiColumns, null);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    TRowResult rowResult7 = handler.scannerGet(scanner7).get(0);<a name="line.569"></a>
-<span class="sourceLineNo">570</span><a name="line.570"></a>
-<span class="sourceLineNo">571</span>    ByteBuffer smallerColumn = asByteBuffer("columnA:");<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    for (int i = 0; i &lt; 20; i++) {<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      ByteBuffer currentColumn = rowResult7.sortedColumns.get(i).columnName;<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      assertTrue(Bytes.compareTo(smallerColumn.array(), currentColumn.array()) &lt; 0);<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      smallerColumn = currentColumn;<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    }<a name="line.576"></a>
-<span class="sourceLineNo">577</span><a name="line.577"></a>
-<span class="sourceLineNo">578</span>    TScan reversedScan = new TScan();<a name="line.578"></a>
-<span class="sourceLineNo">579</span>    reversedScan.setReversed(true);<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    reversedScan.setStartRow(rowBname);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    reversedScan.setStopRow(rowAname);<a name="line.581"></a>
-<span class="sourceLineNo">582</span><a name="line.582"></a>
-<span class="sourceLineNo">583</span>    int scanner8 = handler.scannerOpenWithScan(tableAname , reversedScan, null);<a name="line.583"></a>
-<span class="sourceLineNo">584</span>    List&lt;TRowResult&gt; results = handler.scannerGet(scanner8);<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    handler.scannerClose(scanner8);<a name="line.585"></a>
-<span class="sourceLineNo">586</span>    assertEquals(results.size(), 1);<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    assertEquals(ByteBuffer.wrap(results.get(0).getRow()), rowBname);<a name="line.587"></a>
-<span class="sourceLineNo">588</span><a name="line.588"></a>
-<span class="sourceLineNo">589</span>    // Teardown<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    handler.disableTable(tableAname);<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    handler.deleteTable(tableAname);<a name="line.591"></a>
-<span class="sourceLineNo">592</span>  }<a name="line.592"></a>
-<span class="sourceLineNo">593</span><a name="line.593"></a>
-<span clas

<TRUNCATED>

[34/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index f25f61d..e477dcc 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -26,7 +26,7 @@ under the License.
     <copyright>&#169;2007 - 2018 The Apache Software Foundation</copyright>
     <item>
       <title>File: 3470,
-             Errors: 18827,
+             Errors: 18322,
              Warnings: 0,
              Infos: 0
       </title>
@@ -3765,7 +3765,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  2
+                  0
                 </td>
               </tr>
                           <tr>
@@ -5963,7 +5963,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
@@ -11829,7 +11829,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  3
+                  0
                 </td>
               </tr>
                           <tr>
@@ -13075,7 +13075,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
@@ -18787,7 +18787,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  21
+                  0
                 </td>
               </tr>
                           <tr>
@@ -20187,7 +20187,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  3
+                  0
                 </td>
               </tr>
                           <tr>
@@ -20635,7 +20635,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
@@ -21573,7 +21573,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  1
                 </td>
               </tr>
                           <tr>
@@ -23295,7 +23295,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
@@ -25171,7 +25171,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  10
+                  0
                 </td>
               </tr>
                           <tr>
@@ -25409,7 +25409,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
@@ -27915,7 +27915,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  10
+                  0
                 </td>
               </tr>
                           <tr>
@@ -29497,7 +29497,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  12
+                  0
                 </td>
               </tr>
                           <tr>
@@ -32983,7 +32983,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  2
+                  0
                 </td>
               </tr>
                           <tr>
@@ -33389,7 +33389,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  34
+                  0
                 </td>
               </tr>
                           <tr>
@@ -33431,7 +33431,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  15
+                  0
                 </td>
               </tr>
                           <tr>
@@ -33641,7 +33641,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  11
+                  0
                 </td>
               </tr>
                           <tr>
@@ -33767,7 +33767,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
@@ -35265,7 +35265,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  3
+                  0
                 </td>
               </tr>
                           <tr>
@@ -36203,7 +36203,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  7
+                  0
                 </td>
               </tr>
                           <tr>
@@ -38709,7 +38709,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  20
+                  0
                 </td>
               </tr>
                           <tr>
@@ -39465,7 +39465,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
@@ -40221,7 +40221,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
@@ -41271,7 +41271,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
@@ -44001,7 +44001,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  20
+                  0
                 </td>
               </tr>
                           <tr>
@@ -45933,7 +45933,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  5
+                  0
                 </td>
               </tr>
                           <tr>
@@ -47067,7 +47067,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  283
+                  0
                 </td>
               </tr>
                           <tr>
@@ -48299,7 +48299,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  3
+                  0
                 </td>
               </tr>
                           <tr>
@@ -48411,7 +48411,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  33
+                  0
                 </td>
               </tr>
                           <tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 1822184..338350c 100644
--- a/coc.html
+++ b/coc.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -380,7 +380,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/cygwin.html
----------------------------------------------------------------------
diff --git a/cygwin.html b/cygwin.html
index 4f8518b..867702e 100644
--- a/cygwin.html
+++ b/cygwin.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Installing Apache HBase (TM) on Windows using Cygwin</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -679,7 +679,7 @@ Now your <b>HBase </b>server is running, <b>start coding</b> and build that next
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index 0349e9b..64071b5 100644
--- a/dependencies.html
+++ b/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -445,7 +445,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 833ca89..99b0eed 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -1082,7 +1082,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index ebfd39e..5b3efef 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -318,7 +318,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index d86350c..1b4abc9 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -980,7 +980,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 4fca1e6..daf6fa6 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3747,21 +3747,21 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Sat Jan  6 14:41:47 UTC 2018"</code></td>
+<td class="colLast"><code>"Sun Jan  7 14:43:00 UTC 2018"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#revision">revision</a></code></td>
-<td class="colLast"><code>"ea819d1733d94cd357177ca1070f5c80b0321d03"</code></td>
+<td class="colLast"><code>"8ae2a2150b517123cde214bb5543557b562c4c01"</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#srcChecksum">srcChecksum</a></code></td>
-<td class="colLast"><code>"297ad4e2821241231a080aac1211b78c"</code></td>
+<td class="colLast"><code>"8254324d460162e9c8d1041940c3ed82"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.url">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 2b9cbeb..0e8c8dc 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -10119,6 +10119,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/ScannerContext.html#checkAnyLimitReached-org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope-">checkAnyLimitReached(ScannerContext.LimitScope)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html#checkArguments-org.apache.commons.cli.CommandLine-">checkArguments(CommandLine)</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftServer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/IndividualBytesFieldCell.html#checkArrayBounds-byte:A-int-int-">checkArrayBounds(byte[], int, int)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/IndividualBytesFieldCell.html" title="class in org.apache.hadoop.hbase">IndividualBytesFieldCell</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/visibility/VisibilityController.html#checkAuths">checkAuths</a></span> - Variable in class org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/VisibilityController.html" title="class in org.apache.hadoop.hbase.security.visibility">VisibilityController</a></dt>
@@ -34148,6 +34150,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#getBindAddress-org.apache.hadoop.conf.Configuration-">getBindAddress(Configuration)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html#getBindAddress-org.apache.hadoop.conf.Configuration-org.apache.commons.cli.CommandLine-">getBindAddress(Configuration, CommandLine)</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftServer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#getBitmapIndex-long-">getBitmapIndex(long)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.<a href="org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.BitSetNode</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/BlockCache.html#getBlock-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-boolean-boolean-boolean-">getBlock(BlockCacheKey, boolean, boolean, boolean)</a></span> - Method in interface org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a></dt>
@@ -38988,6 +38992,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/BufferedMutatorParams.html#getImplementationClassName--">getImplementationClassName()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/BufferedMutatorParams.html" title="class in org.apache.hadoop.hbase.client">BufferedMutatorParams</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html#getImplType-boolean-boolean-boolean-">getImplType(boolean, boolean, boolean)</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftServer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/HBaseFsck.html#getIncludedTables--">getIncludedTables()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/HBaseFsck.html" title="class in org.apache.hadoop.hbase.util">HBaseFsck</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/compactions/DateTieredCompactionPolicy.html#getIncomingWindow-long-">getIncomingWindow(long)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.compactions.<a href="org/apache/hadoop/hbase/regionserver/compactions/DateTieredCompactionPolicy.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">DateTieredCompactionPolicy</a></dt>
@@ -40040,6 +40046,8 @@
 <dd>
 <div class="block">Get a copy of current registered listeners</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html#getListenPort-org.apache.hadoop.conf.Configuration-org.apache.commons.cli.CommandLine-">getListenPort(Configuration, CommandLine)</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftServer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getListOfBackupIdsFromDeleteOperation--">getListOfBackupIdsFromDeleteOperation()</a></span> - Method in class org.apache.hadoop.hbase.backup.impl.<a href="org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupSystemTable</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getListOfBackupIdsFromMergeOperation--">getListOfBackupIdsFromMergeOperation()</a></span> - Method in class org.apache.hadoop.hbase.backup.impl.<a href="org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupSystemTable</a></dt>
@@ -44207,6 +44215,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/exceptions/UnknownProtocolException.html#getProtocol--">getProtocol()</a></span> - Method in exception org.apache.hadoop.hbase.exceptions.<a href="org/apache/hadoop/hbase/exceptions/UnknownProtocolException.html" title="class in org.apache.hadoop.hbase.exceptions">UnknownProtocolException</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#getProtocolFactory--">getProtocolFactory()</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/coprocessor/BigDecimalColumnInterpreter.html#getProtoForCellType-java.math.BigDecimal-">getProtoForCellType(BigDecimal)</a></span> - Method in class org.apache.hadoop.hbase.client.coprocessor.<a href="org/apache/hadoop/hbase/client/coprocessor/BigDecimalColumnInterpreter.html" title="class in org.apache.hadoop.hbase.client.coprocessor">BigDecimalColumnInterpreter</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/coprocessor/DoubleColumnInterpreter.html#getProtoForCellType-java.lang.Double-">getProtoForCellType(Double)</a></span> - Method in class org.apache.hadoop.hbase.client.coprocessor.<a href="org/apache/hadoop/hbase/client/coprocessor/DoubleColumnInterpreter.html" title="class in org.apache.hadoop.hbase.client.coprocessor">DoubleColumnInterpreter</a></dt>
@@ -44804,6 +44814,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/AsyncConnectionConfiguration.html#getReadRpcTimeoutNs--">getReadRpcTimeoutNs()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/AsyncConnectionConfiguration.html" title="class in org.apache.hadoop.hbase.client">AsyncConnectionConfiguration</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html#getReadTimeout-org.apache.hadoop.conf.Configuration-org.apache.commons.cli.CommandLine-">getReadTimeout(Configuration, CommandLine)</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftServer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Scan.html#getReadType--">getReadType()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html#getReadyToWriteCount--">getReadyToWriteCount()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a></dt>
@@ -47478,6 +47490,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#getServer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getServer(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">UnassignProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html#getServer-int-int-int-int-int-boolean-boolean-boolean-org.apache.hadoop.hbase.thrift.ThriftMetrics-org.apache.thrift.protocol.TProtocolFactory-org.apache.thrift.TProcessor-org.apache.thrift.transport.TTransportFactory-java.net.InetSocketAddress-">getServer(int, int, int, int, int, boolean, boolean, boolean, ThriftMetrics, TProtocolFactory, TProcessor, TTransportFactory, InetSocketAddress)</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftServer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#getServerColumn-int-">getServerColumn(int)</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/AsyncMetaTableAccessor.html" title="class in org.apache.hadoop.hbase">AsyncMetaTableAccessor</a></dt>
 <dd>
 <div class="block">Returns the column qualifier for server column for replicaId</div>
@@ -105045,6 +105059,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/types/CopyOnWriteArrayMap.ArrayHolder.html#startIndex">startIndex</a></span> - Variable in class org.apache.hadoop.hbase.types.<a href="org/apache/hadoop/hbase/types/CopyOnWriteArrayMap.ArrayHolder.html" title="class in org.apache.hadoop.hbase.types">CopyOnWriteArrayMap.ArrayHolder</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html#startInfoServer-org.apache.hadoop.conf.Configuration-">startInfoServer(Configuration)</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftServer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/RawAsyncTableImpl.CoprocessorServiceBuilderImpl.html#startKey">startKey</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/RawAsyncTableImpl.CoprocessorServiceBuilderImpl.html" title="class in org.apache.hadoop.hbase.client">RawAsyncTableImpl.CoprocessorServiceBuilderImpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/RegionCoprocessorServiceExec.html#startKey">startKey</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/RegionCoprocessorServiceExec.html" title="class in org.apache.hadoop.hbase.client">RegionCoprocessorServiceExec</a></dt>
@@ -109267,8 +109283,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">ThriftServer</span></a> - Class in <a href="org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a></dt>
 <dd>
-<div class="block">ThriftServer - this class starts up a Thrift server which implements the HBase API specified in the
- HbaseClient.thrift IDL file.</div>
+<div class="block">ThriftServer - this class starts up a Thrift server which implements the HBase API specified in
+ the HbaseClient.thrift IDL file.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html#ThriftServer--">ThriftServer()</a></span> - Constructor for class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftServer</a></dt>
 <dd>&nbsp;</dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index 4d93b7f..6c52348 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -167,10 +167,10 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupPhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupPhase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
index c8595b6..4392064 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -545,24 +545,24 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ScannerCallable.MoreResults.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">ScannerCallable.MoreResults</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableState.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLocateType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Scan.ReadType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RequestController.ReturnCode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestController.ReturnCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableState.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ScannerCallable.MoreResults.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">ScannerCallable.MoreResults</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MasterSwitchType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcessTask.SubmittedRows.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncProcessTask.SubmittedRows</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">IsolationLevel</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactionState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncRequestFutureImpl.Retry.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncRequestFutureImpl.Retry</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MobCompactPartitionPolicy.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MobCompactPartitionPolicy</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">IsolationLevel</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RequestController.ReturnCode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestController.ReturnCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactionState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLocateType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcessTask.SubmittedRows.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncProcessTask.SubmittedRows</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
index b00ea9a..39e7fc5 100644
--- a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
@@ -182,14 +182,14 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.FilterRowRetCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterWrapper.FilterRowRetCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.Order.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.Order</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/RegexStringComparator.EngineType.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">RegexStringComparator.EngineType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.SatisfiesCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.SatisfiesCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">Filter.ReturnCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/CompareFilter.CompareOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">CompareFilter.CompareOp</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterList.Operator.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterList.Operator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/BitComparator.BitwiseOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">BitComparator.BitwiseOp</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.Order.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.Order</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/CompareFilter.CompareOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">CompareFilter.CompareOp</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.SatisfiesCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.SatisfiesCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.FilterRowRetCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterWrapper.FilterRowRetCode</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
index 10215a6..ddc3676 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -274,11 +274,11 @@
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockPriority</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">Cacheable.MemoryType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.ExternalBlockCaches.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">CacheConfig.ExternalBlockCaches</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.State.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">HFileBlock.Writer.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.ExternalBlockCaches.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">CacheConfig.ExternalBlockCaches</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">Cacheable.MemoryType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.BlockCategory.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType.BlockCategory</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
index 9ec4726..0e04551 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
@@ -349,8 +349,8 @@
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.BufferCallAction.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">BufferCallBeforeInitHandler.BufferCallAction</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceFactoryImpl.SourceStorage.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">MetricsHBaseServerSourceFactoryImpl.SourceStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/CallEvent.Type.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">CallEvent.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceFactoryImpl.SourceStorage.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">MetricsHBaseServerSourceFactoryImpl.SourceStorage</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
index 7af88be..3a510c5 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -293,10 +293,10 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/CellCounter.CellCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">CellCounter.CellCounterMapper.Counters</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSplit.Version.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TableSplit.Version</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/RowCounter.RowCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">RowCounter.RowCounterMapper.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">SyncTable.SyncMapper.Counter</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/CellCounter.CellCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">CellCounter.CellCounterMapper.Counters</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSplit.Version.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TableSplit.Version</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
index 530fdb1..2c7c270 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -332,11 +332,11 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MasterRpcServices.BalanceSwitchMode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MetricsMasterSourceFactoryImpl.FactoryStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.TerminationStatus.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.TerminationStatus</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MetricsMasterSourceFactoryImpl.FactoryStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
index 27b2798..e8a0b1b 100644
--- a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
@@ -125,8 +125,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.State.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">MonitoredTask.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.TaskFilter.TaskType.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">TaskMonitor.TaskFilter.TaskType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.State.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">MonitoredTask.State</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/package-tree.html b/devapidocs/org/apache/hadoop/hbase/package-tree.html
index 9d6b920..62b604b 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -444,18 +444,18 @@
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeyValue.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MemoryCompactionPolicy</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Cell.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Cell.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompatibilitySingletonFactory.SingletonStorage.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompatibilitySingletonFactory.SingletonStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaTableAccessor.QueryType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ProcedureState.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ProcedureState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Size.Unit.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Size.Unit</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ProcedureState.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ProcedureState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterMetrics.Option</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MemoryCompactionPolicy</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellBuilderType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilderType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Coprocessor.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HConstants.OperationStatusCode.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HConstants.OperationStatusCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompareOperator</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaTableAccessor.QueryType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HealthChecker.HealthCheckerExitStatus.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HealthChecker.HealthCheckerExitStatus</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterMetrics.Option</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Coprocessor.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompatibilitySingletonFactory.SingletonStorage.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompatibilitySingletonFactory.SingletonStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HConstants.OperationStatusCode.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HConstants.OperationStatusCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Cell.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Cell.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeepDeletedCells</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
index 32185f8..85d7f9f 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -203,11 +203,11 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">RootProcedureState.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockedResourceType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">StateMachineProcedure.Flow</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">StateMachineProcedure.Flow</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">Procedure.LockState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">RootProcedureState.State</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
index 6360b9b..6eccb2e 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -206,11 +206,11 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceViolationPolicy.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">SpaceViolationPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">OperationQuota.OperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottlingException.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">OperationQuota.OperationType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceViolationPolicy.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">SpaceViolationPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottleType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottleType</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index 38d310d..ae6b2a5 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -703,18 +703,18 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactionStrategy.Action</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">BloomType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TimeRangeTracker.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultHeapMemoryTuner.StepDirection.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DefaultHeapMemoryTuner.StepDirection</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.TaskExecutor.Status.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">SplitLogWorker.TaskExecutor.Status</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.LimitScope.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.LimitScope</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">FlushType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.LimitScope.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.LimitScope</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScanType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TimeRangeTracker.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactionStrategy.Action</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.NextState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.IndexType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.TaskExecutor.Status.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">SplitLogWorker.TaskExecutor.Status</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultHeapMemoryTuner.StepDirection.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DefaultHeapMemoryTuner.StepDirection</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
index 12b7c54..844f9ca 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
@@ -238,8 +238,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/ProtobufLogReader.WALHdrResult.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">ProtobufLogReader.WALHdrResult</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.Type.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">RingBufferTruck.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/ProtobufLogReader.WALHdrResult.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">ProtobufLogReader.WALHdrResult</span></a></li>
 </ul>
 </li>
 </ul>


[21/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html
index 4515e88..4f105d5 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html
@@ -125,259 +125,285 @@
 <span class="sourceLineNo">117</span><a name="line.117"></a>
 <span class="sourceLineNo">118</span>    @Override<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    public boolean equals(Object obj) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      if (this == obj) return true;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      if (obj == null) return false;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      if (getClass() != obj.getClass()) return false;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      FullyQualifiedRow other = (FullyQualifiedRow) obj;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      if (!Arrays.equals(family, other.family)) return false;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      if (!Arrays.equals(qualifier, other.qualifier)) return false;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      if (!Arrays.equals(rowKey, other.rowKey)) return false;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      if (!Arrays.equals(table, other.table)) return false;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      return true;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  static class DaemonThreadFactory implements ThreadFactory {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    static final AtomicInteger poolNumber = new AtomicInteger(1);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    final ThreadGroup group;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    final AtomicInteger threadNumber = new AtomicInteger(1);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    final String namePrefix;<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>    DaemonThreadFactory() {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      SecurityManager s = System.getSecurityManager();<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      group = (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup();<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      namePrefix = "ICV-" + poolNumber.getAndIncrement() + "-thread-";<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>    public Thread newThread(Runnable r) {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      Thread t = new Thread(group, r, namePrefix + threadNumber.getAndIncrement(), 0);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      if (!t.isDaemon()) t.setDaemon(true);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      if (t.getPriority() != Thread.NORM_PRIORITY) t.setPriority(Thread.NORM_PRIORITY);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      return t;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  }<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  private final LongAdder failedIncrements = new LongAdder();<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  private final LongAdder successfulCoalescings = new LongAdder();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  private final LongAdder totalIncrements = new LongAdder();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  private final ConcurrentMap&lt;FullyQualifiedRow, Long&gt; countersMap =<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      new ConcurrentHashMap&lt;&gt;(100000, 0.75f, 1500);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  private final ThreadPoolExecutor pool;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  private final HBaseHandler handler;<a name="line.159"></a>
+<span class="sourceLineNo">120</span>      if (this == obj) {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>        return true;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      }<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      if (obj == null) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>        return false;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      if (getClass() != obj.getClass()) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>        return false;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      }<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>      FullyQualifiedRow other = (FullyQualifiedRow) obj;<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>      if (!Arrays.equals(family, other.family)) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>        return false;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      }<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      if (!Arrays.equals(qualifier, other.qualifier)) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>        return false;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      }<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      if (!Arrays.equals(rowKey, other.rowKey)) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        return false;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      }<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      if (!Arrays.equals(table, other.table)) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>        return false;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      }<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      return true;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  }<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  static class DaemonThreadFactory implements ThreadFactory {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    static final AtomicInteger poolNumber = new AtomicInteger(1);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    final ThreadGroup group;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    final AtomicInteger threadNumber = new AtomicInteger(1);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    final String namePrefix;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>    DaemonThreadFactory() {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      SecurityManager s = System.getSecurityManager();<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      group = (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      namePrefix = "ICV-" + poolNumber.getAndIncrement() + "-thread-";<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
 <span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  private int maxQueueSize = 500000;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  private static final int CORE_POOL_SIZE = 1;<a name="line.162"></a>
+<span class="sourceLineNo">161</span>    public Thread newThread(Runnable r) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      Thread t = new Thread(group, r, namePrefix + threadNumber.getAndIncrement(), 0);<a name="line.162"></a>
 <span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  private static final Logger LOG = LoggerFactory.getLogger(FullyQualifiedRow.class);<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  @SuppressWarnings("deprecation")<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  public IncrementCoalescer(HBaseHandler hand) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    this.handler = hand;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    LinkedBlockingQueue&lt;Runnable&gt; queue = new LinkedBlockingQueue&lt;&gt;();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    pool =<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        new ThreadPoolExecutor(CORE_POOL_SIZE, CORE_POOL_SIZE, 50, TimeUnit.MILLISECONDS, queue,<a name="line.171"></a>
-<span class="sourceLineNo">172</span>            Threads.newDaemonThreadFactory("IncrementCoalescer"));<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>    MBeans.register("thrift", "Thrift", this);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  }<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>  public boolean queueIncrement(TIncrement inc) throws TException {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    if (!canQueue()) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      failedIncrements.increment();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      return false;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    return internalQueueTincrement(inc);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  public boolean queueIncrements(List&lt;TIncrement&gt; incs) throws TException {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    if (!canQueue()) {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      failedIncrements.increment();<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      return false;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>    for (TIncrement tinc : incs) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      internalQueueTincrement(tinc);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    }<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    return true;<a name="line.194"></a>
+<span class="sourceLineNo">164</span>      if (!t.isDaemon()) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        t.setDaemon(true);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      if (t.getPriority() != Thread.NORM_PRIORITY) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        t.setPriority(Thread.NORM_PRIORITY);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      }<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>      return t;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  }<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>  private final LongAdder failedIncrements = new LongAdder();<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  private final LongAdder successfulCoalescings = new LongAdder();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  private final LongAdder totalIncrements = new LongAdder();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  private final ConcurrentMap&lt;FullyQualifiedRow, Long&gt; countersMap =<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      new ConcurrentHashMap&lt;&gt;(100000, 0.75f, 1500);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  private final ThreadPoolExecutor pool;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  private final HBaseHandler handler;<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  private int maxQueueSize = 500000;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  private static final int CORE_POOL_SIZE = 1;<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  private static final Logger LOG = LoggerFactory.getLogger(FullyQualifiedRow.class);<a name="line.186"></a>
+<span class="sourceLineNo">187</span><a name="line.187"></a>
+<span class="sourceLineNo">188</span>  @SuppressWarnings("deprecation")<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  public IncrementCoalescer(HBaseHandler hand) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    this.handler = hand;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    LinkedBlockingQueue&lt;Runnable&gt; queue = new LinkedBlockingQueue&lt;&gt;();<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    pool =<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        new ThreadPoolExecutor(CORE_POOL_SIZE, CORE_POOL_SIZE, 50, TimeUnit.MILLISECONDS, queue,<a name="line.193"></a>
+<span class="sourceLineNo">194</span>            Threads.newDaemonThreadFactory("IncrementCoalescer"));<a name="line.194"></a>
 <span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>  }<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>  private boolean internalQueueTincrement(TIncrement inc) throws TException {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    byte[][] famAndQf = CellUtil.parseColumn(inc.getColumn());<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    if (famAndQf.length != 2) return false;<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>    return internalQueueIncrement(inc.getTable(), inc.getRow(), famAndQf[0], famAndQf[1],<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      inc.getAmmount());<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  }<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>  private boolean internalQueueIncrement(byte[] tableName, byte[] rowKey, byte[] fam,<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      byte[] qual, long ammount) throws TException {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    int countersMapSize = countersMap.size();<a name="line.208"></a>
-<span class="sourceLineNo">209</span><a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>    //Make sure that the number of threads is scaled.<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    dynamicallySetCoreSize(countersMapSize);<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>    totalIncrements.increment();<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>    FullyQualifiedRow key = new FullyQualifiedRow(tableName, rowKey, fam, qual);<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>    long currentAmount = ammount;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    // Spin until able to insert the value back without collisions<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    while (true) {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      Long value = countersMap.remove(key);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      if (value == null) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>        // There was nothing there, create a new value<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        value = Long.valueOf(currentAmount);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      } else {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>        value += currentAmount;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>        successfulCoalescings.increment();<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      }<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      // Try to put the value, only if there was none<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      Long oldValue = countersMap.putIfAbsent(key, value);<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      if (oldValue == null) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        // We were able to put it in, we're done<a name="line.232"></a>
-<span class="sourceLineNo">233</span>        break;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      // Someone else was able to put a value in, so let's remember our<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      // current value (plus what we picked up) and retry to add it in<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      currentAmount = value;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    }<a name="line.238"></a>
+<span class="sourceLineNo">196</span>    MBeans.register("thrift", "Thrift", this);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  }<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>  public boolean queueIncrement(TIncrement inc) throws TException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    if (!canQueue()) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      failedIncrements.increment();<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      return false;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    return internalQueueTincrement(inc);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  }<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>  public boolean queueIncrements(List&lt;TIncrement&gt; incs) throws TException {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    if (!canQueue()) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      failedIncrements.increment();<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      return false;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    }<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>    for (TIncrement tinc : incs) {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      internalQueueTincrement(tinc);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>    return true;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  private boolean internalQueueTincrement(TIncrement inc) throws TException {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    byte[][] famAndQf = CellUtil.parseColumn(inc.getColumn());<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>    if (famAndQf.length != 2) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      return false;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    }<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>    return internalQueueIncrement(inc.getTable(), inc.getRow(), famAndQf[0], famAndQf[1],<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      inc.getAmmount());<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>  private boolean internalQueueIncrement(byte[] tableName, byte[] rowKey, byte[] fam,<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      byte[] qual, long ammount) throws TException {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    int countersMapSize = countersMap.size();<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    //Make sure that the number of threads is scaled.<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    dynamicallySetCoreSize(countersMapSize);<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>    totalIncrements.increment();<a name="line.238"></a>
 <span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>    // We limit the size of the queue simply because all we need is a<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    // notification that something needs to be incremented. No need<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    // for millions of callables that mean the same thing.<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    if (pool.getQueue().size() &lt;= 1000) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      // queue it up<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      Callable&lt;Integer&gt; callable = createIncCallable();<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      pool.submit(callable);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    }<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>    return true;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  public boolean canQueue() {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    return countersMap.size() &lt; maxQueueSize;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>  private Callable&lt;Integer&gt; createIncCallable() {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    return new Callable&lt;Integer&gt;() {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      @Override<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      public Integer call() throws Exception {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        int failures = 0;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        Set&lt;FullyQualifiedRow&gt; keys = countersMap.keySet();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        for (FullyQualifiedRow row : keys) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>          Long counter = countersMap.remove(row);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>          if (counter == null) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>            continue;<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>          Table table = null;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>          try {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>            table = handler.getTable(row.getTable());<a name="line.269"></a>
-<span class="sourceLineNo">270</span>            if (failures &gt; 2) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>              throw new IOException("Auto-Fail rest of ICVs");<a name="line.271"></a>
-<span class="sourceLineNo">272</span>            }<a name="line.272"></a>
-<span class="sourceLineNo">273</span>            table.incrementColumnValue(row.getRowKey(), row.getFamily(), row.getQualifier(),<a name="line.273"></a>
-<span class="sourceLineNo">274</span>              counter);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>          } catch (IOException e) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>            // log failure of increment<a name="line.276"></a>
-<span class="sourceLineNo">277</span>            failures++;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>            LOG.error("FAILED_ICV: " + Bytes.toString(row.getTable()) + ", "<a name="line.278"></a>
-<span class="sourceLineNo">279</span>                + Bytes.toStringBinary(row.getRowKey()) + ", "<a name="line.279"></a>
-<span class="sourceLineNo">280</span>                + Bytes.toStringBinary(row.getFamily()) + ", "<a name="line.280"></a>
-<span class="sourceLineNo">281</span>                + Bytes.toStringBinary(row.getQualifier()) + ", " + counter, e);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          } finally{<a name="line.282"></a>
-<span class="sourceLineNo">283</span>            if(table != null){<a name="line.283"></a>
-<span class="sourceLineNo">284</span>              table.close();<a name="line.284"></a>
-<span class="sourceLineNo">285</span>            }<a name="line.285"></a>
-<span class="sourceLineNo">286</span>          }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        }<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        return failures;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      }<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    };<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  /**<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * This method samples the incoming requests and, if selected, will check if<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * the corePoolSize should be changed.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * @param countersMapSize<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   */<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  private void dynamicallySetCoreSize(int countersMapSize) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    // Here we are using countersMapSize as a random number, meaning this<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    // could be a Random object<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    if (countersMapSize % 10 != 0) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      return;<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    double currentRatio = (double) countersMapSize / (double) maxQueueSize;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    int newValue = 1;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    if (currentRatio &lt; 0.1) {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      // it's 1<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    } else if (currentRatio &lt; 0.3) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      newValue = 2;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    } else if (currentRatio &lt; 0.5) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      newValue = 4;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    } else if (currentRatio &lt; 0.7) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      newValue = 8;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    } else if (currentRatio &lt; 0.9) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      newValue = 14;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    } else {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      newValue = 22;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    if (pool.getCorePoolSize() != newValue) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      pool.setCorePoolSize(newValue);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    }<a name="line.321"></a>
-<span class="sourceLineNo">322</span>  }<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>  // MBean get/set methods<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public int getQueueSize() {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    return pool.getQueue().size();<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  }<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  public int getMaxQueueSize() {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    return this.maxQueueSize;<a name="line.329"></a>
-<span class="sourceLineNo">330</span>  }<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  public void setMaxQueueSize(int newSize) {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    this.maxQueueSize = newSize;<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>  public long getPoolCompletedTaskCount() {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    return pool.getCompletedTaskCount();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  public long getPoolTaskCount() {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    return pool.getTaskCount();<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  public int getPoolLargestPoolSize() {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    return pool.getLargestPoolSize();<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  public int getCorePoolSize() {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    return pool.getCorePoolSize();<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  public void setCorePoolSize(int newCoreSize) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    pool.setCorePoolSize(newCoreSize);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  }<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  public int getMaxPoolSize() {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    return pool.getMaximumPoolSize();<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  }<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public void setMaxPoolSize(int newMaxSize) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    pool.setMaximumPoolSize(newMaxSize);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  public long getFailedIncrements() {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    return failedIncrements.sum();<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  }<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>  public long getSuccessfulCoalescings() {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    return successfulCoalescings.sum();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  public long getTotalIncrements() {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    return totalIncrements.sum();<a name="line.365"></a>
+<span class="sourceLineNo">240</span>    FullyQualifiedRow key = new FullyQualifiedRow(tableName, rowKey, fam, qual);<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>    long currentAmount = ammount;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    // Spin until able to insert the value back without collisions<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    while (true) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      Long value = countersMap.remove(key);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      if (value == null) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        // There was nothing there, create a new value<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        value = Long.valueOf(currentAmount);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      } else {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        value += currentAmount;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        successfulCoalescings.increment();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      }<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      // Try to put the value, only if there was none<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      Long oldValue = countersMap.putIfAbsent(key, value);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      if (oldValue == null) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        // We were able to put it in, we're done<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        break;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      }<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      // Someone else was able to put a value in, so let's remember our<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      // current value (plus what we picked up) and retry to add it in<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      currentAmount = value;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>    // We limit the size of the queue simply because all we need is a<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    // notification that something needs to be incremented. No need<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    // for millions of callables that mean the same thing.<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    if (pool.getQueue().size() &lt;= 1000) {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      // queue it up<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      Callable&lt;Integer&gt; callable = createIncCallable();<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      pool.submit(callable);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    }<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    return true;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public boolean canQueue() {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    return countersMap.size() &lt; maxQueueSize;<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  private Callable&lt;Integer&gt; createIncCallable() {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    return new Callable&lt;Integer&gt;() {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      @Override<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      public Integer call() throws Exception {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>        int failures = 0;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        Set&lt;FullyQualifiedRow&gt; keys = countersMap.keySet();<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        for (FullyQualifiedRow row : keys) {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          Long counter = countersMap.remove(row);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          if (counter == null) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>            continue;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>          }<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          Table table = null;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          try {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            table = handler.getTable(row.getTable());<a name="line.293"></a>
+<span class="sourceLineNo">294</span>            if (failures &gt; 2) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>              throw new IOException("Auto-Fail rest of ICVs");<a name="line.295"></a>
+<span class="sourceLineNo">296</span>            }<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            table.incrementColumnValue(row.getRowKey(), row.getFamily(), row.getQualifier(),<a name="line.297"></a>
+<span class="sourceLineNo">298</span>              counter);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          } catch (IOException e) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>            // log failure of increment<a name="line.300"></a>
+<span class="sourceLineNo">301</span>            failures++;<a name="line.301"></a>
+<span class="sourceLineNo">302</span>            LOG.error("FAILED_ICV: " + Bytes.toString(row.getTable()) + ", "<a name="line.302"></a>
+<span class="sourceLineNo">303</span>                + Bytes.toStringBinary(row.getRowKey()) + ", "<a name="line.303"></a>
+<span class="sourceLineNo">304</span>                + Bytes.toStringBinary(row.getFamily()) + ", "<a name="line.304"></a>
+<span class="sourceLineNo">305</span>                + Bytes.toStringBinary(row.getQualifier()) + ", " + counter, e);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          } finally{<a name="line.306"></a>
+<span class="sourceLineNo">307</span>            if(table != null){<a name="line.307"></a>
+<span class="sourceLineNo">308</span>              table.close();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>            }<a name="line.309"></a>
+<span class="sourceLineNo">310</span>          }<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        return failures;<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      }<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    };<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  }<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span>  /**<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * This method samples the incoming requests and, if selected, will check if<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * the corePoolSize should be changed.<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   * @param countersMapSize the size of the counters map<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   */<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  private void dynamicallySetCoreSize(int countersMapSize) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    // Here we are using countersMapSize as a random number, meaning this<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    // could be a Random object<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    if (countersMapSize % 10 != 0) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      return;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    }<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    double currentRatio = (double) countersMapSize / (double) maxQueueSize;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    int newValue;<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>    if (currentRatio &lt; 0.1) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      newValue = 1;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    } else if (currentRatio &lt; 0.3) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      newValue = 2;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    } else if (currentRatio &lt; 0.5) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      newValue = 4;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    } else if (currentRatio &lt; 0.7) {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      newValue = 8;<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    } else if (currentRatio &lt; 0.9) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      newValue = 14;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    } else {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      newValue = 22;<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
+<span class="sourceLineNo">344</span><a name="line.344"></a>
+<span class="sourceLineNo">345</span>    if (pool.getCorePoolSize() != newValue) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      pool.setCorePoolSize(newValue);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  // MBean get/set methods<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  public int getQueueSize() {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    return pool.getQueue().size();<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span>  public int getMaxQueueSize() {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    return this.maxQueueSize;<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  public void setMaxQueueSize(int newSize) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    this.maxQueueSize = newSize;<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  }<a name="line.359"></a>
+<span class="sourceLineNo">360</span><a name="line.360"></a>
+<span class="sourceLineNo">361</span>  public long getPoolCompletedTaskCount() {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    return pool.getCompletedTaskCount();<a name="line.362"></a>
+<span class="sourceLineNo">363</span>  }<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  public long getPoolTaskCount() {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    return pool.getTaskCount();<a name="line.365"></a>
 <span class="sourceLineNo">366</span>  }<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>  public long getCountersMapSize() {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    return countersMap.size();<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>}<a name="line.372"></a>
+<span class="sourceLineNo">367</span>  public int getPoolLargestPoolSize() {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    return pool.getLargestPoolSize();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  }<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  public int getCorePoolSize() {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    return pool.getCorePoolSize();<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  public void setCorePoolSize(int newCoreSize) {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    pool.setCorePoolSize(newCoreSize);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  }<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  public int getMaxPoolSize() {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    return pool.getMaximumPoolSize();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  }<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  public void setMaxPoolSize(int newMaxSize) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    pool.setMaximumPoolSize(newMaxSize);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  public long getFailedIncrements() {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    return failedIncrements.sum();<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  public long getSuccessfulCoalescings() {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    return successfulCoalescings.sum();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>  }<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span>  public long getTotalIncrements() {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    return totalIncrements.sum();<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span>  public long getCountersMapSize() {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    return countersMap.size();<a name="line.395"></a>
+<span class="sourceLineNo">396</span>  }<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>}<a name="line.398"></a>
 
 
 


[32/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html
index 51f8fd4..fe42853 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html#line.37">ReplicationQueueInfo</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html#line.36">ReplicationQueueInfo</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">This class is responsible for the parsing logic for a znode representing a queue.
  It will extract the peerId if it's recovered as well as the dead region servers
@@ -241,7 +241,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html#line.38">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html#line.37">LOG</a></pre>
 </li>
 </ul>
 <a name="peerId">
@@ -250,7 +250,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>peerId</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html#line.40">peerId</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html#line.39">peerId</a></pre>
 </li>
 </ul>
 <a name="peerClusterZnode">
@@ -259,7 +259,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>peerClusterZnode</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html#line.41">peerClusterZnode</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html#line.40">peerClusterZnode</a></pre>
 </li>
 </ul>
 <a name="queueRecovered">
@@ -268,7 +268,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>queueRecovered</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html#line.42">queueRecovered</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html#line.41">queueRecovered</a></pre>
 </li>
 </ul>
 <a name="deadRegionServers">
@@ -277,7 +277,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>deadRegionServers</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html#line.44">deadRegionServers</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html#line.43">deadRegionServers</a></pre>
 </li>
 </ul>
 </li>
@@ -294,7 +294,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ReplicationQueueInfo</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html#line.50">ReplicationQueueInfo</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html#line.49">ReplicationQueueInfo</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode)</pre>
 <div class="block">The passed znode will be either the id of the peer cluster or
  the handling story of that queue in the form of id-servername-*</div>
 </li>
@@ -313,7 +313,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>extractDeadServersFromZNodeString</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html#line.68">extractDeadServersFromZNodeString</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;deadServerListStr,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html#line.67">extractDeadServersFromZNodeString</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;deadServerListStr,
                                                       <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;result)</pre>
 <div class="block">Parse dead server names from znode string servername can contain "-" such as
  "ip-10-46-221-101.ec2.internal", so we need skip some "-" during parsing for the following

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueues.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueues.html b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueues.html
index 2c16edb..5a7f9f9 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueues.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueues.html
@@ -398,11 +398,12 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllQueues</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html#line.95">getAllQueues</a>()</pre>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html#line.96">getAllQueues</a>()</pre>
 <div class="block">Get a list of all queues for this region server.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>a list of queueIds, an empty list if this region server is dead and has no outstanding queues</dd>
+<dd>a list of queueIds, an empty list if this region server is dead and has no outstanding
+         queues</dd>
 </dl>
 </li>
 </ul>
@@ -412,7 +413,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockList">
 <li class="blockList">
 <h4>getUnClaimedQueueIds</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html#line.102">getUnClaimedQueueIds</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regionserver)</pre>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html#line.103">getUnClaimedQueueIds</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regionserver)</pre>
 <div class="block">Get queueIds from a dead region server, whose queues has not been claimed by other region
  servers.</div>
 <dl>
@@ -427,7 +428,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockList">
 <li class="blockList">
 <h4>claimQueue</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html#line.110">claimQueue</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regionserver,
+<pre><a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html#line.111">claimQueue</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regionserver,
                                           <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queueId)</pre>
 <div class="block">Take ownership for the queue identified by queueId and belongs to a dead region server.</div>
 <dl>
@@ -445,11 +446,11 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockList">
 <li class="blockList">
 <h4>removeReplicatorIfQueueIsEmpty</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html#line.116">removeReplicatorIfQueueIsEmpty</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regionserver)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html#line.117">removeReplicatorIfQueueIsEmpty</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regionserver)</pre>
 <div class="block">Remove the znode of region server if the queue is empty.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>regionserver</code> - </dd>
+<dd><code>regionserver</code> - the id of the region server</dd>
 </dl>
 </li>
 </ul>
@@ -459,7 +460,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockList">
 <li class="blockList">
 <h4>getListOfReplicators</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html#line.123">getListOfReplicators</a>()</pre>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html#line.124">getListOfReplicators</a>()</pre>
 <div class="block">Get a list of all region servers that have outstanding replication queues. These servers could
  be alive, dead or from a previous run of the cluster.</div>
 <dl>
@@ -474,7 +475,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockList">
 <li class="blockList">
 <h4>isThisOurRegionServer</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html#line.130">isThisOurRegionServer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regionserver)</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html#line.131">isThisOurRegionServer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regionserver)</pre>
 <div class="block">Checks if the provided znode is the same as this region server's</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -490,7 +491,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockList">
 <li class="blockList">
 <h4>addPeerToHFileRefs</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html#line.137">addPeerToHFileRefs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html#line.138">addPeerToHFileRefs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                  throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block">Add a peer to hfile reference queue if peer does not exist.</div>
 <dl>
@@ -507,7 +508,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockList">
 <li class="blockList">
 <h4>removePeerFromHFileRefs</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html#line.143">removePeerFromHFileRefs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html#line.144">removePeerFromHFileRefs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</pre>
 <div class="block">Remove a peer from hfile reference queue.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -521,7 +522,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockList">
 <li class="blockList">
 <h4>addHFileRefs</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html#line.152">addHFileRefs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html#line.153">addHFileRefs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
                   <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path&gt;&gt;&nbsp;pairs)
            throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block">Add new hfile references to the queue.</div>
@@ -541,7 +542,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockListLast">
 <li class="blockList">
 <h4>removeHFileRefs</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html#line.159">removeHFileRefs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html#line.160">removeHFileRefs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
                      <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;files)</pre>
 <div class="block">Remove hfile references from the queue.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html
index 93c9bae..a2dfb27 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html
@@ -119,7 +119,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.38">ReplicationQueuesClientZKImpl</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.39">ReplicationQueuesClientZKImpl</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html" title="class in org.apache.hadoop.hbase.replication">ReplicationStateZKBase</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueuesClient.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueuesClient</a></pre>
 </li>
@@ -277,7 +277,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockListLast">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.41">LOG</a></pre>
+<pre>org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.42">LOG</a></pre>
 </li>
 </ul>
 </li>
@@ -294,7 +294,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>ReplicationQueuesClientZKImpl</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.43">ReplicationQueuesClientZKImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueuesClientArguments.html" title="class in org.apache.hadoop.hbase.replication">ReplicationQueuesClientArguments</a>&nbsp;args)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.44">ReplicationQueuesClientZKImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueuesClientArguments.html" title="class in org.apache.hadoop.hbase.replication">ReplicationQueuesClientArguments</a>&nbsp;args)</pre>
 </li>
 </ul>
 <a name="ReplicationQueuesClientZKImpl-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.Abortable-">
@@ -303,7 +303,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ReplicationQueuesClientZKImpl</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.47">ReplicationQueuesClientZKImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zk,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.48">ReplicationQueuesClientZKImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zk,
                                      org.apache.hadoop.conf.Configuration&nbsp;conf,
                                      <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable)</pre>
 </li>
@@ -322,7 +322,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>init</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.53">init</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.54">init</a>()
           throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueuesClient.html#init--">ReplicationQueuesClient</a></code></span></div>
 <div class="block">Initialize the replication queue client interface.</div>
@@ -340,7 +340,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getLogsInQueue</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.64">getLogsInQueue</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;serverName,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.65">getLogsInQueue</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;serverName,
                                    <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queueId)
                             throws org.apache.zookeeper.KeeperException</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueuesClient.html#getLogsInQueue-java.lang.String-java.lang.String-">ReplicationQueuesClient</a></code></span></div>
@@ -364,7 +364,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllQueues</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.79">getAllQueues</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;serverName)
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.80">getAllQueues</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;serverName)
                           throws org.apache.zookeeper.KeeperException</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueuesClient.html#getAllQueues-java.lang.String-">ReplicationQueuesClient</a></code></span></div>
 <div class="block">Get a list of all queues for the specified region server.</div>
@@ -386,7 +386,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllWALs</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.92">getAllWALs</a>()
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.93">getAllWALs</a>()
                        throws org.apache.zookeeper.KeeperException</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueuesClient.html#getAllWALs--">ReplicationQueuesClient</a></code></span></div>
 <div class="block">Load all wals in all replication queues from ZK. This method guarantees to return a
@@ -407,7 +407,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getQueuesZNodeCversion</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.129">getQueuesZNodeCversion</a>()
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.130">getQueuesZNodeCversion</a>()
                            throws org.apache.zookeeper.KeeperException</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -421,7 +421,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getHFileRefsNodeChangeVersion</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.141">getHFileRefsNodeChangeVersion</a>()
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.142">getHFileRefsNodeChangeVersion</a>()
                                   throws org.apache.zookeeper.KeeperException</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueuesClient.html#getHFileRefsNodeChangeVersion--">ReplicationQueuesClient</a></code></span></div>
 <div class="block">Get the change version number of replication hfile references node. This can be used as
@@ -442,7 +442,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllPeersFromHFileRefsQueue</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.153">getAllPeersFromHFileRefsQueue</a>()
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.154">getAllPeersFromHFileRefsQueue</a>()
                                            throws org.apache.zookeeper.KeeperException</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueuesClient.html#getAllPeersFromHFileRefsQueue--">ReplicationQueuesClient</a></code></span></div>
 <div class="block">Get list of all peers from hfile reference queue.</div>
@@ -462,7 +462,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getReplicableHFiles</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.165">getReplicableHFiles</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html#line.166">getReplicableHFiles</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                                  throws org.apache.zookeeper.KeeperException</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueuesClient.html#getReplicableHFiles-java.lang.String-">ReplicationQueuesClient</a></code></span></div>
 <div class="block">Get a list of all hfile references in the given peer.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.html b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.html
index 7f9b317..c6a95c2 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.html
@@ -618,6 +618,8 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueues.html#removeReplicatorIfQueueIsEmpty-java.lang.String-">removeReplicatorIfQueueIsEmpty</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueues.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueues</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>regionserver</code> - the id of the region server</dd>
 </dl>
 </li>
 </ul>
@@ -668,7 +670,8 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueues.html#getAllQueues--">getAllQueues</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueues.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueues</a></code></dd>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>a list of queueIds, an empty list if this region server is dead and has no outstanding queues</dd>
+<dd>a list of queueIds, an empty list if this region server is dead and has no outstanding
+         queues</dd>
 </dl>
 </li>
 </ul>
@@ -694,7 +697,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>addHFileRefs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.html#line.323">addHFileRefs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.html#line.324">addHFileRefs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
                          <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path&gt;&gt;&nbsp;pairs)
                   throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueues.html#addHFileRefs-java.lang.String-java.util.List-">ReplicationQueues</a></code></span></div>
@@ -717,7 +720,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>removeHFileRefs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.html#line.351">removeHFileRefs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.html#line.352">removeHFileRefs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
                             <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;files)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueues.html#removeHFileRefs-java.lang.String-java.util.List-">ReplicationQueues</a></code></span></div>
 <div class="block">Remove hfile references from the queue.</div>
@@ -736,7 +739,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>addPeerToHFileRefs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.html#line.376">addPeerToHFileRefs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.html#line.377">addPeerToHFileRefs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                         throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueues.html#addPeerToHFileRefs-java.lang.String-">ReplicationQueues</a></code></span></div>
 <div class="block">Add a peer to hfile reference queue if peer does not exist.</div>
@@ -756,7 +759,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockListLast">
 <li class="blockList">
 <h4>removePeerFromHFileRefs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.html#line.390">removePeerFromHFileRefs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.html#line.391">removePeerFromHFileRefs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueues.html#removePeerFromHFileRefs-java.lang.String-">ReplicationQueues</a></code></span></div>
 <div class="block">Remove a peer from hfile reference queue.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html
index 39b0fb4..698095b 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.42">ReplicationStateZKBase</a>
+public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.44">ReplicationStateZKBase</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">This is a base class for maintaining replication state in zookeeper.</div>
 </li>
@@ -297,7 +297,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>peerStateNodeName</h4>
-<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.48">peerStateNodeName</a></pre>
+<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.50">peerStateNodeName</a></pre>
 <div class="block">The name of the znode that contains the replication status of a remote slave (i.e. peer)
  cluster.</div>
 </li>
@@ -308,7 +308,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>replicationZNode</h4>
-<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.50">replicationZNode</a></pre>
+<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.52">replicationZNode</a></pre>
 <div class="block">The name of the base znode that contains all replication state.</div>
 </li>
 </ul>
@@ -318,7 +318,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>peersZNode</h4>
-<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.52">peersZNode</a></pre>
+<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.54">peersZNode</a></pre>
 <div class="block">The name of the znode that contains a list of all remote slave (i.e. peer) clusters.</div>
 </li>
 </ul>
@@ -328,7 +328,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>queuesZNode</h4>
-<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.54">queuesZNode</a></pre>
+<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.56">queuesZNode</a></pre>
 <div class="block">The name of the znode that contains all replication queues</div>
 </li>
 </ul>
@@ -338,7 +338,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>hfileRefsZNode</h4>
-<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.56">hfileRefsZNode</a></pre>
+<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.58">hfileRefsZNode</a></pre>
 <div class="block">The name of the znode that contains queues of hfile references to be replicated</div>
 </li>
 </ul>
@@ -348,7 +348,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>ourClusterKey</h4>
-<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.58">ourClusterKey</a></pre>
+<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.60">ourClusterKey</a></pre>
 <div class="block">The cluster key of the local cluster</div>
 </li>
 </ul>
@@ -358,7 +358,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>tableCFsNodeName</h4>
-<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.60">tableCFsNodeName</a></pre>
+<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.62">tableCFsNodeName</a></pre>
 <div class="block">The name of the znode that contains tableCFs</div>
 </li>
 </ul>
@@ -368,7 +368,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>zookeeper</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.62">zookeeper</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.64">zookeeper</a></pre>
 </li>
 </ul>
 <a name="conf">
@@ -377,7 +377,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>conf</h4>
-<pre>protected final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.63">conf</a></pre>
+<pre>protected final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.65">conf</a></pre>
 </li>
 </ul>
 <a name="abortable">
@@ -386,7 +386,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>abortable</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.64">abortable</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.66">abortable</a></pre>
 </li>
 </ul>
 <a name="ENABLED_ZNODE_BYTES">
@@ -395,7 +395,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>ENABLED_ZNODE_BYTES</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.67">ENABLED_ZNODE_BYTES</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.69">ENABLED_ZNODE_BYTES</a></pre>
 </li>
 </ul>
 <a name="DISABLED_ZNODE_BYTES">
@@ -404,7 +404,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>DISABLED_ZNODE_BYTES</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.69">DISABLED_ZNODE_BYTES</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.71">DISABLED_ZNODE_BYTES</a></pre>
 </li>
 </ul>
 <a name="ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY">
@@ -413,7 +413,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.71">ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.73">ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.replication.ReplicationStateZKBase.ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY">Constant Field Values</a></dd>
@@ -426,7 +426,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.73">ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.75">ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.replication.ReplicationStateZKBase.ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT">Constant Field Values</a></dd>
@@ -447,7 +447,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ReplicationStateZKBase</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.75">ReplicationStateZKBase</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zookeeper,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.77">ReplicationStateZKBase</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zookeeper,
                               org.apache.hadoop.conf.Configuration&nbsp;conf,
                               <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable)</pre>
 </li>
@@ -466,7 +466,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getListOfReplicators</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.96">getListOfReplicators</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.98">getListOfReplicators</a>()</pre>
 </li>
 </ul>
 <a name="toByteArray-org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ReplicationState.State-">
@@ -475,10 +475,10 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>toByteArray</h4>
-<pre>protected static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.112">toByteArray</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ReplicationState.State&nbsp;state)</pre>
+<pre>protected static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.114">toByteArray</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ReplicationState.State&nbsp;state)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>state</code> - </dd>
+<dd><code>state</code> - the state to convert into a byte array</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Serialized protobuf of <code>state</code> with pb magic prefix prepended suitable for
          use as content of a peer-state znode under a peer cluster id as in
@@ -492,7 +492,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>peerExists</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.128">peerExists</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.130">peerExists</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)
                       throws org.apache.zookeeper.KeeperException</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -506,7 +506,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>isPeerPath</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.137">isPeerPath</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.139">isPeerPath</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
 <div class="block">Determine if a ZK path points to a peer node.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -522,7 +522,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableCFsNode</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.142">getTableCFsNode</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)</pre>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.144">getTableCFsNode</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)</pre>
 </li>
 </ul>
 <a name="getPeerStateNode-java.lang.String-">
@@ -531,7 +531,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getPeerStateNode</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.147">getPeerStateNode</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)</pre>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.149">getPeerStateNode</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)</pre>
 </li>
 </ul>
 <a name="getPeerNode-java.lang.String-">
@@ -540,7 +540,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getPeerNode</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.151">getPeerNode</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)</pre>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html#line.153">getPeerNode</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/replication/ReplicationTableBase.CreateReplicationTableWorker.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationTableBase.CreateReplicationTableWorker.html b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationTableBase.CreateReplicationTableWorker.html
index b4cbf1b..f18ad9c 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationTableBase.CreateReplicationTableWorker.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationTableBase.CreateReplicationTableWorker.html
@@ -276,7 +276,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
  in TableBasedReplicationQueuesImpl</div>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if creating the table fails</dd>
 </dl>
 </li>
 </ul>
@@ -286,13 +286,11 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>replicationTableExists</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationTableBase.CreateReplicationTableWorker.html#line.434">replicationTableExists</a>()</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationTableBase.CreateReplicationTableWorker.html#line.433">replicationTableExists</a>()</pre>
 <div class="block">Checks whether the Replication Table exists yet</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>whether the Replication Table exists</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
 </dl>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/replication/ReplicationTableBase.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationTableBase.html b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationTableBase.html
index d3cc292..6109ecc 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationTableBase.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationTableBase.html
@@ -768,7 +768,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>a ResultScanner over the QueueIds belonging to the server</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if getting the table or the scanner fails</dd>
 </dl>
 </li>
 </ul>
@@ -787,7 +787,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the Replication Table when it is created</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if getting the table or the scanner fails</dd>
 </dl>
 </li>
 </ul>
@@ -804,7 +804,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the Replication Table</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if getting the table fails</dd>
 </dl>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/replication/ReplicationTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationTracker.html b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationTracker.html
index 302b594..c1182a9 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationTracker.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationTracker.html
@@ -172,7 +172,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <div class="block">Register a replication listener to receive replication events.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>listener</code> - </dd>
+<dd><code>listener</code> - the listener to register</dd>
 </dl>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.html b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.html
index a073c75..e714fe3 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.html
@@ -393,6 +393,8 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationTracker.html#registerListener-org.apache.hadoop.hbase.replication.ReplicationListener-">registerListener</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationTracker.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationTracker</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>listener</code> - the listener to register</dd>
 </dl>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
index 4c38864..8edaec0 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
@@ -194,8 +194,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.WorkerState.html" title="enum in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationSourceShipper.WorkerState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceFactoryImpl.SourceHolder.html" title="enum in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">MetricsReplicationSourceFactoryImpl.SourceHolder</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.WorkerState.html" title="enum in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationSourceShipper.WorkerState</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
index 60ffc1f..a42c95d 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
@@ -136,9 +136,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.OpType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessController.OpType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Action</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessControlFilter.Strategy.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessControlFilter.Strategy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.OpType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessController.OpType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
index fb14499..acf9832 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
@@ -191,9 +191,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/AuthMethod.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">AuthMethod</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslUtil.QualityOfProtection</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslStatus.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslStatus</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/AuthMethod.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">AuthMethod</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html b/devapidocs/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html
index 590ee62..5ca240e 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#line.37">HbaseHandlerMetricsProxy</a>
+public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#line.37">HbaseHandlerMetricsProxy</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/reflect/InvocationHandler.html?is-external=true" title="class or interface in java.lang.reflect">InvocationHandler</a></pre>
 <div class="block">Converts a Hbase.Iface using InvocationHandler so that it reports process

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html b/devapidocs/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html
index d9e8952..f66bdf9 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.133">IncrementCoalescer.DaemonThreadFactory</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.149">IncrementCoalescer.DaemonThreadFactory</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadFactory.html?is-external=true" title="class or interface in java.util.concurrent">ThreadFactory</a></pre>
 </li>
@@ -218,7 +218,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurren
 <ul class="blockList">
 <li class="blockList">
 <h4>poolNumber</h4>
-<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html#line.134">poolNumber</a></pre>
+<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html#line.150">poolNumber</a></pre>
 </li>
 </ul>
 <a name="group">
@@ -227,7 +227,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurren
 <ul class="blockList">
 <li class="blockList">
 <h4>group</h4>
-<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/ThreadGroup.html?is-external=true" title="class or interface in java.lang">ThreadGroup</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html#line.135">group</a></pre>
+<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/ThreadGroup.html?is-external=true" title="class or interface in java.lang">ThreadGroup</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html#line.151">group</a></pre>
 </li>
 </ul>
 <a name="threadNumber">
@@ -236,7 +236,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurren
 <ul class="blockList">
 <li class="blockList">
 <h4>threadNumber</h4>
-<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html#line.136">threadNumber</a></pre>
+<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html#line.152">threadNumber</a></pre>
 </li>
 </ul>
 <a name="namePrefix">
@@ -245,7 +245,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurren
 <ul class="blockListLast">
 <li class="blockList">
 <h4>namePrefix</h4>
-<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html#line.137">namePrefix</a></pre>
+<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html#line.153">namePrefix</a></pre>
 </li>
 </ul>
 </li>
@@ -262,7 +262,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurren
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DaemonThreadFactory</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html#line.139">DaemonThreadFactory</a>()</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html#line.155">DaemonThreadFactory</a>()</pre>
 </li>
 </ul>
 </li>
@@ -279,7 +279,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurren
 <ul class="blockListLast">
 <li class="blockList">
 <h4>newThread</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html#line.145">newThread</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>&nbsp;r)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html#line.161">newThread</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>&nbsp;r)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadFactory.html?is-external=true#newThread-java.lang.Runnable-" title="class or interface in java.util.concurrent">newThread</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadFactory.html?is-external=true" title="class or interface in java.util.concurrent">ThreadFactory</a></code></dd>


[31/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html b/devapidocs/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html
index 65eaac4..c13625b 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html
@@ -352,7 +352,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>failedIncrements</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/LongAdder.html?is-external=true" title="class or interface in java.util.concurrent.atomic">LongAdder</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.153">failedIncrements</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/LongAdder.html?is-external=true" title="class or interface in java.util.concurrent.atomic">LongAdder</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.175">failedIncrements</a></pre>
 </li>
 </ul>
 <a name="successfulCoalescings">
@@ -361,7 +361,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>successfulCoalescings</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/LongAdder.html?is-external=true" title="class or interface in java.util.concurrent.atomic">LongAdder</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.154">successfulCoalescings</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/LongAdder.html?is-external=true" title="class or interface in java.util.concurrent.atomic">LongAdder</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.176">successfulCoalescings</a></pre>
 </li>
 </ul>
 <a name="totalIncrements">
@@ -370,7 +370,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>totalIncrements</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/LongAdder.html?is-external=true" title="class or interface in java.util.concurrent.atomic">LongAdder</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.155">totalIncrements</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/LongAdder.html?is-external=true" title="class or interface in java.util.concurrent.atomic">LongAdder</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.177">totalIncrements</a></pre>
 </li>
 </ul>
 <a name="countersMap">
@@ -379,7 +379,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>countersMap</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html" title="class in org.apache.hadoop.hbase.thrift">IncrementCoalescer.FullyQualifiedRow</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.156">countersMap</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html" title="class in org.apache.hadoop.hbase.thrift">IncrementCoalescer.FullyQualifiedRow</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.178">countersMap</a></pre>
 </li>
 </ul>
 <a name="pool">
@@ -388,7 +388,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>pool</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent">ThreadPoolExecutor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.158">pool</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent">ThreadPoolExecutor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.180">pool</a></pre>
 </li>
 </ul>
 <a name="handler">
@@ -397,7 +397,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>handler</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.159">handler</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.181">handler</a></pre>
 </li>
 </ul>
 <a name="maxQueueSize">
@@ -406,7 +406,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>maxQueueSize</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.161">maxQueueSize</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.183">maxQueueSize</a></pre>
 </li>
 </ul>
 <a name="CORE_POOL_SIZE">
@@ -415,7 +415,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>CORE_POOL_SIZE</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.162">CORE_POOL_SIZE</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.184">CORE_POOL_SIZE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.IncrementCoalescer.CORE_POOL_SIZE">Constant Field Values</a></dd>
@@ -428,7 +428,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockListLast">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.164">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.186">LOG</a></pre>
 </li>
 </ul>
 </li>
@@ -445,7 +445,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IncrementCoalescer</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.167">IncrementCoalescer</a>(<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a>&nbsp;hand)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.189">IncrementCoalescer</a>(<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a>&nbsp;hand)</pre>
 </li>
 </ul>
 </li>
@@ -462,7 +462,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>queueIncrement</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.177">queueIncrement</a>(org.apache.hadoop.hbase.thrift.generated.TIncrement&nbsp;inc)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.199">queueIncrement</a>(org.apache.hadoop.hbase.thrift.generated.TIncrement&nbsp;inc)
                        throws org.apache.thrift.TException</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -476,7 +476,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>queueIncrements</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.185">queueIncrements</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TIncrement&gt;&nbsp;incs)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.207">queueIncrements</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TIncrement&gt;&nbsp;incs)
                         throws org.apache.thrift.TException</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -490,7 +490,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>internalQueueTincrement</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.198">internalQueueTincrement</a>(org.apache.hadoop.hbase.thrift.generated.TIncrement&nbsp;inc)
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.220">internalQueueTincrement</a>(org.apache.hadoop.hbase.thrift.generated.TIncrement&nbsp;inc)
                                  throws org.apache.thrift.TException</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -504,7 +504,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>internalQueueIncrement</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.206">internalQueueIncrement</a>(byte[]&nbsp;tableName,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.231">internalQueueIncrement</a>(byte[]&nbsp;tableName,
                                        byte[]&nbsp;rowKey,
                                        byte[]&nbsp;fam,
                                        byte[]&nbsp;qual,
@@ -522,7 +522,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>canQueue</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.252">canQueue</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.276">canQueue</a>()</pre>
 </li>
 </ul>
 <a name="createIncCallable--">
@@ -531,7 +531,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>createIncCallable</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.256">createIncCallable</a>()</pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.280">createIncCallable</a>()</pre>
 </li>
 </ul>
 <a name="dynamicallySetCoreSize-int-">
@@ -540,12 +540,12 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>dynamicallySetCoreSize</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.298">dynamicallySetCoreSize</a>(int&nbsp;countersMapSize)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.322">dynamicallySetCoreSize</a>(int&nbsp;countersMapSize)</pre>
 <div class="block">This method samples the incoming requests and, if selected, will check if
  the corePoolSize should be changed.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>countersMapSize</code> - </dd>
+<dd><code>countersMapSize</code> - the size of the counters map</dd>
 </dl>
 </li>
 </ul>
@@ -555,7 +555,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>getQueueSize</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.325">getQueueSize</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.351">getQueueSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html#getQueueSize--">getQueueSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html" title="interface in org.apache.hadoop.hbase.thrift">IncrementCoalescerMBean</a></code></dd>
@@ -568,7 +568,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxQueueSize</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.328">getMaxQueueSize</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.354">getMaxQueueSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html#getMaxQueueSize--">getMaxQueueSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html" title="interface in org.apache.hadoop.hbase.thrift">IncrementCoalescerMBean</a></code></dd>
@@ -581,7 +581,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>setMaxQueueSize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.331">setMaxQueueSize</a>(int&nbsp;newSize)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.357">setMaxQueueSize</a>(int&nbsp;newSize)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html#setMaxQueueSize-int-">setMaxQueueSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html" title="interface in org.apache.hadoop.hbase.thrift">IncrementCoalescerMBean</a></code></dd>
@@ -594,7 +594,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>getPoolCompletedTaskCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.335">getPoolCompletedTaskCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.361">getPoolCompletedTaskCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html#getPoolCompletedTaskCount--">getPoolCompletedTaskCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html" title="interface in org.apache.hadoop.hbase.thrift">IncrementCoalescerMBean</a></code></dd>
@@ -607,7 +607,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>getPoolTaskCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.338">getPoolTaskCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.364">getPoolTaskCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html#getPoolTaskCount--">getPoolTaskCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html" title="interface in org.apache.hadoop.hbase.thrift">IncrementCoalescerMBean</a></code></dd>
@@ -620,7 +620,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>getPoolLargestPoolSize</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.341">getPoolLargestPoolSize</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.367">getPoolLargestPoolSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html#getPoolLargestPoolSize--">getPoolLargestPoolSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html" title="interface in org.apache.hadoop.hbase.thrift">IncrementCoalescerMBean</a></code></dd>
@@ -633,7 +633,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>getCorePoolSize</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.344">getCorePoolSize</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.370">getCorePoolSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html#getCorePoolSize--">getCorePoolSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html" title="interface in org.apache.hadoop.hbase.thrift">IncrementCoalescerMBean</a></code></dd>
@@ -646,7 +646,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>setCorePoolSize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.347">setCorePoolSize</a>(int&nbsp;newCoreSize)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.373">setCorePoolSize</a>(int&nbsp;newCoreSize)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html#setCorePoolSize-int-">setCorePoolSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html" title="interface in org.apache.hadoop.hbase.thrift">IncrementCoalescerMBean</a></code></dd>
@@ -659,7 +659,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxPoolSize</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.350">getMaxPoolSize</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.376">getMaxPoolSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html#getMaxPoolSize--">getMaxPoolSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html" title="interface in org.apache.hadoop.hbase.thrift">IncrementCoalescerMBean</a></code></dd>
@@ -672,7 +672,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>setMaxPoolSize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.353">setMaxPoolSize</a>(int&nbsp;newMaxSize)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.379">setMaxPoolSize</a>(int&nbsp;newMaxSize)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html#setMaxPoolSize-int-">setMaxPoolSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html" title="interface in org.apache.hadoop.hbase.thrift">IncrementCoalescerMBean</a></code></dd>
@@ -685,7 +685,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>getFailedIncrements</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.356">getFailedIncrements</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.382">getFailedIncrements</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html#getFailedIncrements--">getFailedIncrements</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html" title="interface in org.apache.hadoop.hbase.thrift">IncrementCoalescerMBean</a></code></dd>
@@ -698,7 +698,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>getSuccessfulCoalescings</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.360">getSuccessfulCoalescings</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.386">getSuccessfulCoalescings</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html#getSuccessfulCoalescings--">getSuccessfulCoalescings</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html" title="interface in org.apache.hadoop.hbase.thrift">IncrementCoalescerMBean</a></code></dd>
@@ -711,7 +711,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockList">
 <li class="blockList">
 <h4>getTotalIncrements</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.364">getTotalIncrements</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.390">getTotalIncrements</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html#getTotalIncrements--">getTotalIncrements</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html" title="interface in org.apache.hadoop.hbase.thrift">IncrementCoalescerMBean</a></code></dd>
@@ -724,7 +724,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getCountersMapSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.368">getCountersMapSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.394">getCountersMapSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html#getCountersMapSize--">getCountersMapSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html" title="interface in org.apache.hadoop.hbase.thrift">IncrementCoalescerMBean</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.ClientConnnection.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.ClientConnnection.html b/devapidocs/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.ClientConnnection.html
index 44be348..a395904 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.ClientConnnection.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.ClientConnnection.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.html#line.261">TBoundedThreadPoolServer.ClientConnnection</a>
+<pre>private final class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.html#line.261">TBoundedThreadPoolServer.ClientConnnection</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></pre>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/thrift/ThriftMetrics.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftMetrics.html b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftMetrics.html
index 3469723..3596380 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftMetrics.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftMetrics.html
@@ -363,7 +363,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>incTimeInQueue</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html#line.77">incTimeInQueue</a>(long&nbsp;time)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html#line.79">incTimeInQueue</a>(long&nbsp;time)</pre>
 </li>
 </ul>
 <a name="setCallQueueLen-int-">
@@ -372,7 +372,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setCallQueueLen</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html#line.81">setCallQueueLen</a>(int&nbsp;len)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html#line.83">setCallQueueLen</a>(int&nbsp;len)</pre>
 </li>
 </ul>
 <a name="incNumRowKeysInBatchGet-int-">
@@ -381,7 +381,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>incNumRowKeysInBatchGet</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html#line.85">incNumRowKeysInBatchGet</a>(int&nbsp;diff)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html#line.87">incNumRowKeysInBatchGet</a>(int&nbsp;diff)</pre>
 </li>
 </ul>
 <a name="incNumRowKeysInBatchMutate-int-">
@@ -390,7 +390,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>incNumRowKeysInBatchMutate</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html#line.89">incNumRowKeysInBatchMutate</a>(int&nbsp;diff)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html#line.91">incNumRowKeysInBatchMutate</a>(int&nbsp;diff)</pre>
 </li>
 </ul>
 <a name="incMethodTime-java.lang.String-long-">
@@ -399,7 +399,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>incMethodTime</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html#line.93">incMethodTime</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html#line.95">incMethodTime</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                           long&nbsp;time)</pre>
 </li>
 </ul>
@@ -409,7 +409,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>incActiveWorkerCount</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html#line.102">incActiveWorkerCount</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html#line.104">incActiveWorkerCount</a>()</pre>
 </li>
 </ul>
 <a name="decActiveWorkerCount--">
@@ -418,7 +418,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>decActiveWorkerCount</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html#line.106">decActiveWorkerCount</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html#line.108">decActiveWorkerCount</a>()</pre>
 </li>
 </ul>
 <a name="exception-java.lang.Throwable-">
@@ -427,7 +427,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>exception</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html#line.115">exception</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;rawThrowable)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html#line.117">exception</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;rawThrowable)</pre>
 <div class="block">Increment the count for a specific exception type.  This is called for each exception type
  that is returned to the thrift handler.</div>
 <dl>
@@ -442,7 +442,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>unwrap</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html#line.150">unwrap</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;t)</pre>
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html#line.152">unwrap</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;t)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServer.html b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServer.html
index e90fe6c..377b0d4 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServer.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServer.html
@@ -509,7 +509,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <div class="block">Start up or shuts down the Thrift server, depending on the arguments.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>args</code> - </dd>
+<dd><code>args</code> - the arguments to pass in when starting the Thrift server</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
 </dl>
@@ -521,7 +521,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>processOptions</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.112">processOptions</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.113">processOptions</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Parse the command line options to set parameters the conf.</div>
 <dl>
@@ -536,7 +536,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>stop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.212">stop</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.213">stop</a>()</pre>
 </li>
 </ul>
 <a name="optionToConf-org.apache.commons.cli.CommandLine-java.lang.String-org.apache.hadoop.conf.Configuration-java.lang.String-">
@@ -545,7 +545,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>optionToConf</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.224">optionToConf</a>(org.apache.commons.cli.CommandLine&nbsp;cmd,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.225">optionToConf</a>(org.apache.commons.cli.CommandLine&nbsp;cmd,
                                  <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;option,
                                  org.apache.hadoop.conf.Configuration&nbsp;conf,
                                  <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;destConfKey)</pre>
@@ -557,11 +557,9 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.237">main</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.234">main</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
                  throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>args</code> - </dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
 </dl>


[16/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html
index 7dd656e..fdaaf42 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html
@@ -169,1851 +169,1857 @@
 <span class="sourceLineNo">161</span>  static final String BIND_CONF_KEY = "hbase.regionserver.thrift.ipaddress";<a name="line.161"></a>
 <span class="sourceLineNo">162</span>  static final String COMPACT_CONF_KEY = "hbase.regionserver.thrift.compact";<a name="line.162"></a>
 <span class="sourceLineNo">163</span>  static final String FRAMED_CONF_KEY = "hbase.regionserver.thrift.framed";<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  static final String MAX_FRAME_SIZE_CONF_KEY = "hbase.regionserver.thrift.framed.max_frame_size_in_mb";<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  static final String PORT_CONF_KEY = "hbase.regionserver.thrift.port";<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  static final String COALESCE_INC_KEY = "hbase.regionserver.thrift.coalesceIncrement";<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  static final String USE_HTTP_CONF_KEY = "hbase.regionserver.thrift.http";<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  static final String HTTP_MIN_THREADS = "hbase.thrift.http_threads.min";<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  static final String HTTP_MAX_THREADS = "hbase.thrift.http_threads.max";<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>  static final String THRIFT_SSL_ENABLED = "hbase.thrift.ssl.enabled";<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  static final String THRIFT_SSL_KEYSTORE_STORE = "hbase.thrift.ssl.keystore.store";<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  static final String THRIFT_SSL_KEYSTORE_PASSWORD = "hbase.thrift.ssl.keystore.password";<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  static final String THRIFT_SSL_KEYSTORE_KEYPASSWORD = "hbase.thrift.ssl.keystore.keypassword";<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  static final String THRIFT_SSL_EXCLUDE_CIPHER_SUITES = "hbase.thrift.ssl.exclude.cipher.suites";<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  static final String THRIFT_SSL_INCLUDE_CIPHER_SUITES = "hbase.thrift.ssl.include.cipher.suites";<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  static final String THRIFT_SSL_EXCLUDE_PROTOCOLS = "hbase.thrift.ssl.exclude.protocols";<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  static final String THRIFT_SSL_INCLUDE_PROTOCOLS = "hbase.thrift.ssl.include.protocols";<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>  /**<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   * Amount of time in milliseconds before a server thread will timeout<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   * waiting for client to send data on a connected socket. Currently,<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * applies only to TBoundedThreadPoolServer<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   */<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  public static final String THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY =<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    "hbase.thrift.server.socket.read.timeout";<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public static final int THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT = 60000;<a name="line.187"></a>
-<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">164</span>  static final String MAX_FRAME_SIZE_CONF_KEY =<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          "hbase.regionserver.thrift.framed.max_frame_size_in_mb";<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  static final String PORT_CONF_KEY = "hbase.regionserver.thrift.port";<a name="line.166"></a>
+<span class="sourceLineNo">167</span>  static final String COALESCE_INC_KEY = "hbase.regionserver.thrift.coalesceIncrement";<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  static final String USE_HTTP_CONF_KEY = "hbase.regionserver.thrift.http";<a name="line.168"></a>
+<span class="sourceLineNo">169</span>  static final String HTTP_MIN_THREADS = "hbase.thrift.http_threads.min";<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  static final String HTTP_MAX_THREADS = "hbase.thrift.http_threads.max";<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  static final String THRIFT_SSL_ENABLED = "hbase.thrift.ssl.enabled";<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  static final String THRIFT_SSL_KEYSTORE_STORE = "hbase.thrift.ssl.keystore.store";<a name="line.173"></a>
+<span class="sourceLineNo">174</span>  static final String THRIFT_SSL_KEYSTORE_PASSWORD = "hbase.thrift.ssl.keystore.password";<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  static final String THRIFT_SSL_KEYSTORE_KEYPASSWORD = "hbase.thrift.ssl.keystore.keypassword";<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  static final String THRIFT_SSL_EXCLUDE_CIPHER_SUITES = "hbase.thrift.ssl.exclude.cipher.suites";<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  static final String THRIFT_SSL_INCLUDE_CIPHER_SUITES = "hbase.thrift.ssl.include.cipher.suites";<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  static final String THRIFT_SSL_EXCLUDE_PROTOCOLS = "hbase.thrift.ssl.exclude.protocols";<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  static final String THRIFT_SSL_INCLUDE_PROTOCOLS = "hbase.thrift.ssl.include.protocols";<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  /**<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   * Amount of time in milliseconds before a server thread will timeout<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * waiting for client to send data on a connected socket. Currently,<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * applies only to TBoundedThreadPoolServer<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   */<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public static final String THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY =<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    "hbase.thrift.server.socket.read.timeout";<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  public static final int THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT = 60000;<a name="line.188"></a>
 <span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>  /**<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * Thrift quality of protection configuration key. Valid values can be:<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * auth-conf: authentication, integrity and confidentiality checking<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * auth-int: authentication and integrity checking<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * auth: authentication only<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   *<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * This is used to authenticate the callers and support impersonation.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * The thrift server and the HBase cluster must run in secure mode.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  static final String THRIFT_QOP_KEY = "hbase.thrift.security.qop";<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  static final String BACKLOG_CONF_KEY = "hbase.regionserver.thrift.backlog";<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>  private static final String DEFAULT_BIND_ADDR = "0.0.0.0";<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  public static final int DEFAULT_LISTEN_PORT = 9090;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  public static final int HREGION_VERSION = 1;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  static final String THRIFT_SUPPORT_PROXYUSER = "hbase.thrift.support.proxyuser";<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  private final int listenPort;<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>  private Configuration conf;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  volatile TServer tserver;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  volatile Server httpServer;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>  private final Hbase.Iface handler;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  private final ThriftMetrics metrics;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private final HBaseHandler hbaseHandler;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  private final UserGroupInformation realUser;<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  private SaslUtil.QualityOfProtection qop;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  private String host;<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>  private final boolean securityEnabled;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  private final boolean doAsEnabled;<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>  private final JvmPauseMonitor pauseMonitor;<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  /** An enum of server implementation selections */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  enum ImplType {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    HS_HA("hsha", true, THsHaServer.class, true),<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    NONBLOCKING("nonblocking", true, TNonblockingServer.class, true),<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    THREAD_POOL("threadpool", false, TBoundedThreadPoolServer.class, true),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    THREADED_SELECTOR(<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        "threadedselector", true, TThreadedSelectorServer.class, true);<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>    public static final ImplType DEFAULT = THREAD_POOL;<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>    final String option;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    final boolean isAlwaysFramed;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    final Class&lt;? extends TServer&gt; serverClass;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    final boolean canSpecifyBindIP;<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    ImplType(String option, boolean isAlwaysFramed,<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        Class&lt;? extends TServer&gt; serverClass, boolean canSpecifyBindIP) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      this.option = option;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      this.isAlwaysFramed = isAlwaysFramed;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      this.serverClass = serverClass;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      this.canSpecifyBindIP = canSpecifyBindIP;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>    /**<a name="line.247"></a>
-<span class="sourceLineNo">248</span>     * @return &lt;code&gt;-option&lt;/code&gt; so we can get the list of options from<a name="line.248"></a>
-<span class="sourceLineNo">249</span>     *         {@link #values()}<a name="line.249"></a>
-<span class="sourceLineNo">250</span>     */<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    @Override<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    public String toString() {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      return "-" + option;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    String getDescription() {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      StringBuilder sb = new StringBuilder("Use the " +<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          serverClass.getSimpleName());<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      if (isAlwaysFramed) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        sb.append(" This implies the framed transport.");<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      if (this == DEFAULT) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        sb.append("This is the default.");<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      return sb.toString();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>    static OptionGroup createOptionGroup() {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      OptionGroup group = new OptionGroup();<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      for (ImplType t : values()) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        group.addOption(new Option(t.option, t.getDescription()));<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      }<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      return group;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>    static ImplType getServerImpl(Configuration conf) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      String confType = conf.get(SERVER_TYPE_CONF_KEY, THREAD_POOL.option);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      for (ImplType t : values()) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        if (confType.equals(t.option)) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          return t;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>        }<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      }<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      throw new AssertionError("Unknown server ImplType.option:" + confType);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    static void setServerImpl(CommandLine cmd, Configuration conf) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      ImplType chosenType = null;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      int numChosen = 0;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      for (ImplType t : values()) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        if (cmd.hasOption(t.option)) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          chosenType = t;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          ++numChosen;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        }<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      }<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      if (numChosen &lt; 1) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        LOG.info("Using default thrift server type");<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        chosenType = DEFAULT;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      } else if (numChosen &gt; 1) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        throw new AssertionError("Exactly one option out of " +<a name="line.299"></a>
-<span class="sourceLineNo">300</span>          Arrays.toString(values()) + " has to be specified");<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      LOG.info("Using thrift server type " + chosenType.option);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      conf.set(SERVER_TYPE_CONF_KEY, chosenType.option);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
-<span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span>    public String simpleClassName() {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      return serverClass.getSimpleName();<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    }<a name="line.308"></a>
-<span class="sourceLineNo">309</span><a name="line.309"></a>
-<span class="sourceLineNo">310</span>    public static List&lt;String&gt; serversThatCannotSpecifyBindIP() {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      List&lt;String&gt; l = new ArrayList&lt;&gt;();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      for (ImplType t : values()) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        if (!t.canSpecifyBindIP) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>          l.add(t.simpleClassName());<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      return l;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>  public ThriftServerRunner(Configuration conf) throws IOException {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    UserProvider userProvider = UserProvider.instantiate(conf);<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    // login the server principal (if using secure Hadoop)<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    securityEnabled = userProvider.isHadoopSecurityEnabled()<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      &amp;&amp; userProvider.isHBaseSecurityEnabled();<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    if (securityEnabled) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      host = Strings.domainNamePointerToHostName(DNS.getDefaultHost(<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        conf.get("hbase.thrift.dns.interface", "default"),<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        conf.get("hbase.thrift.dns.nameserver", "default")));<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      userProvider.login("hbase.thrift.keytab.file",<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        "hbase.thrift.kerberos.principal", host);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    }<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    this.conf = HBaseConfiguration.create(conf);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    this.listenPort = conf.getInt(PORT_CONF_KEY, DEFAULT_LISTEN_PORT);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    this.metrics = new ThriftMetrics(conf, ThriftMetrics.ThriftServerType.ONE);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    this.pauseMonitor = new JvmPauseMonitor(conf, this.metrics.getSource());<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    this.hbaseHandler = new HBaseHandler(conf, userProvider);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    this.hbaseHandler.initMetrics(metrics);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    this.handler = HbaseHandlerMetricsProxy.newInstance(<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      hbaseHandler, metrics, conf);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    this.realUser = userProvider.getCurrent().getUGI();<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    String strQop = conf.get(THRIFT_QOP_KEY);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    if (strQop != null) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      this.qop = SaslUtil.getQop(strQop);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    doAsEnabled = conf.getBoolean(THRIFT_SUPPORT_PROXYUSER, false);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    if (doAsEnabled) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      if (!conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        LOG.warn("Fail to enable the doAs feature. hbase.regionserver.thrift.http is not configured ");<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      }<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    if (qop != null) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      if (qop != QualityOfProtection.AUTHENTICATION &amp;&amp;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>          qop != QualityOfProtection.INTEGRITY &amp;&amp;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          qop != QualityOfProtection.PRIVACY) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        throw new IOException(String.format("Invalide %s: It must be one of %s, %s, or %s.",<a name="line.357"></a>
-<span class="sourceLineNo">358</span>                              THRIFT_QOP_KEY,<a name="line.358"></a>
-<span class="sourceLineNo">359</span>                              QualityOfProtection.AUTHENTICATION.name(),<a name="line.359"></a>
-<span class="sourceLineNo">360</span>                              QualityOfProtection.INTEGRITY.name(),<a name="line.360"></a>
-<span class="sourceLineNo">361</span>                              QualityOfProtection.PRIVACY.name()));<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      if (!securityEnabled) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        throw new IOException("Thrift server must"<a name="line.364"></a>
-<span class="sourceLineNo">365</span>          + " run in secure mode to support authentication");<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    }<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  /*<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * Runs the Thrift server<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   */<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  @Override<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  public void run() {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    realUser.doAs(new PrivilegedAction&lt;Object&gt;() {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      @Override<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      public Object run() {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>        try {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>          pauseMonitor.start();<a name="line.379"></a>
-<span class="sourceLineNo">380</span>          if (conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>            setupHTTPServer();<a name="line.381"></a>
-<span class="sourceLineNo">382</span>            httpServer.start();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>            httpServer.join();<a name="line.383"></a>
-<span class="sourceLineNo">384</span>          } else {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>            setupServer();<a name="line.385"></a>
-<span class="sourceLineNo">386</span>            tserver.serve();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>          }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        } catch (Exception e) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          LOG.error(HBaseMarkers.FATAL, "Cannot run ThriftServer", e);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>          // Crash the process if the ThriftServer is not running<a name="line.390"></a>
-<span class="sourceLineNo">391</span>          System.exit(-1);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        }<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        return null;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      }<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    });<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>  }<a name="line.397"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  /**<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * Thrift quality of protection configuration key. Valid values can be:<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * auth-conf: authentication, integrity and confidentiality checking<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * auth-int: authentication and integrity checking<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * auth: authentication only<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   *<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * This is used to authenticate the callers and support impersonation.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * The thrift server and the HBase cluster must run in secure mode.<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   */<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  static final String THRIFT_QOP_KEY = "hbase.thrift.security.qop";<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  static final String BACKLOG_CONF_KEY = "hbase.regionserver.thrift.backlog";<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>  private static final String DEFAULT_BIND_ADDR = "0.0.0.0";<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  public static final int DEFAULT_LISTEN_PORT = 9090;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  public static final int HREGION_VERSION = 1;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>  static final String THRIFT_SUPPORT_PROXYUSER = "hbase.thrift.support.proxyuser";<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  private final int listenPort;<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>  private Configuration conf;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  volatile TServer tserver;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>  volatile Server httpServer;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  private final Hbase.Iface handler;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  private final ThriftMetrics metrics;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  private final HBaseHandler hbaseHandler;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  private final UserGroupInformation realUser;<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>  private SaslUtil.QualityOfProtection qop;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  private String host;<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  private final boolean securityEnabled;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  private final boolean doAsEnabled;<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  private final JvmPauseMonitor pauseMonitor;<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>  /** An enum of server implementation selections */<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  enum ImplType {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    HS_HA("hsha", true, THsHaServer.class, true),<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    NONBLOCKING("nonblocking", true, TNonblockingServer.class, true),<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    THREAD_POOL("threadpool", false, TBoundedThreadPoolServer.class, true),<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    THREADED_SELECTOR(<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        "threadedselector", true, TThreadedSelectorServer.class, true);<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>    public static final ImplType DEFAULT = THREAD_POOL;<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    final String option;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    final boolean isAlwaysFramed;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    final Class&lt;? extends TServer&gt; serverClass;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    final boolean canSpecifyBindIP;<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>    ImplType(String option, boolean isAlwaysFramed,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        Class&lt;? extends TServer&gt; serverClass, boolean canSpecifyBindIP) {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      this.option = option;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      this.isAlwaysFramed = isAlwaysFramed;<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      this.serverClass = serverClass;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      this.canSpecifyBindIP = canSpecifyBindIP;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    }<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>    /**<a name="line.248"></a>
+<span class="sourceLineNo">249</span>     * @return &lt;code&gt;-option&lt;/code&gt; so we can get the list of options from<a name="line.249"></a>
+<span class="sourceLineNo">250</span>     *         {@link #values()}<a name="line.250"></a>
+<span class="sourceLineNo">251</span>     */<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    @Override<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    public String toString() {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      return "-" + option;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>    String getDescription() {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      StringBuilder sb = new StringBuilder("Use the " +<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          serverClass.getSimpleName());<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      if (isAlwaysFramed) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        sb.append(" This implies the framed transport.");<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      }<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      if (this == DEFAULT) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        sb.append("This is the default.");<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      return sb.toString();<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>    static OptionGroup createOptionGroup() {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      OptionGroup group = new OptionGroup();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      for (ImplType t : values()) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        group.addOption(new Option(t.option, t.getDescription()));<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      return group;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>    static ImplType getServerImpl(Configuration conf) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      String confType = conf.get(SERVER_TYPE_CONF_KEY, THREAD_POOL.option);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      for (ImplType t : values()) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        if (confType.equals(t.option)) {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>          return t;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      }<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      throw new AssertionError("Unknown server ImplType.option:" + confType);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    static void setServerImpl(CommandLine cmd, Configuration conf) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      ImplType chosenType = null;<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      int numChosen = 0;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      for (ImplType t : values()) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        if (cmd.hasOption(t.option)) {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          chosenType = t;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>          ++numChosen;<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        }<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      }<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      if (numChosen &lt; 1) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        LOG.info("Using default thrift server type");<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        chosenType = DEFAULT;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      } else if (numChosen &gt; 1) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        throw new AssertionError("Exactly one option out of " +<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          Arrays.toString(values()) + " has to be specified");<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      LOG.info("Using thrift server type " + chosenType.option);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      conf.set(SERVER_TYPE_CONF_KEY, chosenType.option);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span>    public String simpleClassName() {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      return serverClass.getSimpleName();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>    public static List&lt;String&gt; serversThatCannotSpecifyBindIP() {<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      List&lt;String&gt; l = new ArrayList&lt;&gt;();<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      for (ImplType t : values()) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        if (!t.canSpecifyBindIP) {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>          l.add(t.simpleClassName());<a name="line.315"></a>
+<span class="sourceLineNo">316</span>        }<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      return l;<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public ThriftServerRunner(Configuration conf) throws IOException {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    UserProvider userProvider = UserProvider.instantiate(conf);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // login the server principal (if using secure Hadoop)<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    securityEnabled = userProvider.isHadoopSecurityEnabled()<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      &amp;&amp; userProvider.isHBaseSecurityEnabled();<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    if (securityEnabled) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      host = Strings.domainNamePointerToHostName(DNS.getDefaultHost(<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        conf.get("hbase.thrift.dns.interface", "default"),<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        conf.get("hbase.thrift.dns.nameserver", "default")));<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      userProvider.login("hbase.thrift.keytab.file",<a name="line.332"></a>
+<span class="sourceLineNo">333</span>        "hbase.thrift.kerberos.principal", host);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    }<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    this.conf = HBaseConfiguration.create(conf);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    this.listenPort = conf.getInt(PORT_CONF_KEY, DEFAULT_LISTEN_PORT);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    this.metrics = new ThriftMetrics(conf, ThriftMetrics.ThriftServerType.ONE);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    this.pauseMonitor = new JvmPauseMonitor(conf, this.metrics.getSource());<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    this.hbaseHandler = new HBaseHandler(conf, userProvider);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    this.hbaseHandler.initMetrics(metrics);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    this.handler = HbaseHandlerMetricsProxy.newInstance(<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      hbaseHandler, metrics, conf);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    this.realUser = userProvider.getCurrent().getUGI();<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    String strQop = conf.get(THRIFT_QOP_KEY);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    if (strQop != null) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      this.qop = SaslUtil.getQop(strQop);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    doAsEnabled = conf.getBoolean(THRIFT_SUPPORT_PROXYUSER, false);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    if (doAsEnabled) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      if (!conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        LOG.warn("Fail to enable the doAs feature. hbase.regionserver.thrift.http is not " +<a name="line.351"></a>
+<span class="sourceLineNo">352</span>                "configured ");<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      }<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    }<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    if (qop != null) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      if (qop != QualityOfProtection.AUTHENTICATION &amp;&amp;<a name="line.356"></a>
+<span class="sourceLineNo">357</span>          qop != QualityOfProtection.INTEGRITY &amp;&amp;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>          qop != QualityOfProtection.PRIVACY) {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>        throw new IOException(String.format("Invalide %s: It must be one of %s, %s, or %s.",<a name="line.359"></a>
+<span class="sourceLineNo">360</span>                              THRIFT_QOP_KEY,<a name="line.360"></a>
+<span class="sourceLineNo">361</span>                              QualityOfProtection.AUTHENTICATION.name(),<a name="line.361"></a>
+<span class="sourceLineNo">362</span>                              QualityOfProtection.INTEGRITY.name(),<a name="line.362"></a>
+<span class="sourceLineNo">363</span>                              QualityOfProtection.PRIVACY.name()));<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      if (!securityEnabled) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>        throw new IOException("Thrift server must"<a name="line.366"></a>
+<span class="sourceLineNo">367</span>          + " run in secure mode to support authentication");<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    }<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  /*<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * Runs the Thrift server<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   */<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  @Override<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  public void run() {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    realUser.doAs(new PrivilegedAction&lt;Object&gt;() {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      @Override<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      public Object run() {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        try {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>          pauseMonitor.start();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>          if (conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>            setupHTTPServer();<a name="line.383"></a>
+<span class="sourceLineNo">384</span>            httpServer.start();<a name="line.384"></a>
+<span class="sourceLineNo">385</span>            httpServer.join();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>          } else {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>            setupServer();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>            tserver.serve();<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          }<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        } catch (Exception e) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>          LOG.error(HBaseMarkers.FATAL, "Cannot run ThriftServer", e);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          // Crash the process if the ThriftServer is not running<a name="line.392"></a>
+<span class="sourceLineNo">393</span>          System.exit(-1);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        }<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        return null;<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      }<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    });<a name="line.397"></a>
 <span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  public void shutdown() {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    if (pauseMonitor != null) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      pauseMonitor.stop();<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    if (tserver != null) {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      tserver.stop();<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      tserver = null;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    }<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    if (httpServer != null) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      try {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        httpServer.stop();<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        httpServer = null;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      } catch (Exception e) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        LOG.error("Problem encountered in shutting down HTTP server " + e.getCause());<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      httpServer = null;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    }<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  }<a name="line.416"></a>
-<span class="sourceLineNo">417</span><a name="line.417"></a>
-<span class="sourceLineNo">418</span>  private void setupHTTPServer() throws IOException {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    TProcessor processor = new Hbase.Processor&lt;&gt;(handler);<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    TServlet thriftHttpServlet = new ThriftHttpServlet(processor, protocolFactory, realUser,<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        conf, hbaseHandler, securityEnabled, doAsEnabled);<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>    // Set the default max thread number to 100 to limit<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    // the number of concurrent requests so that Thrfit HTTP server doesn't OOM easily.<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    // Jetty set the default max thread number to 250, if we don't set it.<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    //<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    // Our default min thread number 2 is the same as that used by Jetty.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    int minThreads = conf.getInt(HTTP_MIN_THREADS, 2);<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    int maxThreads = conf.getInt(HTTP_MAX_THREADS, 100);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    QueuedThreadPool threadPool = new QueuedThreadPool(maxThreads);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    threadPool.setMinThreads(minThreads);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    httpServer = new Server(threadPool);<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>    // Context handler<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    ServletContextHandler ctxHandler = new ServletContextHandler(httpServer, "/", ServletContextHandler.SESSIONS);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    ctxHandler.addServlet(new ServletHolder(thriftHttpServlet), "/*");<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>    // set up Jetty and run the embedded server<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    HttpConfiguration httpConfig = new HttpConfiguration();<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    httpConfig.setSecureScheme("https");<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    httpConfig.setSecurePort(listenPort);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    httpConfig.setHeaderCacheSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    httpConfig.setRequestHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    httpConfig.setResponseHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    httpConfig.setSendServerVersion(false);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    httpConfig.setSendDateHeader(false);<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>    ServerConnector serverConnector;<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    if(conf.getBoolean(THRIFT_SSL_ENABLED, false)) {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      HttpConfiguration httpsConfig = new HttpConfiguration(httpConfig);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      httpsConfig.addCustomizer(new SecureRequestCustomizer());<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>      SslContextFactory sslCtxFactory = new SslContextFactory();<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      String keystore = conf.get(THRIFT_SSL_KEYSTORE_STORE);<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      String password = HBaseConfiguration.getPassword(conf,<a name="line.456"></a>
-<span class="sourceLineNo">457</span>          THRIFT_SSL_KEYSTORE_PASSWORD, null);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      String keyPassword = HBaseConfiguration.getPassword(conf,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>          THRIFT_SSL_KEYSTORE_KEYPASSWORD, password);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      sslCtxFactory.setKeyStorePath(keystore);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      sslCtxFactory.setKeyStorePassword(password);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      sslCtxFactory.setKeyManagerPassword(keyPassword);<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span>      String[] excludeCiphers = conf.getStrings(<a name="line.464"></a>
-<span class="sourceLineNo">465</span>          THRIFT_SSL_EXCLUDE_CIPHER_SUITES, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      if (excludeCiphers.length != 0) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>        sslCtxFactory.setExcludeCipherSuites(excludeCiphers);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      }<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      String[] includeCiphers = conf.getStrings(<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          THRIFT_SSL_INCLUDE_CIPHER_SUITES, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      if (includeCiphers.length != 0) {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>        sslCtxFactory.setIncludeCipherSuites(includeCiphers);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>      // Disable SSLv3 by default due to "Poodle" Vulnerability - CVE-2014-3566<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      String[] excludeProtocols = conf.getStrings(<a name="line.476"></a>
-<span class="sourceLineNo">477</span>          THRIFT_SSL_EXCLUDE_PROTOCOLS, "SSLv3");<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      if (excludeProtocols.length != 0) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        sslCtxFactory.setExcludeProtocols(excludeProtocols);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      }<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      String[] includeProtocols = conf.getStrings(<a name="line.481"></a>
-<span class="sourceLineNo">482</span>          THRIFT_SSL_INCLUDE_PROTOCOLS, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      if (includeProtocols.length != 0) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>        sslCtxFactory.setIncludeProtocols(includeProtocols);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      }<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>      serverConnector = new ServerConnector(httpServer,<a name="line.487"></a>
-<span class="sourceLineNo">488</span>          new SslConnectionFactory(sslCtxFactory, HttpVersion.HTTP_1_1.toString()),<a name="line.488"></a>
-<span class="sourceLineNo">489</span>          new HttpConnectionFactory(httpsConfig));<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    } else {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      serverConnector = new ServerConnector(httpServer, new HttpConnectionFactory(httpConfig));<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    serverConnector.setPort(listenPort);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    String host = getBindAddress(conf).getHostAddress();<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    serverConnector.setHost(host);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    httpServer.addConnector(serverConnector);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    httpServer.setStopAtShutdown(true);<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    if (doAsEnabled) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      ProxyUsers.refreshSuperUserGroupsConfiguration(conf);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    }<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>    LOG.info("Starting Thrift HTTP Server on " + Integer.toString(listenPort));<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  }<a name="line.504"></a>
+<span class="sourceLineNo">399</span>  }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>  public void shutdown() {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    if (pauseMonitor != null) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      pauseMonitor.stop();<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    }<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    if (tserver != null) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      tserver.stop();<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      tserver = null;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    if (httpServer != null) {<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      try {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        httpServer.stop();<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        httpServer = null;<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      } catch (Exception e) {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        LOG.error("Problem encountered in shutting down HTTP server " + e.getCause());<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      }<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      httpServer = null;<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>  }<a name="line.418"></a>
+<span class="sourceLineNo">419</span><a name="line.419"></a>
+<span class="sourceLineNo">420</span>  private void setupHTTPServer() throws IOException {<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    TProcessor processor = new Hbase.Processor&lt;&gt;(handler);<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    TServlet thriftHttpServlet = new ThriftHttpServlet(processor, protocolFactory, realUser,<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        conf, hbaseHandler, securityEnabled, doAsEnabled);<a name="line.424"></a>
+<span class="sourceLineNo">425</span><a name="line.425"></a>
+<span class="sourceLineNo">426</span>    // Set the default max thread number to 100 to limit<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    // the number of concurrent requests so that Thrfit HTTP server doesn't OOM easily.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    // Jetty set the default max thread number to 250, if we don't set it.<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    //<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    // Our default min thread number 2 is the same as that used by Jetty.<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    int minThreads = conf.getInt(HTTP_MIN_THREADS, 2);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    int maxThreads = conf.getInt(HTTP_MAX_THREADS, 100);<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    QueuedThreadPool threadPool = new QueuedThreadPool(maxThreads);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    threadPool.setMinThreads(minThreads);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    httpServer = new Server(threadPool);<a name="line.435"></a>
+<span class="sourceLineNo">436</span><a name="line.436"></a>
+<span class="sourceLineNo">437</span>    // Context handler<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    ServletContextHandler ctxHandler = new ServletContextHandler(httpServer, "/",<a name="line.438"></a>
+<span class="sourceLineNo">439</span>            ServletContextHandler.SESSIONS);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    ctxHandler.addServlet(new ServletHolder(thriftHttpServlet), "/*");<a name="line.440"></a>
+<span class="sourceLineNo">441</span><a name="line.441"></a>
+<span class="sourceLineNo">442</span>    // set up Jetty and run the embedded server<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    HttpConfiguration httpConfig = new HttpConfiguration();<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    httpConfig.setSecureScheme("https");<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    httpConfig.setSecurePort(listenPort);<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    httpConfig.setHeaderCacheSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    httpConfig.setRequestHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    httpConfig.setResponseHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    httpConfig.setSendServerVersion(false);<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    httpConfig.setSendDateHeader(false);<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    ServerConnector serverConnector;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    if(conf.getBoolean(THRIFT_SSL_ENABLED, false)) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      HttpConfiguration httpsConfig = new HttpConfiguration(httpConfig);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      httpsConfig.addCustomizer(new SecureRequestCustomizer());<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>      SslContextFactory sslCtxFactory = new SslContextFactory();<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      String keystore = conf.get(THRIFT_SSL_KEYSTORE_STORE);<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      String password = HBaseConfiguration.getPassword(conf,<a name="line.459"></a>
+<span class="sourceLineNo">460</span>          THRIFT_SSL_KEYSTORE_PASSWORD, null);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      String keyPassword = HBaseConfiguration.getPassword(conf,<a name="line.461"></a>
+<span class="sourceLineNo">462</span>          THRIFT_SSL_KEYSTORE_KEYPASSWORD, password);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      sslCtxFactory.setKeyStorePath(keystore);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      sslCtxFactory.setKeyStorePassword(password);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      sslCtxFactory.setKeyManagerPassword(keyPassword);<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>      String[] excludeCiphers = conf.getStrings(<a name="line.467"></a>
+<span class="sourceLineNo">468</span>          THRIFT_SSL_EXCLUDE_CIPHER_SUITES, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      if (excludeCiphers.length != 0) {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>        sslCtxFactory.setExcludeCipherSuites(excludeCiphers);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      }<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      String[] includeCiphers = conf.getStrings(<a name="line.472"></a>
+<span class="sourceLineNo">473</span>          THRIFT_SSL_INCLUDE_CIPHER_SUITES, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      if (includeCiphers.length != 0) {<a name="line.474"></a>
+<span class="sourceLineNo">475</span>        sslCtxFactory.setIncludeCipherSuites(includeCiphers);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      }<a name="line.476"></a>
+<span class="sourceLineNo">477</span><a name="line.477"></a>
+<span class="sourceLineNo">478</span>      // Disable SSLv3 by default due to "Poodle" Vulnerability - CVE-2014-3566<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      String[] excludeProtocols = conf.getStrings(<a name="line.479"></a>
+<span class="sourceLineNo">480</span>          THRIFT_SSL_EXCLUDE_PROTOCOLS, "SSLv3");<a name="line.480"></a>
+<span class="sourceLineNo">481</span>      if (excludeProtocols.length != 0) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>        sslCtxFactory.setExcludeProtocols(excludeProtocols);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      }<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      String[] includeProtocols = conf.getStrings(<a name="line.484"></a>
+<span class="sourceLineNo">485</span>          THRIFT_SSL_INCLUDE_PROTOCOLS, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      if (includeProtocols.length != 0) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>        sslCtxFactory.setIncludeProtocols(includeProtocols);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      }<a name="line.488"></a>
+<span class="sourceLineNo">489</span><a name="line.489"></a>
+<span class="sourceLineNo">490</span>      serverConnector = new ServerConnector(httpServer,<a name="line.490"></a>
+<span class="sourceLineNo">491</span>          new SslConnectionFactory(sslCtxFactory, HttpVersion.HTTP_1_1.toString()),<a name="line.491"></a>
+<span class="sourceLineNo">492</span>          new HttpConnectionFactory(httpsConfig));<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    } else {<a name="line.493"></a>
+<span class="sourceLineNo">494</span>      serverConnector = new ServerConnector(httpServer, new HttpConnectionFactory(httpConfig));<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    }<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    serverConnector.setPort(listenPort);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    String host = getBindAddress(conf).getHostAddress();<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    serverConnector.setHost(host);<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    httpServer.addConnector(serverConnector);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    httpServer.setStopAtShutdown(true);<a name="line.500"></a>
+<span class="sourceLineNo">501</span><a name="line.501"></a>
+<span class="sourceLineNo">502</span>    if (doAsEnabled) {<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      ProxyUsers.refreshSuperUserGroupsConfiguration(conf);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    }<a name="line.504"></a>
 <span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>  /**<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * Setting up the thrift TServer<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   */<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  private void setupServer() throws Exception {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    // Construct correct ProtocolFactory<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    TProtocolFactory protocolFactory;<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    if (conf.getBoolean(COMPACT_CONF_KEY, false)) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      LOG.debug("Using compact protocol");<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      protocolFactory = new TCompactProtocol.Factory();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    } else {<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      LOG.debug("Using binary protocol");<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      protocolFactory = new TBinaryProtocol.Factory();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    }<a name="line.518"></a>
+<span class="sourceLineNo">506</span>    LOG.info("Starting Thrift HTTP Server on " + Integer.toString(listenPort));<a name="line.506"></a>
+<span class="sourceLineNo">507</span>  }<a name="line.507"></a>
+<span class="sourceLineNo">508</span><a name="line.508"></a>
+<span class="sourceLineNo">509</span>  /**<a name="line.509"></a>
+<span class="sourceLineNo">510</span>   * Setting up the thrift TServer<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
+<span class="sourceLineNo">512</span>  private void setupServer() throws Exception {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    // Construct correct ProtocolFactory<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    TProtocolFactory protocolFactory = getProtocolFactory();<a name="line.514"></a>
+<span class="sourceLineNo">515</span><a name="line.515"></a>
+<span class="sourceLineNo">516</span>    final TProcessor p = new Hbase.Processor&lt;&gt;(handler);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    ImplType implType = ImplType.getServerImpl(conf);<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    TProcessor processor = p;<a name="line.518"></a>
 <span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>    final TProcessor p = new Hbase.Processor&lt;&gt;(handler);<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    ImplType implType = ImplType.getServerImpl(conf);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    TProcessor processor = p;<a name="line.522"></a>
-<span class="sourceLineNo">523</span><a name="line.523"></a>
-<span class="sourceLineNo">524</span>    // Construct correct TransportFactory<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    TTransportFactory transportFactory;<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    if (conf.getBoolean(FRAMED_CONF_KEY, false) || implType.isAlwaysFramed) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      if (qop != null) {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>        throw new RuntimeException("Thrift server authentication"<a name="line.528"></a>
-<span class="sourceLineNo">529</span>          + " doesn't work with framed transport yet");<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      }<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      transportFactory = new TFramedTransport.Factory(<a name="line.531"></a>
-<span class="sourceLineNo">532</span>          conf.getInt(MAX_FRAME_SIZE_CONF_KEY, 2)  * 1024 * 1024);<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      LOG.debug("Using framed transport");<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    } else if (qop == null) {<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      transportFactory = new TTransportFactory();<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    } else {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      // Extract the name from the principal<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      String name = SecurityUtil.getUserFromPrincipal(<a name="line.538"></a>
-<span class="sourceLineNo">539</span>        conf.get("hbase.thrift.kerberos.principal"));<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      Map&lt;String, String&gt; saslProperties = SaslUtil.initSaslProperties(qop.name());<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      TSaslServerTransport.Factory saslFactory = new TSaslServerTransport.Factory();<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      saslFactory.addServerDefinition("GSSAPI", name, host, saslProperties,<a name="line.542"></a>
-<span class="sourceLineNo">543</span>        new SaslGssCallbackHandler() {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>          @Override<a name="line.544"></a>
-<span class="sourceLineNo">545</span>          public void handle(Callback[] callbacks)<a name="line.545"></a>
-<span class="sourceLineNo">546</span>              throws UnsupportedCallbackException {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>            AuthorizeCallback ac = null;<a name="line.547"></a>
-<span class="sourceLineNo">548</span>            for (Callback callback : callbacks) {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>              if (callback instanceof AuthorizeCallback) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>                ac = (AuthorizeCallback) callback;<a name="line.550"></a>
-<span class="sourceLineNo">551</span>              } else {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>                throw new UnsupportedCallbackException(callback,<a name="line.552"></a>
-<span class="sourceLineNo">553</span>                    "Unrecognized SASL GSSAPI Callback");<a name="line.553"></a>
-<span class="sourceLineNo">554</span>              }<a name="line.554"></a>
-<span class="sourceLineNo">555</span>            }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>            if (ac != null) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>              String authid = ac.getAuthenticationID();<a name="line.557"></a>
-<span class="sourceLineNo">558</span>              String authzid = ac.getAuthorizationID();<a name="line.558"></a>
-<span class="sourceLineNo">559</span>              if (!authid.equals(authzid)) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>                ac.setAuthorized(false);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>              } else {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>                ac.setAuthorized(true);<a name="line.562"></a>
-<span class="sourceLineNo">563</span>                String userName = SecurityUtil.getUserFromPrincipal(authzid);<a name="line.563"></a>
-<span class="sourceLineNo">564</span>                LOG.info("Effective user: " + userName);<a name="line.564"></a>
-<span class="sourceLineNo">565</span>                ac.setAuthorizedID(userName);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>              }<a name="line.566"></a>
-<span class="sourceLineNo">567</span>            }<a name="line.567"></a>
-<span class="sourceLineNo">568</span>          }<a name="line.568"></a>
-<span class="sourceLineNo">569</span>        });<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      transportFactory = saslFactory;<a name="line.570"></a>
-<span class="sourceLineNo">571</span><a name="line.571"></a>
-<span class="sourceLineNo">572</span>      // Create a processor wrapper, to get the caller<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      processor = new TProcessor() {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>        @Override<a name="line.574"></a>
-<span class="sourceLineNo">575</span>        public boolean process(TProtocol inProt,<a name="line.575"></a>
-<span class="sourceLineNo">576</span>            TProtocol outProt) throws TException {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>          TSaslServerTransport saslServerTransport =<a name="line.577"></a>
-<span class="sourceLineNo">578</span>            (TSaslServerTransport)inProt.getTransport();<a name="line.578"></a>
-<span class="sourceLineNo">579</span>          SaslServer saslServer = saslServerTransport.getSaslServer();<a name="line.579"></a>
-<span class="sourceLineNo">580</span>          String principal = saslServer.getAuthorizationID();<a name="line.580"></a>
-<span class="sourceLineNo">581</span>          hbaseHandler.setEffectiveUser(principal);<a name="line.581"></a>
-<span class="sourceLineNo">582</span>          return p.process(inProt, outProt);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>        }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>      };<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    }<a name="line.585"></a>
-<span class="sourceLineNo">586</span><a name="line.586"></a>
-<span class="sourceLineNo">587</span>    if (conf.get(BIND_CONF_KEY) != null &amp;&amp; !implType.canSpecifyBindIP) {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      LOG.error("Server types " + Joiner.on(", ").join(<a name="line.588"></a>
-<span class="sourceLineNo">589</span>          ImplType.serversThatCannotSpecifyBindIP()) + " don't support IP " +<a name="line.589"></a>
-<span class="sourceLineNo">590</span>          "address binding at the moment. See " +<a name="line.590"></a>
-<span class="sourceLineNo">591</span>          "https://issues.apache.org/jira/browse/HBASE-2155 for details.");<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      throw new RuntimeException(<a name="line.592"></a>
-<span class="sourceLineNo">593</span>          "-" + BIND_CONF_KEY + " not supported with " + implType);<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    }<a name="line.594"></a>
-<span class="sourceLineNo">595</span><a name="line.595"></a>
-<span class="sourceLineNo">596</span>    // Thrift's implementation uses '0' as a placeholder for 'use the default.'<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    int backlog = conf.getInt(BACKLOG_CONF_KEY, 0);<a name="line.597"></a>
-<span class="sourceLineNo">598</span><a name="line.598"></a>
-<span class="sourceLineNo">599</span>    if (implType == ImplType.HS_HA || implType == ImplType.NONBLOCKING ||<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        implType == ImplType.THREADED_SELECTOR) {<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      InetAddress listenAddress = getBindAddress(conf);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      TNonblockingServerTransport serverTransport = new TNonblockingServerSocket(<a name="line.602"></a>
-<span class="sourceLineNo">603</span>          new InetSocketAddress(listenAddress, listenPort));<a name="line.603"></a>
-<span class="sourceLineNo">604</span><a name="line.604"></a>
-<span class="sourceLineNo">605</span>      if (implType == ImplType.NONBLOCKING) {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>        TNonblockingServer.Args serverArgs =<a name="line.606"></a>
-<span class="sourceLineNo">607</span>            new TNonblockingServer.Args(serverTransport);<a name="line.607"></a>
-<span class="sourceLineNo">608</span>        serverArgs.processor(processor)<a name="line.608"></a>
-<span class="sourceLineNo">609</span>                  .transportFactory(transportFactory)<a name="line.609"></a>
-<span class="sourceLineNo">610</span>                  .protocolFactory(protocolFactory);<a name="line.610"></a>
-<span class="sourceLineNo">611</span>        tserver = new TNonblockingServer(serverArgs);<a name="line.611"></a>
-<span class="sourceLineNo">612</span>      } else if (implType == ImplType.HS_HA) {<a name="line.612"></a>
-<span class="sourceLineNo">613</span>        THsHaServer.Args serverArgs = new THsHaServer.Args(serverTransport);<a name="line.613"></a>
-<span class="sourceLineNo">614</span>        CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        ExecutorService executorService = createExecutor(<a name="line.615"></a>
-<span class="sourceLineNo">616</span>            callQueue, serverArgs.getMaxWorkerThreads(), serverArgs.getMaxWorkerThreads());<a name="line.616"></a>
-<span class="sourceLineNo">617</span>        serverArgs.executorService(executorService)<a name="line.617"></a>
-<span class="sourceLineNo">618</span>                  .processor(processor)<a name="line.618"></a>
-<span class="sourceLineNo">619</span>                  .transportFactory(transportFactory)<a name="line.619"></a>
-<span class="sourceLineNo">620</span>                  .protocolFactory(protocolFactory);<a name="line.620"></a>
-<span class="sourceLineNo">621</span>        tserver = new THsHaServer(serverArgs);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      } else { // THREADED_SELECTOR<a name="line.622"></a>
-<span class="sourceLineNo">623</span>        TThreadedSelectorServer.Args serverArgs =<a name="line.623"></a>
-<span class="sourceLineNo">624</span>            new HThreadedSelectorServerArgs(serverTransport, conf);<a name="line.624"></a>
-<span class="sourceLineNo">625</span>        CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>        ExecutorService executorService = createExecutor(<a name="line.626"></a>
-<span class="sourceLineNo">627</span>            callQueue, serverArgs.getWorkerThreads(), serverArgs.getWorkerThreads());<a name="line.627"></a>
-<span class="sourceLineNo">628</span>        serverArgs.executorService(executorService)<a name="line.628"></a>
-<span class="sourceLineNo">629</span>                  .processor(processor)<a name="line.629"></a>
-<span class="sourceLineNo">630</span>                  .transportFactory(transportFactory)<a name="line.630"></a>
-<span class="sourceLineNo">631</span>                  .protocolFactory(protocolFactory);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>        tserver = new TThreadedSelectorServer(serverArgs);<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      }<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      LOG.info("starting HBase " + implType.simpleClassName() +<a name="line.634"></a>
-<span class="sourceLineNo">635</span>          " server on " + Integer.toString(listenPort));<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    } else if (implType == ImplType.THREAD_POOL) {<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      // Thread pool server. Get the IP address to bind to.<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      InetAddress listenAddress = getBindAddress(conf);<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      int readTimeout = conf.getInt(THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY,<a name="line.639"></a>
-<span class="sourceLineNo">640</span>          THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT);<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      TServerTransport serverTransport = new TServerSocket(<a name="line.641"></a>
-<span class="sourceLineNo">642</span>          new TServerSocket.ServerSocketTransportArgs().<a name="line.642"></a>
-<span class="sourceLineNo">643</span>              bindAddr(new InetSocketAddress(listenAddress, listenPort)).<a name="line.643"></a>
-<span class="sourceLineNo">644</span>              backlog(backlog).<a name="line.644"></a>
-<span class="sourceLineNo">645</span>              clientTimeout(readTimeout));<a name="line.645"></a>
-<span class="sourceLineNo">646</span><a name="line.646"></a>
-<span class="sourceLineNo">647</span>      TBoundedThreadPoolServer.Args serverArgs =<a name="line.647"></a>
-<span class="sourceLineNo">648</span>          new TBoundedThreadPoolServer.Args(serverTransport, conf);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      serverArgs.processor(processor)<a name="line.649"></a>
-<span class="sourceLineNo">650</span>                .transportFactory(transportFactory)<a name="line.650"></a>
-<span class="sourceLineNo">651</span>                .protocolFactory(protocolFactory);<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      LOG.info("starting " + ImplType.THREAD_POOL.simpleClassName() + " on "<a name="line.652"></a>
-<span class="sourceLineNo">653</span>          + listenAddress + ":" + Integer.toString(listenPort)<a name="line.653"></a>
-<span class="sourceLineNo">654</span>          + " with readTimeout " + readTimeout + "ms; " + serverArgs);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      TBoundedThreadPoolServer tserver =<a name="line.655"></a>
-<span class="sourceLineNo">656</span>          new TBoundedThreadPoolServer(serverArgs, metrics);<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      this.tserver = tserver;<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    } else {<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      throw new AssertionError("Unsupported Thrift server implementation: " +<a name="line.659"></a>
-<span class="sourceLineNo">660</span>          implType.simpleClassName());<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    }<a name="line.661"></a>
+<span class="sourceLineNo">520</span>    // Construct correct TransportFactory<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    TTransportFactory transportFactory;<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    if (conf.getBoolean(FRAMED_CONF_KEY, false) || implType.isAlwaysFramed) {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>      if (qop != null) {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>        throw new RuntimeException("Thrift server authentication"<a name="line.524"></a>
+<span class="sourceLineNo">525</span>          + " doesn't work with framed transport yet");<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      }<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      transportFactory = new TFramedTransport.Factory(<a name="line.527"></a>
+<span class="sourceLineNo">528</span>          conf.getInt(MAX_FRAME_SIZE_CONF_KEY, 2)  * 1024 * 1024);<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      LOG.debug("Using framed transport");<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    } else if (qop == null) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>      transportFactory = new TTransportFactory();<a name="line.531"></a>
+<span class="sourceLineNo">532</span>    } else {<a name="line.532"></a>
+<span class="sourceLineNo">533</span>      // Extract the name from the principal<a name="line.533"></a>
+<span class="sourceLineNo">534</span>      String name = SecurityUtil.getUserFromPrincipal(<a name="line.534"></a>
+<span class="sourceLineNo">535</span>        conf.get("hbase.thrift.kerberos.principal"));<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      Map&lt;String, String&gt; saslProperties = SaslUtil.initSaslProperties(qop.name());<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      TSaslServerTransport.Factory saslFactory = new TSaslServerTransport.Factory();<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      saslFactory.addServerDefinition("GSSAPI", name, host, saslProperties,<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        new SaslGssCallbackHandler() {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>          @Override<a name="line.540"></

<TRUNCATED>

[14/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html
index 7dd656e..fdaaf42 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html
@@ -169,1851 +169,1857 @@
 <span class="sourceLineNo">161</span>  static final String BIND_CONF_KEY = "hbase.regionserver.thrift.ipaddress";<a name="line.161"></a>
 <span class="sourceLineNo">162</span>  static final String COMPACT_CONF_KEY = "hbase.regionserver.thrift.compact";<a name="line.162"></a>
 <span class="sourceLineNo">163</span>  static final String FRAMED_CONF_KEY = "hbase.regionserver.thrift.framed";<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  static final String MAX_FRAME_SIZE_CONF_KEY = "hbase.regionserver.thrift.framed.max_frame_size_in_mb";<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  static final String PORT_CONF_KEY = "hbase.regionserver.thrift.port";<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  static final String COALESCE_INC_KEY = "hbase.regionserver.thrift.coalesceIncrement";<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  static final String USE_HTTP_CONF_KEY = "hbase.regionserver.thrift.http";<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  static final String HTTP_MIN_THREADS = "hbase.thrift.http_threads.min";<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  static final String HTTP_MAX_THREADS = "hbase.thrift.http_threads.max";<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>  static final String THRIFT_SSL_ENABLED = "hbase.thrift.ssl.enabled";<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  static final String THRIFT_SSL_KEYSTORE_STORE = "hbase.thrift.ssl.keystore.store";<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  static final String THRIFT_SSL_KEYSTORE_PASSWORD = "hbase.thrift.ssl.keystore.password";<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  static final String THRIFT_SSL_KEYSTORE_KEYPASSWORD = "hbase.thrift.ssl.keystore.keypassword";<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  static final String THRIFT_SSL_EXCLUDE_CIPHER_SUITES = "hbase.thrift.ssl.exclude.cipher.suites";<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  static final String THRIFT_SSL_INCLUDE_CIPHER_SUITES = "hbase.thrift.ssl.include.cipher.suites";<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  static final String THRIFT_SSL_EXCLUDE_PROTOCOLS = "hbase.thrift.ssl.exclude.protocols";<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  static final String THRIFT_SSL_INCLUDE_PROTOCOLS = "hbase.thrift.ssl.include.protocols";<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>  /**<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   * Amount of time in milliseconds before a server thread will timeout<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   * waiting for client to send data on a connected socket. Currently,<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * applies only to TBoundedThreadPoolServer<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   */<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  public static final String THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY =<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    "hbase.thrift.server.socket.read.timeout";<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public static final int THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT = 60000;<a name="line.187"></a>
-<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">164</span>  static final String MAX_FRAME_SIZE_CONF_KEY =<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          "hbase.regionserver.thrift.framed.max_frame_size_in_mb";<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  static final String PORT_CONF_KEY = "hbase.regionserver.thrift.port";<a name="line.166"></a>
+<span class="sourceLineNo">167</span>  static final String COALESCE_INC_KEY = "hbase.regionserver.thrift.coalesceIncrement";<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  static final String USE_HTTP_CONF_KEY = "hbase.regionserver.thrift.http";<a name="line.168"></a>
+<span class="sourceLineNo">169</span>  static final String HTTP_MIN_THREADS = "hbase.thrift.http_threads.min";<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  static final String HTTP_MAX_THREADS = "hbase.thrift.http_threads.max";<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  static final String THRIFT_SSL_ENABLED = "hbase.thrift.ssl.enabled";<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  static final String THRIFT_SSL_KEYSTORE_STORE = "hbase.thrift.ssl.keystore.store";<a name="line.173"></a>
+<span class="sourceLineNo">174</span>  static final String THRIFT_SSL_KEYSTORE_PASSWORD = "hbase.thrift.ssl.keystore.password";<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  static final String THRIFT_SSL_KEYSTORE_KEYPASSWORD = "hbase.thrift.ssl.keystore.keypassword";<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  static final String THRIFT_SSL_EXCLUDE_CIPHER_SUITES = "hbase.thrift.ssl.exclude.cipher.suites";<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  static final String THRIFT_SSL_INCLUDE_CIPHER_SUITES = "hbase.thrift.ssl.include.cipher.suites";<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  static final String THRIFT_SSL_EXCLUDE_PROTOCOLS = "hbase.thrift.ssl.exclude.protocols";<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  static final String THRIFT_SSL_INCLUDE_PROTOCOLS = "hbase.thrift.ssl.include.protocols";<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  /**<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   * Amount of time in milliseconds before a server thread will timeout<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * waiting for client to send data on a connected socket. Currently,<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * applies only to TBoundedThreadPoolServer<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   */<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public static final String THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY =<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    "hbase.thrift.server.socket.read.timeout";<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  public static final int THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT = 60000;<a name="line.188"></a>
 <span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>  /**<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * Thrift quality of protection configuration key. Valid values can be:<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * auth-conf: authentication, integrity and confidentiality checking<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * auth-int: authentication and integrity checking<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * auth: authentication only<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   *<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * This is used to authenticate the callers and support impersonation.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * The thrift server and the HBase cluster must run in secure mode.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  static final String THRIFT_QOP_KEY = "hbase.thrift.security.qop";<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  static final String BACKLOG_CONF_KEY = "hbase.regionserver.thrift.backlog";<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>  private static final String DEFAULT_BIND_ADDR = "0.0.0.0";<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  public static final int DEFAULT_LISTEN_PORT = 9090;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  public static final int HREGION_VERSION = 1;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  static final String THRIFT_SUPPORT_PROXYUSER = "hbase.thrift.support.proxyuser";<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  private final int listenPort;<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>  private Configuration conf;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  volatile TServer tserver;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  volatile Server httpServer;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>  private final Hbase.Iface handler;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  private final ThriftMetrics metrics;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private final HBaseHandler hbaseHandler;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  private final UserGroupInformation realUser;<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  private SaslUtil.QualityOfProtection qop;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  private String host;<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>  private final boolean securityEnabled;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  private final boolean doAsEnabled;<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>  private final JvmPauseMonitor pauseMonitor;<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  /** An enum of server implementation selections */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  enum ImplType {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    HS_HA("hsha", true, THsHaServer.class, true),<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    NONBLOCKING("nonblocking", true, TNonblockingServer.class, true),<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    THREAD_POOL("threadpool", false, TBoundedThreadPoolServer.class, true),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    THREADED_SELECTOR(<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        "threadedselector", true, TThreadedSelectorServer.class, true);<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>    public static final ImplType DEFAULT = THREAD_POOL;<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>    final String option;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    final boolean isAlwaysFramed;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    final Class&lt;? extends TServer&gt; serverClass;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    final boolean canSpecifyBindIP;<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    ImplType(String option, boolean isAlwaysFramed,<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        Class&lt;? extends TServer&gt; serverClass, boolean canSpecifyBindIP) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      this.option = option;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      this.isAlwaysFramed = isAlwaysFramed;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      this.serverClass = serverClass;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      this.canSpecifyBindIP = canSpecifyBindIP;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>    /**<a name="line.247"></a>
-<span class="sourceLineNo">248</span>     * @return &lt;code&gt;-option&lt;/code&gt; so we can get the list of options from<a name="line.248"></a>
-<span class="sourceLineNo">249</span>     *         {@link #values()}<a name="line.249"></a>
-<span class="sourceLineNo">250</span>     */<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    @Override<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    public String toString() {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      return "-" + option;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    String getDescription() {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      StringBuilder sb = new StringBuilder("Use the " +<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          serverClass.getSimpleName());<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      if (isAlwaysFramed) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        sb.append(" This implies the framed transport.");<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      if (this == DEFAULT) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        sb.append("This is the default.");<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      return sb.toString();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>    static OptionGroup createOptionGroup() {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      OptionGroup group = new OptionGroup();<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      for (ImplType t : values()) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        group.addOption(new Option(t.option, t.getDescription()));<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      }<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      return group;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>    static ImplType getServerImpl(Configuration conf) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      String confType = conf.get(SERVER_TYPE_CONF_KEY, THREAD_POOL.option);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      for (ImplType t : values()) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        if (confType.equals(t.option)) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          return t;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>        }<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      }<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      throw new AssertionError("Unknown server ImplType.option:" + confType);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    static void setServerImpl(CommandLine cmd, Configuration conf) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      ImplType chosenType = null;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      int numChosen = 0;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      for (ImplType t : values()) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        if (cmd.hasOption(t.option)) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          chosenType = t;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          ++numChosen;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        }<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      }<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      if (numChosen &lt; 1) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        LOG.info("Using default thrift server type");<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        chosenType = DEFAULT;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      } else if (numChosen &gt; 1) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        throw new AssertionError("Exactly one option out of " +<a name="line.299"></a>
-<span class="sourceLineNo">300</span>          Arrays.toString(values()) + " has to be specified");<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      LOG.info("Using thrift server type " + chosenType.option);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      conf.set(SERVER_TYPE_CONF_KEY, chosenType.option);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
-<span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span>    public String simpleClassName() {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      return serverClass.getSimpleName();<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    }<a name="line.308"></a>
-<span class="sourceLineNo">309</span><a name="line.309"></a>
-<span class="sourceLineNo">310</span>    public static List&lt;String&gt; serversThatCannotSpecifyBindIP() {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      List&lt;String&gt; l = new ArrayList&lt;&gt;();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      for (ImplType t : values()) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        if (!t.canSpecifyBindIP) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>          l.add(t.simpleClassName());<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      return l;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>  public ThriftServerRunner(Configuration conf) throws IOException {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    UserProvider userProvider = UserProvider.instantiate(conf);<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    // login the server principal (if using secure Hadoop)<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    securityEnabled = userProvider.isHadoopSecurityEnabled()<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      &amp;&amp; userProvider.isHBaseSecurityEnabled();<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    if (securityEnabled) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      host = Strings.domainNamePointerToHostName(DNS.getDefaultHost(<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        conf.get("hbase.thrift.dns.interface", "default"),<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        conf.get("hbase.thrift.dns.nameserver", "default")));<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      userProvider.login("hbase.thrift.keytab.file",<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        "hbase.thrift.kerberos.principal", host);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    }<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    this.conf = HBaseConfiguration.create(conf);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    this.listenPort = conf.getInt(PORT_CONF_KEY, DEFAULT_LISTEN_PORT);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    this.metrics = new ThriftMetrics(conf, ThriftMetrics.ThriftServerType.ONE);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    this.pauseMonitor = new JvmPauseMonitor(conf, this.metrics.getSource());<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    this.hbaseHandler = new HBaseHandler(conf, userProvider);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    this.hbaseHandler.initMetrics(metrics);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    this.handler = HbaseHandlerMetricsProxy.newInstance(<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      hbaseHandler, metrics, conf);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    this.realUser = userProvider.getCurrent().getUGI();<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    String strQop = conf.get(THRIFT_QOP_KEY);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    if (strQop != null) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      this.qop = SaslUtil.getQop(strQop);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    doAsEnabled = conf.getBoolean(THRIFT_SUPPORT_PROXYUSER, false);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    if (doAsEnabled) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      if (!conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        LOG.warn("Fail to enable the doAs feature. hbase.regionserver.thrift.http is not configured ");<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      }<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    if (qop != null) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      if (qop != QualityOfProtection.AUTHENTICATION &amp;&amp;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>          qop != QualityOfProtection.INTEGRITY &amp;&amp;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          qop != QualityOfProtection.PRIVACY) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        throw new IOException(String.format("Invalide %s: It must be one of %s, %s, or %s.",<a name="line.357"></a>
-<span class="sourceLineNo">358</span>                              THRIFT_QOP_KEY,<a name="line.358"></a>
-<span class="sourceLineNo">359</span>                              QualityOfProtection.AUTHENTICATION.name(),<a name="line.359"></a>
-<span class="sourceLineNo">360</span>                              QualityOfProtection.INTEGRITY.name(),<a name="line.360"></a>
-<span class="sourceLineNo">361</span>                              QualityOfProtection.PRIVACY.name()));<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      if (!securityEnabled) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        throw new IOException("Thrift server must"<a name="line.364"></a>
-<span class="sourceLineNo">365</span>          + " run in secure mode to support authentication");<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    }<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  /*<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * Runs the Thrift server<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   */<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  @Override<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  public void run() {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    realUser.doAs(new PrivilegedAction&lt;Object&gt;() {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      @Override<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      public Object run() {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>        try {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>          pauseMonitor.start();<a name="line.379"></a>
-<span class="sourceLineNo">380</span>          if (conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>            setupHTTPServer();<a name="line.381"></a>
-<span class="sourceLineNo">382</span>            httpServer.start();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>            httpServer.join();<a name="line.383"></a>
-<span class="sourceLineNo">384</span>          } else {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>            setupServer();<a name="line.385"></a>
-<span class="sourceLineNo">386</span>            tserver.serve();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>          }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        } catch (Exception e) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          LOG.error(HBaseMarkers.FATAL, "Cannot run ThriftServer", e);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>          // Crash the process if the ThriftServer is not running<a name="line.390"></a>
-<span class="sourceLineNo">391</span>          System.exit(-1);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        }<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        return null;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      }<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    });<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>  }<a name="line.397"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  /**<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * Thrift quality of protection configuration key. Valid values can be:<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * auth-conf: authentication, integrity and confidentiality checking<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * auth-int: authentication and integrity checking<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * auth: authentication only<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   *<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * This is used to authenticate the callers and support impersonation.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * The thrift server and the HBase cluster must run in secure mode.<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   */<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  static final String THRIFT_QOP_KEY = "hbase.thrift.security.qop";<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  static final String BACKLOG_CONF_KEY = "hbase.regionserver.thrift.backlog";<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>  private static final String DEFAULT_BIND_ADDR = "0.0.0.0";<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  public static final int DEFAULT_LISTEN_PORT = 9090;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  public static final int HREGION_VERSION = 1;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>  static final String THRIFT_SUPPORT_PROXYUSER = "hbase.thrift.support.proxyuser";<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  private final int listenPort;<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>  private Configuration conf;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  volatile TServer tserver;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>  volatile Server httpServer;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  private final Hbase.Iface handler;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  private final ThriftMetrics metrics;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  private final HBaseHandler hbaseHandler;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  private final UserGroupInformation realUser;<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>  private SaslUtil.QualityOfProtection qop;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  private String host;<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  private final boolean securityEnabled;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  private final boolean doAsEnabled;<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  private final JvmPauseMonitor pauseMonitor;<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>  /** An enum of server implementation selections */<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  enum ImplType {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    HS_HA("hsha", true, THsHaServer.class, true),<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    NONBLOCKING("nonblocking", true, TNonblockingServer.class, true),<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    THREAD_POOL("threadpool", false, TBoundedThreadPoolServer.class, true),<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    THREADED_SELECTOR(<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        "threadedselector", true, TThreadedSelectorServer.class, true);<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>    public static final ImplType DEFAULT = THREAD_POOL;<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    final String option;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    final boolean isAlwaysFramed;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    final Class&lt;? extends TServer&gt; serverClass;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    final boolean canSpecifyBindIP;<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>    ImplType(String option, boolean isAlwaysFramed,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        Class&lt;? extends TServer&gt; serverClass, boolean canSpecifyBindIP) {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      this.option = option;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      this.isAlwaysFramed = isAlwaysFramed;<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      this.serverClass = serverClass;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      this.canSpecifyBindIP = canSpecifyBindIP;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    }<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>    /**<a name="line.248"></a>
+<span class="sourceLineNo">249</span>     * @return &lt;code&gt;-option&lt;/code&gt; so we can get the list of options from<a name="line.249"></a>
+<span class="sourceLineNo">250</span>     *         {@link #values()}<a name="line.250"></a>
+<span class="sourceLineNo">251</span>     */<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    @Override<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    public String toString() {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      return "-" + option;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>    String getDescription() {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      StringBuilder sb = new StringBuilder("Use the " +<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          serverClass.getSimpleName());<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      if (isAlwaysFramed) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        sb.append(" This implies the framed transport.");<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      }<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      if (this == DEFAULT) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        sb.append("This is the default.");<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      return sb.toString();<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>    static OptionGroup createOptionGroup() {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      OptionGroup group = new OptionGroup();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      for (ImplType t : values()) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        group.addOption(new Option(t.option, t.getDescription()));<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      return group;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>    static ImplType getServerImpl(Configuration conf) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      String confType = conf.get(SERVER_TYPE_CONF_KEY, THREAD_POOL.option);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      for (ImplType t : values()) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        if (confType.equals(t.option)) {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>          return t;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      }<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      throw new AssertionError("Unknown server ImplType.option:" + confType);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    static void setServerImpl(CommandLine cmd, Configuration conf) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      ImplType chosenType = null;<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      int numChosen = 0;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      for (ImplType t : values()) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        if (cmd.hasOption(t.option)) {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          chosenType = t;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>          ++numChosen;<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        }<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      }<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      if (numChosen &lt; 1) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        LOG.info("Using default thrift server type");<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        chosenType = DEFAULT;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      } else if (numChosen &gt; 1) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        throw new AssertionError("Exactly one option out of " +<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          Arrays.toString(values()) + " has to be specified");<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      LOG.info("Using thrift server type " + chosenType.option);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      conf.set(SERVER_TYPE_CONF_KEY, chosenType.option);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span>    public String simpleClassName() {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      return serverClass.getSimpleName();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>    public static List&lt;String&gt; serversThatCannotSpecifyBindIP() {<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      List&lt;String&gt; l = new ArrayList&lt;&gt;();<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      for (ImplType t : values()) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        if (!t.canSpecifyBindIP) {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>          l.add(t.simpleClassName());<a name="line.315"></a>
+<span class="sourceLineNo">316</span>        }<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      return l;<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public ThriftServerRunner(Configuration conf) throws IOException {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    UserProvider userProvider = UserProvider.instantiate(conf);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // login the server principal (if using secure Hadoop)<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    securityEnabled = userProvider.isHadoopSecurityEnabled()<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      &amp;&amp; userProvider.isHBaseSecurityEnabled();<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    if (securityEnabled) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      host = Strings.domainNamePointerToHostName(DNS.getDefaultHost(<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        conf.get("hbase.thrift.dns.interface", "default"),<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        conf.get("hbase.thrift.dns.nameserver", "default")));<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      userProvider.login("hbase.thrift.keytab.file",<a name="line.332"></a>
+<span class="sourceLineNo">333</span>        "hbase.thrift.kerberos.principal", host);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    }<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    this.conf = HBaseConfiguration.create(conf);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    this.listenPort = conf.getInt(PORT_CONF_KEY, DEFAULT_LISTEN_PORT);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    this.metrics = new ThriftMetrics(conf, ThriftMetrics.ThriftServerType.ONE);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    this.pauseMonitor = new JvmPauseMonitor(conf, this.metrics.getSource());<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    this.hbaseHandler = new HBaseHandler(conf, userProvider);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    this.hbaseHandler.initMetrics(metrics);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    this.handler = HbaseHandlerMetricsProxy.newInstance(<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      hbaseHandler, metrics, conf);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    this.realUser = userProvider.getCurrent().getUGI();<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    String strQop = conf.get(THRIFT_QOP_KEY);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    if (strQop != null) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      this.qop = SaslUtil.getQop(strQop);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    doAsEnabled = conf.getBoolean(THRIFT_SUPPORT_PROXYUSER, false);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    if (doAsEnabled) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      if (!conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        LOG.warn("Fail to enable the doAs feature. hbase.regionserver.thrift.http is not " +<a name="line.351"></a>
+<span class="sourceLineNo">352</span>                "configured ");<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      }<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    }<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    if (qop != null) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      if (qop != QualityOfProtection.AUTHENTICATION &amp;&amp;<a name="line.356"></a>
+<span class="sourceLineNo">357</span>          qop != QualityOfProtection.INTEGRITY &amp;&amp;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>          qop != QualityOfProtection.PRIVACY) {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>        throw new IOException(String.format("Invalide %s: It must be one of %s, %s, or %s.",<a name="line.359"></a>
+<span class="sourceLineNo">360</span>                              THRIFT_QOP_KEY,<a name="line.360"></a>
+<span class="sourceLineNo">361</span>                              QualityOfProtection.AUTHENTICATION.name(),<a name="line.361"></a>
+<span class="sourceLineNo">362</span>                              QualityOfProtection.INTEGRITY.name(),<a name="line.362"></a>
+<span class="sourceLineNo">363</span>                              QualityOfProtection.PRIVACY.name()));<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      if (!securityEnabled) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>        throw new IOException("Thrift server must"<a name="line.366"></a>
+<span class="sourceLineNo">367</span>          + " run in secure mode to support authentication");<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    }<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  /*<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * Runs the Thrift server<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   */<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  @Override<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  public void run() {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    realUser.doAs(new PrivilegedAction&lt;Object&gt;() {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      @Override<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      public Object run() {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        try {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>          pauseMonitor.start();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>          if (conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>            setupHTTPServer();<a name="line.383"></a>
+<span class="sourceLineNo">384</span>            httpServer.start();<a name="line.384"></a>
+<span class="sourceLineNo">385</span>            httpServer.join();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>          } else {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>            setupServer();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>            tserver.serve();<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          }<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        } catch (Exception e) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>          LOG.error(HBaseMarkers.FATAL, "Cannot run ThriftServer", e);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          // Crash the process if the ThriftServer is not running<a name="line.392"></a>
+<span class="sourceLineNo">393</span>          System.exit(-1);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        }<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        return null;<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      }<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    });<a name="line.397"></a>
 <span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  public void shutdown() {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    if (pauseMonitor != null) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      pauseMonitor.stop();<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    if (tserver != null) {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      tserver.stop();<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      tserver = null;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    }<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    if (httpServer != null) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      try {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        httpServer.stop();<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        httpServer = null;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      } catch (Exception e) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        LOG.error("Problem encountered in shutting down HTTP server " + e.getCause());<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      httpServer = null;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    }<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  }<a name="line.416"></a>
-<span class="sourceLineNo">417</span><a name="line.417"></a>
-<span class="sourceLineNo">418</span>  private void setupHTTPServer() throws IOException {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    TProcessor processor = new Hbase.Processor&lt;&gt;(handler);<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    TServlet thriftHttpServlet = new ThriftHttpServlet(processor, protocolFactory, realUser,<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        conf, hbaseHandler, securityEnabled, doAsEnabled);<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>    // Set the default max thread number to 100 to limit<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    // the number of concurrent requests so that Thrfit HTTP server doesn't OOM easily.<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    // Jetty set the default max thread number to 250, if we don't set it.<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    //<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    // Our default min thread number 2 is the same as that used by Jetty.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    int minThreads = conf.getInt(HTTP_MIN_THREADS, 2);<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    int maxThreads = conf.getInt(HTTP_MAX_THREADS, 100);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    QueuedThreadPool threadPool = new QueuedThreadPool(maxThreads);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    threadPool.setMinThreads(minThreads);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    httpServer = new Server(threadPool);<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>    // Context handler<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    ServletContextHandler ctxHandler = new ServletContextHandler(httpServer, "/", ServletContextHandler.SESSIONS);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    ctxHandler.addServlet(new ServletHolder(thriftHttpServlet), "/*");<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>    // set up Jetty and run the embedded server<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    HttpConfiguration httpConfig = new HttpConfiguration();<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    httpConfig.setSecureScheme("https");<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    httpConfig.setSecurePort(listenPort);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    httpConfig.setHeaderCacheSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    httpConfig.setRequestHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    httpConfig.setResponseHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    httpConfig.setSendServerVersion(false);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    httpConfig.setSendDateHeader(false);<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>    ServerConnector serverConnector;<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    if(conf.getBoolean(THRIFT_SSL_ENABLED, false)) {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      HttpConfiguration httpsConfig = new HttpConfiguration(httpConfig);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      httpsConfig.addCustomizer(new SecureRequestCustomizer());<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>      SslContextFactory sslCtxFactory = new SslContextFactory();<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      String keystore = conf.get(THRIFT_SSL_KEYSTORE_STORE);<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      String password = HBaseConfiguration.getPassword(conf,<a name="line.456"></a>
-<span class="sourceLineNo">457</span>          THRIFT_SSL_KEYSTORE_PASSWORD, null);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      String keyPassword = HBaseConfiguration.getPassword(conf,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>          THRIFT_SSL_KEYSTORE_KEYPASSWORD, password);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      sslCtxFactory.setKeyStorePath(keystore);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      sslCtxFactory.setKeyStorePassword(password);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      sslCtxFactory.setKeyManagerPassword(keyPassword);<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span>      String[] excludeCiphers = conf.getStrings(<a name="line.464"></a>
-<span class="sourceLineNo">465</span>          THRIFT_SSL_EXCLUDE_CIPHER_SUITES, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      if (excludeCiphers.length != 0) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>        sslCtxFactory.setExcludeCipherSuites(excludeCiphers);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      }<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      String[] includeCiphers = conf.getStrings(<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          THRIFT_SSL_INCLUDE_CIPHER_SUITES, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      if (includeCiphers.length != 0) {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>        sslCtxFactory.setIncludeCipherSuites(includeCiphers);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>      // Disable SSLv3 by default due to "Poodle" Vulnerability - CVE-2014-3566<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      String[] excludeProtocols = conf.getStrings(<a name="line.476"></a>
-<span class="sourceLineNo">477</span>          THRIFT_SSL_EXCLUDE_PROTOCOLS, "SSLv3");<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      if (excludeProtocols.length != 0) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        sslCtxFactory.setExcludeProtocols(excludeProtocols);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      }<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      String[] includeProtocols = conf.getStrings(<a name="line.481"></a>
-<span class="sourceLineNo">482</span>          THRIFT_SSL_INCLUDE_PROTOCOLS, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      if (includeProtocols.length != 0) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>        sslCtxFactory.setIncludeProtocols(includeProtocols);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      }<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>      serverConnector = new ServerConnector(httpServer,<a name="line.487"></a>
-<span class="sourceLineNo">488</span>          new SslConnectionFactory(sslCtxFactory, HttpVersion.HTTP_1_1.toString()),<a name="line.488"></a>
-<span class="sourceLineNo">489</span>          new HttpConnectionFactory(httpsConfig));<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    } else {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      serverConnector = new ServerConnector(httpServer, new HttpConnectionFactory(httpConfig));<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    serverConnector.setPort(listenPort);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    String host = getBindAddress(conf).getHostAddress();<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    serverConnector.setHost(host);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    httpServer.addConnector(serverConnector);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    httpServer.setStopAtShutdown(true);<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    if (doAsEnabled) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      ProxyUsers.refreshSuperUserGroupsConfiguration(conf);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    }<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>    LOG.info("Starting Thrift HTTP Server on " + Integer.toString(listenPort));<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  }<a name="line.504"></a>
+<span class="sourceLineNo">399</span>  }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>  public void shutdown() {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    if (pauseMonitor != null) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      pauseMonitor.stop();<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    }<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    if (tserver != null) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      tserver.stop();<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      tserver = null;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    if (httpServer != null) {<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      try {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        httpServer.stop();<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        httpServer = null;<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      } catch (Exception e) {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        LOG.error("Problem encountered in shutting down HTTP server " + e.getCause());<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      }<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      httpServer = null;<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>  }<a name="line.418"></a>
+<span class="sourceLineNo">419</span><a name="line.419"></a>
+<span class="sourceLineNo">420</span>  private void setupHTTPServer() throws IOException {<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    TProcessor processor = new Hbase.Processor&lt;&gt;(handler);<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    TServlet thriftHttpServlet = new ThriftHttpServlet(processor, protocolFactory, realUser,<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        conf, hbaseHandler, securityEnabled, doAsEnabled);<a name="line.424"></a>
+<span class="sourceLineNo">425</span><a name="line.425"></a>
+<span class="sourceLineNo">426</span>    // Set the default max thread number to 100 to limit<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    // the number of concurrent requests so that Thrfit HTTP server doesn't OOM easily.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    // Jetty set the default max thread number to 250, if we don't set it.<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    //<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    // Our default min thread number 2 is the same as that used by Jetty.<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    int minThreads = conf.getInt(HTTP_MIN_THREADS, 2);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    int maxThreads = conf.getInt(HTTP_MAX_THREADS, 100);<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    QueuedThreadPool threadPool = new QueuedThreadPool(maxThreads);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    threadPool.setMinThreads(minThreads);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    httpServer = new Server(threadPool);<a name="line.435"></a>
+<span class="sourceLineNo">436</span><a name="line.436"></a>
+<span class="sourceLineNo">437</span>    // Context handler<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    ServletContextHandler ctxHandler = new ServletContextHandler(httpServer, "/",<a name="line.438"></a>
+<span class="sourceLineNo">439</span>            ServletContextHandler.SESSIONS);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    ctxHandler.addServlet(new ServletHolder(thriftHttpServlet), "/*");<a name="line.440"></a>
+<span class="sourceLineNo">441</span><a name="line.441"></a>
+<span class="sourceLineNo">442</span>    // set up Jetty and run the embedded server<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    HttpConfiguration httpConfig = new HttpConfiguration();<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    httpConfig.setSecureScheme("https");<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    httpConfig.setSecurePort(listenPort);<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    httpConfig.setHeaderCacheSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    httpConfig.setRequestHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    httpConfig.setResponseHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    httpConfig.setSendServerVersion(false);<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    httpConfig.setSendDateHeader(false);<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    ServerConnector serverConnector;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    if(conf.getBoolean(THRIFT_SSL_ENABLED, false)) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      HttpConfiguration httpsConfig = new HttpConfiguration(httpConfig);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      httpsConfig.addCustomizer(new SecureRequestCustomizer());<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>      SslContextFactory sslCtxFactory = new SslContextFactory();<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      String keystore = conf.get(THRIFT_SSL_KEYSTORE_STORE);<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      String password = HBaseConfiguration.getPassword(conf,<a name="line.459"></a>
+<span class="sourceLineNo">460</span>          THRIFT_SSL_KEYSTORE_PASSWORD, null);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      String keyPassword = HBaseConfiguration.getPassword(conf,<a name="line.461"></a>
+<span class="sourceLineNo">462</span>          THRIFT_SSL_KEYSTORE_KEYPASSWORD, password);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      sslCtxFactory.setKeyStorePath(keystore);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      sslCtxFactory.setKeyStorePassword(password);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      sslCtxFactory.setKeyManagerPassword(keyPassword);<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>      String[] excludeCiphers = conf.getStrings(<a name="line.467"></a>
+<span class="sourceLineNo">468</span>          THRIFT_SSL_EXCLUDE_CIPHER_SUITES, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      if (excludeCiphers.length != 0) {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>        sslCtxFactory.setExcludeCipherSuites(excludeCiphers);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      }<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      String[] includeCiphers = conf.getStrings(<a name="line.472"></a>
+<span class="sourceLineNo">473</span>          THRIFT_SSL_INCLUDE_CIPHER_SUITES, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      if (includeCiphers.length != 0) {<a name="line.474"></a>
+<span class="sourceLineNo">475</span>        sslCtxFactory.setIncludeCipherSuites(includeCiphers);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      }<a name="line.476"></a>
+<span class="sourceLineNo">477</span><a name="line.477"></a>
+<span class="sourceLineNo">478</span>      // Disable SSLv3 by default due to "Poodle" Vulnerability - CVE-2014-3566<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      String[] excludeProtocols = conf.getStrings(<a name="line.479"></a>
+<span class="sourceLineNo">480</span>          THRIFT_SSL_EXCLUDE_PROTOCOLS, "SSLv3");<a name="line.480"></a>
+<span class="sourceLineNo">481</span>      if (excludeProtocols.length != 0) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>        sslCtxFactory.setExcludeProtocols(excludeProtocols);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      }<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      String[] includeProtocols = conf.getStrings(<a name="line.484"></a>
+<span class="sourceLineNo">485</span>          THRIFT_SSL_INCLUDE_PROTOCOLS, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      if (includeProtocols.length != 0) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>        sslCtxFactory.setIncludeProtocols(includeProtocols);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      }<a name="line.488"></a>
+<span class="sourceLineNo">489</span><a name="line.489"></a>
+<span class="sourceLineNo">490</span>      serverConnector = new ServerConnector(httpServer,<a name="line.490"></a>
+<span class="sourceLineNo">491</span>          new SslConnectionFactory(sslCtxFactory, HttpVersion.HTTP_1_1.toString()),<a name="line.491"></a>
+<span class="sourceLineNo">492</span>          new HttpConnectionFactory(httpsConfig));<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    } else {<a name="line.493"></a>
+<span class="sourceLineNo">494</span>      serverConnector = new ServerConnector(httpServer, new HttpConnectionFactory(httpConfig));<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    }<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    serverConnector.setPort(listenPort);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    String host = getBindAddress(conf).getHostAddress();<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    serverConnector.setHost(host);<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    httpServer.addConnector(serverConnector);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    httpServer.setStopAtShutdown(true);<a name="line.500"></a>
+<span class="sourceLineNo">501</span><a name="line.501"></a>
+<span class="sourceLineNo">502</span>    if (doAsEnabled) {<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      ProxyUsers.refreshSuperUserGroupsConfiguration(conf);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    }<a name="line.504"></a>
 <span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>  /**<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * Setting up the thrift TServer<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   */<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  private void setupServer() throws Exception {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    // Construct correct ProtocolFactory<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    TProtocolFactory protocolFactory;<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    if (conf.getBoolean(COMPACT_CONF_KEY, false)) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      LOG.debug("Using compact protocol");<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      protocolFactory = new TCompactProtocol.Factory();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    } else {<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      LOG.debug("Using binary protocol");<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      protocolFactory = new TBinaryProtocol.Factory();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    }<a name="line.518"></a>
+<span class="sourceLineNo">506</span>    LOG.info("Starting Thrift HTTP Server on " + Integer.toString(listenPort));<a name="line.506"></a>
+<span class="sourceLineNo">507</span>  }<a name="line.507"></a>
+<span class="sourceLineNo">508</span><a name="line.508"></a>
+<span class="sourceLineNo">509</span>  /**<a name="line.509"></a>
+<span class="sourceLineNo">510</span>   * Setting up the thrift TServer<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
+<span class="sourceLineNo">512</span>  private void setupServer() throws Exception {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    // Construct correct ProtocolFactory<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    TProtocolFactory protocolFactory = getProtocolFactory();<a name="line.514"></a>
+<span class="sourceLineNo">515</span><a name="line.515"></a>
+<span class="sourceLineNo">516</span>    final TProcessor p = new Hbase.Processor&lt;&gt;(handler);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    ImplType implType = ImplType.getServerImpl(conf);<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    TProcessor processor = p;<a name="line.518"></a>
 <span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>    final TProcessor p = new Hbase.Processor&lt;&gt;(handler);<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    ImplType implType = ImplType.getServerImpl(conf);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    TProcessor processor = p;<a name="line.522"></a>
-<span class="sourceLineNo">523</span><a name="line.523"></a>
-<span class="sourceLineNo">524</span>    // Construct correct TransportFactory<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    TTransportFactory transportFactory;<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    if (conf.getBoolean(FRAMED_CONF_KEY, false) || implType.isAlwaysFramed) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      if (qop != null) {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>        throw new RuntimeException("Thrift server authentication"<a name="line.528"></a>
-<span class="sourceLineNo">529</span>          + " doesn't work with framed transport yet");<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      }<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      transportFactory = new TFramedTransport.Factory(<a name="line.531"></a>
-<span class="sourceLineNo">532</span>          conf.getInt(MAX_FRAME_SIZE_CONF_KEY, 2)  * 1024 * 1024);<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      LOG.debug("Using framed transport");<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    } else if (qop == null) {<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      transportFactory = new TTransportFactory();<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    } else {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      // Extract the name from the principal<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      String name = SecurityUtil.getUserFromPrincipal(<a name="line.538"></a>
-<span class="sourceLineNo">539</span>        conf.get("hbase.thrift.kerberos.principal"));<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      Map&lt;String, String&gt; saslProperties = SaslUtil.initSaslProperties(qop.name());<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      TSaslServerTransport.Factory saslFactory = new TSaslServerTransport.Factory();<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      saslFactory.addServerDefinition("GSSAPI", name, host, saslProperties,<a name="line.542"></a>
-<span class="sourceLineNo">543</span>        new SaslGssCallbackHandler() {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>          @Override<a name="line.544"></a>
-<span class="sourceLineNo">545</span>          public void handle(Callback[] callbacks)<a name="line.545"></a>
-<span class="sourceLineNo">546</span>              throws UnsupportedCallbackException {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>            AuthorizeCallback ac = null;<a name="line.547"></a>
-<span class="sourceLineNo">548</span>            for (Callback callback : callbacks) {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>              if (callback instanceof AuthorizeCallback) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>                ac = (AuthorizeCallback) callback;<a name="line.550"></a>
-<span class="sourceLineNo">551</span>              } else {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>                throw new UnsupportedCallbackException(callback,<a name="line.552"></a>
-<span class="sourceLineNo">553</span>                    "Unrecognized SASL GSSAPI Callback");<a name="line.553"></a>
-<span class="sourceLineNo">554</span>              }<a name="line.554"></a>
-<span class="sourceLineNo">555</span>            }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>            if (ac != null) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>              String authid = ac.getAuthenticationID();<a name="line.557"></a>
-<span class="sourceLineNo">558</span>              String authzid = ac.getAuthorizationID();<a name="line.558"></a>
-<span class="sourceLineNo">559</span>              if (!authid.equals(authzid)) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>                ac.setAuthorized(false);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>              } else {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>                ac.setAuthorized(true);<a name="line.562"></a>
-<span class="sourceLineNo">563</span>                String userName = SecurityUtil.getUserFromPrincipal(authzid);<a name="line.563"></a>
-<span class="sourceLineNo">564</span>                LOG.info("Effective user: " + userName);<a name="line.564"></a>
-<span class="sourceLineNo">565</span>                ac.setAuthorizedID(userName);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>              }<a name="line.566"></a>
-<span class="sourceLineNo">567</span>            }<a name="line.567"></a>
-<span class="sourceLineNo">568</span>          }<a name="line.568"></a>
-<span class="sourceLineNo">569</span>        });<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      transportFactory = saslFactory;<a name="line.570"></a>
-<span class="sourceLineNo">571</span><a name="line.571"></a>
-<span class="sourceLineNo">572</span>      // Create a processor wrapper, to get the caller<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      processor = new TProcessor() {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>        @Override<a name="line.574"></a>
-<span class="sourceLineNo">575</span>        public boolean process(TProtocol inProt,<a name="line.575"></a>
-<span class="sourceLineNo">576</span>            TProtocol outProt) throws TException {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>          TSaslServerTransport saslServerTransport =<a name="line.577"></a>
-<span class="sourceLineNo">578</span>            (TSaslServerTransport)inProt.getTransport();<a name="line.578"></a>
-<span class="sourceLineNo">579</span>          SaslServer saslServer = saslServerTransport.getSaslServer();<a name="line.579"></a>
-<span class="sourceLineNo">580</span>          String principal = saslServer.getAuthorizationID();<a name="line.580"></a>
-<span class="sourceLineNo">581</span>          hbaseHandler.setEffectiveUser(principal);<a name="line.581"></a>
-<span class="sourceLineNo">582</span>          return p.process(inProt, outProt);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>        }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>      };<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    }<a name="line.585"></a>
-<span class="sourceLineNo">586</span><a name="line.586"></a>
-<span class="sourceLineNo">587</span>    if (conf.get(BIND_CONF_KEY) != null &amp;&amp; !implType.canSpecifyBindIP) {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      LOG.error("Server types " + Joiner.on(", ").join(<a name="line.588"></a>
-<span class="sourceLineNo">589</span>          ImplType.serversThatCannotSpecifyBindIP()) + " don't support IP " +<a name="line.589"></a>
-<span class="sourceLineNo">590</span>          "address binding at the moment. See " +<a name="line.590"></a>
-<span class="sourceLineNo">591</span>          "https://issues.apache.org/jira/browse/HBASE-2155 for details.");<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      throw new RuntimeException(<a name="line.592"></a>
-<span class="sourceLineNo">593</span>          "-" + BIND_CONF_KEY + " not supported with " + implType);<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    }<a name="line.594"></a>
-<span class="sourceLineNo">595</span><a name="line.595"></a>
-<span class="sourceLineNo">596</span>    // Thrift's implementation uses '0' as a placeholder for 'use the default.'<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    int backlog = conf.getInt(BACKLOG_CONF_KEY, 0);<a name="line.597"></a>
-<span class="sourceLineNo">598</span><a name="line.598"></a>
-<span class="sourceLineNo">599</span>    if (implType == ImplType.HS_HA || implType == ImplType.NONBLOCKING ||<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        implType == ImplType.THREADED_SELECTOR) {<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      InetAddress listenAddress = getBindAddress(conf);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      TNonblockingServerTransport serverTransport = new TNonblockingServerSocket(<a name="line.602"></a>
-<span class="sourceLineNo">603</span>          new InetSocketAddress(listenAddress, listenPort));<a name="line.603"></a>
-<span class="sourceLineNo">604</span><a name="line.604"></a>
-<span class="sourceLineNo">605</span>      if (implType == ImplType.NONBLOCKING) {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>        TNonblockingServer.Args serverArgs =<a name="line.606"></a>
-<span class="sourceLineNo">607</span>            new TNonblockingServer.Args(serverTransport);<a name="line.607"></a>
-<span class="sourceLineNo">608</span>        serverArgs.processor(processor)<a name="line.608"></a>
-<span class="sourceLineNo">609</span>                  .transportFactory(transportFactory)<a name="line.609"></a>
-<span class="sourceLineNo">610</span>                  .protocolFactory(protocolFactory);<a name="line.610"></a>
-<span class="sourceLineNo">611</span>        tserver = new TNonblockingServer(serverArgs);<a name="line.611"></a>
-<span class="sourceLineNo">612</span>      } else if (implType == ImplType.HS_HA) {<a name="line.612"></a>
-<span class="sourceLineNo">613</span>        THsHaServer.Args serverArgs = new THsHaServer.Args(serverTransport);<a name="line.613"></a>
-<span class="sourceLineNo">614</span>        CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        ExecutorService executorService = createExecutor(<a name="line.615"></a>
-<span class="sourceLineNo">616</span>            callQueue, serverArgs.getMaxWorkerThreads(), serverArgs.getMaxWorkerThreads());<a name="line.616"></a>
-<span class="sourceLineNo">617</span>        serverArgs.executorService(executorService)<a name="line.617"></a>
-<span class="sourceLineNo">618</span>                  .processor(processor)<a name="line.618"></a>
-<span class="sourceLineNo">619</span>                  .transportFactory(transportFactory)<a name="line.619"></a>
-<span class="sourceLineNo">620</span>                  .protocolFactory(protocolFactory);<a name="line.620"></a>
-<span class="sourceLineNo">621</span>        tserver = new THsHaServer(serverArgs);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      } else { // THREADED_SELECTOR<a name="line.622"></a>
-<span class="sourceLineNo">623</span>        TThreadedSelectorServer.Args serverArgs =<a name="line.623"></a>
-<span class="sourceLineNo">624</span>            new HThreadedSelectorServerArgs(serverTransport, conf);<a name="line.624"></a>
-<span class="sourceLineNo">625</span>        CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>        ExecutorService executorService = createExecutor(<a name="line.626"></a>
-<span class="sourceLineNo">627</span>            callQueue, serverArgs.getWorkerThreads(), serverArgs.getWorkerThreads());<a name="line.627"></a>
-<span class="sourceLineNo">628</span>        serverArgs.executorService(executorService)<a name="line.628"></a>
-<span class="sourceLineNo">629</span>                  .processor(processor)<a name="line.629"></a>
-<span class="sourceLineNo">630</span>                  .transportFactory(transportFactory)<a name="line.630"></a>
-<span class="sourceLineNo">631</span>                  .protocolFactory(protocolFactory);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>        tserver = new TThreadedSelectorServer(serverArgs);<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      }<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      LOG.info("starting HBase " + implType.simpleClassName() +<a name="line.634"></a>
-<span class="sourceLineNo">635</span>          " server on " + Integer.toString(listenPort));<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    } else if (implType == ImplType.THREAD_POOL) {<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      // Thread pool server. Get the IP address to bind to.<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      InetAddress listenAddress = getBindAddress(conf);<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      int readTimeout = conf.getInt(THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY,<a name="line.639"></a>
-<span class="sourceLineNo">640</span>          THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT);<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      TServerTransport serverTransport = new TServerSocket(<a name="line.641"></a>
-<span class="sourceLineNo">642</span>          new TServerSocket.ServerSocketTransportArgs().<a name="line.642"></a>
-<span class="sourceLineNo">643</span>              bindAddr(new InetSocketAddress(listenAddress, listenPort)).<a name="line.643"></a>
-<span class="sourceLineNo">644</span>              backlog(backlog).<a name="line.644"></a>
-<span class="sourceLineNo">645</span>              clientTimeout(readTimeout));<a name="line.645"></a>
-<span class="sourceLineNo">646</span><a name="line.646"></a>
-<span class="sourceLineNo">647</span>      TBoundedThreadPoolServer.Args serverArgs =<a name="line.647"></a>
-<span class="sourceLineNo">648</span>          new TBoundedThreadPoolServer.Args(serverTransport, conf);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      serverArgs.processor(processor)<a name="line.649"></a>
-<span class="sourceLineNo">650</span>                .transportFactory(transportFactory)<a name="line.650"></a>
-<span class="sourceLineNo">651</span>                .protocolFactory(protocolFactory);<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      LOG.info("starting " + ImplType.THREAD_POOL.simpleClassName() + " on "<a name="line.652"></a>
-<span class="sourceLineNo">653</span>          + listenAddress + ":" + Integer.toString(listenPort)<a name="line.653"></a>
-<span class="sourceLineNo">654</span>          + " with readTimeout " + readTimeout + "ms; " + serverArgs);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      TBoundedThreadPoolServer tserver =<a name="line.655"></a>
-<span class="sourceLineNo">656</span>          new TBoundedThreadPoolServer(serverArgs, metrics);<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      this.tserver = tserver;<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    } else {<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      throw new AssertionError("Unsupported Thrift server implementation: " +<a name="line.659"></a>
-<span class="sourceLineNo">660</span>          implType.simpleClassName());<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    }<a name="line.661"></a>
+<span class="sourceLineNo">520</span>    // Construct correct TransportFactory<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    TTransportFactory transportFactory;<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    if (conf.getBoolean(FRAMED_CONF_KEY, false) || implType.isAlwaysFramed) {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>      if (qop != null) {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>        throw new RuntimeException("Thrift server authentication"<a name="line.524"></a>
+<span class="sourceLineNo">525</span>          + " doesn't work with framed transport yet");<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      }<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      transportFactory = new TFramedTransport.Factory(<a name="line.527"></a>
+<span class="sourceLineNo">528</span>          conf.getInt(MAX_FRAME_SIZE_CONF_KEY, 2)  * 1024 * 1024);<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      LOG.debug("Using framed transport");<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    } else if (qop == null) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>      transportFactory = new TTransportFactory();<a name="line.531"></a>
+<span class="sourceLineNo">532</span>    } else {<a name="line.532"></a>
+<span class="sourceLineNo">533</span>      // Extract the name from the principal<a name="line.533"></a>
+<span class="sourceLineNo">534</span>      String name = SecurityUtil.getUserFromPrincipal(<a name="line.534"></a>
+<span class="sourceLineNo">535</span>        conf.get("hbase.thrift.kerberos.principal"));<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      Map&lt;String, String&gt; saslProperties = SaslUtil.initSaslProperties(qop.name());<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      TSaslServerTransport.Factory saslFactory = new TSaslServerTransport.Factory();<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      saslFactory.addServerDefinition("GSSAPI", name, host, saslProperties,<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        new SaslGssCallbackHandler() {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>          @Override<

<TRUNCATED>

[33/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/replication/ReplicationFactory.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationFactory.html b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationFactory.html
index 47626bd..f98481d 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationFactory.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationFactory.html
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationFactory.html#line.32">ReplicationFactory</a>
+public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationFactory.html#line.32">ReplicationFactory</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">A factory class for instantiating replication objects that deal with replication state.</div>
 </li>
@@ -128,10 +128,12 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
 <caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
-<th class="colOne" scope="col">Constructor and Description</th>
+<th class="colFirst" scope="col">Modifier</th>
+<th class="colLast" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationFactory.html#ReplicationFactory--">ReplicationFactory</a></span>()</code>&nbsp;</td>
+<td class="colFirst"><code>private </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationFactory.html#ReplicationFactory--">ReplicationFactory</a></span>()</code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -205,7 +207,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ReplicationFactory</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationFactory.html#line.32">ReplicationFactory</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationFactory.html#line.33">ReplicationFactory</a>()</pre>
 </li>
 </ul>
 </li>
@@ -222,7 +224,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicationQueues</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueues.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueues</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationFactory.html#line.34">getReplicationQueues</a>(<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueuesArguments.html" title="class in org.apache.hadoop.hbase.replication">ReplicationQueuesArguments</a>&nbsp;args)
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueues.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueues</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationFactory.html#line.36">getReplicationQueues</a>(<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueuesArguments.html" title="class in org.apache.hadoop.hbase.replication">ReplicationQueuesArguments</a>&nbsp;args)
                                               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -236,7 +238,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicationQueuesClient</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueuesClient.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueuesClient</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationFactory.html#line.41">getReplicationQueuesClient</a>(<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueuesClientArguments.html" title="class in org.apache.hadoop.hbase.replication">ReplicationQueuesClientArguments</a>&nbsp;args)
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueuesClient.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueuesClient</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationFactory.html#line.43">getReplicationQueuesClient</a>(<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueuesClientArguments.html" title="class in org.apache.hadoop.hbase.replication">ReplicationQueuesClientArguments</a>&nbsp;args)
                                                           throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -250,7 +252,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicationPeers</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeers</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationFactory.html#line.46">getReplicationPeers</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zk,
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeers</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationFactory.html#line.48">getReplicationPeers</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zk,
                                                    org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                    <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable)</pre>
 </li>
@@ -261,7 +263,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicationPeers</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeers</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationFactory.html#line.51">getReplicationPeers</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zk,
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeers</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationFactory.html#line.53">getReplicationPeers</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zk,
                                                    org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                    <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueuesClient.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueuesClient</a>&nbsp;queuesClient,
                                                    <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable)</pre>
@@ -273,7 +275,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getReplicationTracker</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationTracker.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationTracker</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationFactory.html#line.56">getReplicationTracker</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zookeeper,
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationTracker.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationTracker</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationFactory.html#line.58">getReplicationTracker</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zookeeper,
                                                        <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeers</a>&nbsp;replicationPeers,
                                                        org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                        <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerConfigTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerConfigTracker.html b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerConfigTracker.html
index 04de95a..6a3af08 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerConfigTracker.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerConfigTracker.html
@@ -123,7 +123,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.285">ReplicationPeerZKImpl.PeerConfigTracker</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.280">ReplicationPeerZKImpl.PeerConfigTracker</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKNodeTracker</a></pre>
 <div class="block">Tracker for PeerConfigNode of this peer</div>
 </li>
@@ -254,7 +254,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>listener</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfigListener.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeerConfigListener</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerConfigTracker.html#line.287">listener</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfigListener.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeerConfigListener</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerConfigTracker.html#line.282">listener</a></pre>
 </li>
 </ul>
 </li>
@@ -271,7 +271,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>PeerConfigTracker</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerConfigTracker.html#line.289">PeerConfigTracker</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerConfigNode,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerConfigTracker.html#line.284">PeerConfigTracker</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerConfigNode,
                          <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
                          <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable)</pre>
 </li>
@@ -290,7 +290,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockList">
 <li class="blockList">
 <h4>setListener</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerConfigTracker.html#line.294">setListener</a>(<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfigListener.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeerConfigListener</a>&nbsp;listener)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerConfigTracker.html#line.289">setListener</a>(<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfigListener.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeerConfigListener</a>&nbsp;listener)</pre>
 </li>
 </ul>
 <a name="nodeCreated-java.lang.String-">
@@ -299,7 +299,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockList">
 <li class="blockList">
 <h4>nodeCreated</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerConfigTracker.html#line.299">nodeCreated</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerConfigTracker.html#line.294">nodeCreated</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#nodeCreated-java.lang.String-">ZKListener</a></code></span></div>
 <div class="block">Called when a new node has been created.</div>
 <dl>
@@ -316,7 +316,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>nodeDataChanged</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerConfigTracker.html#line.310">nodeDataChanged</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerConfigTracker.html#line.305">nodeDataChanged</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#nodeDataChanged-java.lang.String-">ZKListener</a></code></span></div>
 <div class="block">Called when an existing node has changed data.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerStateTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerStateTracker.html b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerStateTracker.html
index c25115a..2ebc0b2 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerStateTracker.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerStateTracker.html
@@ -123,7 +123,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.262">ReplicationPeerZKImpl.PeerStateTracker</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.257">ReplicationPeerZKImpl.PeerStateTracker</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKNodeTracker</a></pre>
 <div class="block">Tracker for state of this peer</div>
 </li>
@@ -233,7 +233,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>PeerStateTracker</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerStateTracker.html#line.264">PeerStateTracker</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerStateZNode,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerStateTracker.html#line.259">PeerStateTracker</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerStateZNode,
                         <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
                         <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable)</pre>
 </li>
@@ -252,7 +252,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>nodeDataChanged</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerStateTracker.html#line.270">nodeDataChanged</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerStateTracker.html#line.265">nodeDataChanged</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#nodeDataChanged-java.lang.String-">ZKListener</a></code></span></div>
 <div class="block">Called when an existing node has changed data.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html
index 490fd88..d56bcf1 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html
@@ -505,7 +505,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>peerStateNode</code> - path to zk node which stores peer state</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
+<dd><code>org.apache.zookeeper.KeeperException</code> - if creating the znode fails</dd>
 </dl>
 </li>
 </ul>
@@ -515,7 +515,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>readPeerStateZnode</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.94">readPeerStateZnode</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.93">readPeerStateZnode</a>()
                          throws <a href="../../../../../org/apache/hadoop/hbase/exceptions/DeserializationException.html" title="class in org.apache.hadoop.hbase.exceptions">DeserializationException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -529,7 +529,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>startPeerConfigTracker</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.106">startPeerConfigTracker</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerConfigNode)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.104">startPeerConfigTracker</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerConfigNode)
                             throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">start a table-cfs tracker to listen the (table, cf-list) map change</div>
 <dl>
@@ -546,7 +546,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>readPeerConfig</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.114">readPeerConfig</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.111">readPeerConfig</a>()</pre>
 </li>
 </ul>
 <a name="getPeerState--">
@@ -555,7 +555,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getPeerState</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.PeerState.html" title="enum in org.apache.hadoop.hbase.replication">ReplicationPeer.PeerState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.127">getPeerState</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.PeerState.html" title="enum in org.apache.hadoop.hbase.replication">ReplicationPeer.PeerState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.124">getPeerState</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.html#getPeerState--">ReplicationPeer</a></code></span></div>
 <div class="block">Returns the state of the peer</div>
 <dl>
@@ -572,7 +572,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getId</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.136">getId</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.133">getId</a>()</pre>
 <div class="block">Get the identifier of this peer</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -588,7 +588,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getPeerConfig</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.145">getPeerConfig</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.142">getPeerConfig</a>()</pre>
 <div class="block">Get the peer config object</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -604,7 +604,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getConfiguration</h4>
-<pre>public&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.154">getConfiguration</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.151">getConfiguration</a>()</pre>
 <div class="block">Get the configuration object required to communicate with this peer</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -620,7 +620,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableCFs</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.163">getTableCFs</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.160">getTableCFs</a>()</pre>
 <div class="block">Get replicable (table, cf-list) map of this peer</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -636,7 +636,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getNamespaces</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.173">getNamespaces</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.170">getNamespaces</a>()</pre>
 <div class="block">Get replicable namespace set of this peer</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -652,7 +652,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getPeerBandwidth</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.178">getPeerBandwidth</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.175">getPeerBandwidth</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.html#getPeerBandwidth--">ReplicationPeer</a></code></span></div>
 <div class="block">Get the per node bandwidth upper limit for this peer</div>
 <dl>
@@ -669,7 +669,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>trackPeerConfigChanges</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.183">trackPeerConfigChanges</a>(<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfigListener.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeerConfigListener</a>&nbsp;listener)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.180">trackPeerConfigChanges</a>(<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfigListener.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeerConfigListener</a>&nbsp;listener)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.html#trackPeerConfigChanges-org.apache.hadoop.hbase.replication.ReplicationPeerConfigListener-">trackPeerConfigChanges</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeer</a></code></dd>
@@ -682,7 +682,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>abort</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.190">abort</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;why,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.187">abort</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;why,
                   <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;e)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/Abortable.html#abort-java.lang.String-java.lang.Throwable-">Abortable</a></code></span></div>
 <div class="block">Abort the server or client.</div>
@@ -701,7 +701,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>isAborted</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.196">isAborted</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.193">isAborted</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/Abortable.html#isAborted--">Abortable</a></code></span></div>
 <div class="block">Check if the server or client was aborted.</div>
 <dl>
@@ -718,7 +718,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.203">close</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.200">close</a>()
            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -736,7 +736,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>isStateEnabled</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.213">isStateEnabled</a>(byte[]&nbsp;bytes)
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.210">isStateEnabled</a>(byte[]&nbsp;bytes)
                               throws <a href="../../../../../org/apache/hadoop/hbase/exceptions/DeserializationException.html" title="class in org.apache.hadoop.hbase.exceptions">DeserializationException</a></pre>
 <div class="block">Parse the raw data from ZK to get a peer's state</div>
 <dl>
@@ -745,7 +745,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if the passed in <code>bytes</code> are those of a pb serialized ENABLED state.</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="../../../../../org/apache/hadoop/hbase/exceptions/DeserializationException.html" title="class in org.apache.hadoop.hbase.exceptions">DeserializationException</a></code></dd>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/exceptions/DeserializationException.html" title="class in org.apache.hadoop.hbase.exceptions">DeserializationException</a></code> - if parsing the state fails</dd>
 </dl>
 </li>
 </ul>
@@ -755,7 +755,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>parseStateFrom</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ReplicationState.State&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.223">parseStateFrom</a>(byte[]&nbsp;bytes)
+<pre>private static&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ReplicationState.State&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.220">parseStateFrom</a>(byte[]&nbsp;bytes)
                                                                                                                   throws <a href="../../../../../org/apache/hadoop/hbase/exceptions/DeserializationException.html" title="class in org.apache.hadoop.hbase.exceptions">DeserializationException</a></pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -763,7 +763,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>State parsed from the passed bytes.</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="../../../../../org/apache/hadoop/hbase/exceptions/DeserializationException.html" title="class in org.apache.hadoop.hbase.exceptions">DeserializationException</a></code></dd>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/exceptions/DeserializationException.html" title="class in org.apache.hadoop.hbase.exceptions">DeserializationException</a></code> - if a ProtoBuf operation fails</dd>
 </dl>
 </li>
 </ul>
@@ -773,9 +773,8 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ensurePeerEnabled</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.246">ensurePeerEnabled</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)
-                           throws org.apache.zookeeper.KeeperException.NodeExistsException,
-                                  org.apache.zookeeper.KeeperException</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html#line.242">ensurePeerEnabled</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)
+                           throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Utility method to ensure an ENABLED znode is in place; if not present, we create it.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -783,8 +782,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if we created the znode.</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.zookeeper.KeeperException.NodeExistsException</code></dd>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
+<dd><code>org.apache.zookeeper.KeeperException</code> - if creating the znode fails</dd>
 </dl>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeers.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeers.html b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeers.html
index 11aa8ff..b45b299 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeers.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeers.html
@@ -359,7 +359,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>whether a ReplicationPeer was successfully created</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></code></dd>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></code> - if connecting to the peer fails</dd>
 </dl>
 </li>
 </ul>
@@ -603,7 +603,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <dd><code>id</code> - a short that identifies the cluster</dd>
 <dd><code>peerConfig</code> - new config for the peer cluster</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></code></dd>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></code> - if updating the peer configuration fails</dd>
 </dl>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html
index 1b4db61..4749c9c 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html
@@ -119,7 +119,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.78">ReplicationPeersZKImpl</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.79">ReplicationPeersZKImpl</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationStateZKBase.html" title="class in org.apache.hadoop.hbase.replication">ReplicationStateZKBase</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeers</a></pre>
 <div class="block">This class provides an implementation of the ReplicationPeers interface using ZooKeeper. The
@@ -408,7 +408,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>peerClusters</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerZKImpl</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.81">peerClusters</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerZKImpl</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.82">peerClusters</a></pre>
 </li>
 </ul>
 <a name="queuesClient">
@@ -417,7 +417,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>queuesClient</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueuesClient.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueuesClient</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.82">queuesClient</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueuesClient.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueuesClient</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.83">queuesClient</a></pre>
 </li>
 </ul>
 <a name="abortable">
@@ -426,7 +426,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>abortable</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.83">abortable</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.84">abortable</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -435,7 +435,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockListLast">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.85">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.86">LOG</a></pre>
 </li>
 </ul>
 </li>
@@ -452,7 +452,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ReplicationPeersZKImpl</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.87">ReplicationPeersZKImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zk,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.88">ReplicationPeersZKImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zk,
                               org.apache.hadoop.conf.Configuration&nbsp;conf,
                               <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueuesClient.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueuesClient</a>&nbsp;queuesClient,
                               <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable)</pre>
@@ -472,7 +472,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>init</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.96">init</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.97">init</a>()
           throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html#init--">ReplicationPeers</a></code></span></div>
 <div class="block">Initialize the ReplicationPeers interface.</div>
@@ -490,7 +490,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>registerPeer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.108">registerPeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.109">registerPeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id,
                          <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig,
                          boolean&nbsp;enabled)
                   throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
@@ -514,7 +514,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>unregisterPeer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.149">unregisterPeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.150">unregisterPeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)
                     throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html#unregisterPeer-java.lang.String-">ReplicationPeers</a></code></span></div>
 <div class="block">Removes a remote slave cluster and stops the replication to it.</div>
@@ -534,7 +534,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>enablePeer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.162">enablePeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.163">enablePeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)
                 throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html#enablePeer-java.lang.String-">ReplicationPeers</a></code></span></div>
 <div class="block">Restart the replication to the specified remote slave cluster.</div>
@@ -554,7 +554,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>disablePeer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.168">disablePeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.169">disablePeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)
                  throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html#disablePeer-java.lang.String-">ReplicationPeers</a></code></span></div>
 <div class="block">Stop the replication to the specified remote slave cluster.</div>
@@ -574,7 +574,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getPeerTableCFsConfig</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.174">getPeerTableCFsConfig</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.175">getPeerTableCFsConfig</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)
                                                   throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html#getPeerTableCFsConfig-java.lang.String-">ReplicationPeers</a></code></span></div>
 <div class="block">Get the table and column-family list string of the peer from the underlying storage.</div>
@@ -594,7 +594,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>setPeerTableCFsConfig</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.194">setPeerTableCFsConfig</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.195">setPeerTableCFsConfig</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id,
                                   <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,? extends <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&gt;&nbsp;tableCFs)
                            throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html#setPeerTableCFsConfig-java.lang.String-java.util.Map-">ReplicationPeers</a></code></span></div>
@@ -616,7 +616,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getStatusOfPeer</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.217">getStatusOfPeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.218">getStatusOfPeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html#getStatusOfPeer-java.lang.String-">ReplicationPeers</a></code></span></div>
 <div class="block">Get the replication status for the specified connected remote slave cluster.
  The value might be read from cache, so it is recommended to
@@ -638,7 +638,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getStatusOfPeerFromBackingStore</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.226">getStatusOfPeerFromBackingStore</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.227">getStatusOfPeerFromBackingStore</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)
                                         throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html#getStatusOfPeerFromBackingStore-java.lang.String-">ReplicationPeers</a></code></span></div>
 <div class="block">Get the replication status for the specified remote slave cluster, which doesn't
@@ -661,7 +661,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllPeerConfigs</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.248">getAllPeerConfigs</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.249">getAllPeerConfigs</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html#getAllPeerConfigs--">ReplicationPeers</a></code></span></div>
 <div class="block">List the cluster replication configs of all remote slave clusters (whether they are
  enabled/disabled or connected/disconnected).</div>
@@ -679,7 +679,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getConnectedPeer</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.271">getConnectedPeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.272">getConnectedPeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html#getConnectedPeer-java.lang.String-">ReplicationPeers</a></code></span></div>
 <div class="block">Returns the ReplicationPeer for the specified connected peer. This ReplicationPeer will
  continue to track changes to the Peer's state and config. This method returns null if no
@@ -700,7 +700,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getConnectedPeerIds</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.276">getConnectedPeerIds</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.277">getConnectedPeerIds</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html#getConnectedPeerIds--">ReplicationPeers</a></code></span></div>
 <div class="block">Returns the set of peerIds of the clusters that have been connected and have an underlying
  ReplicationPeer.</div>
@@ -718,7 +718,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicationPeerConfig</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.284">getReplicationPeerConfig</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.285">getReplicationPeerConfig</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                                                throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block">Returns a ReplicationPeerConfig from the znode or null for the given peerId.</div>
 <dl>
@@ -739,7 +739,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getPeerConf</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>,org.apache.hadoop.conf.Configuration&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.314">getPeerConf</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>,org.apache.hadoop.conf.Configuration&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.315">getPeerConf</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                                                                              throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html#getPeerConf-java.lang.String-">ReplicationPeers</a></code></span></div>
 <div class="block">Returns the configuration needed to talk to the remote slave cluster.</div>
@@ -761,7 +761,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>updatePeerConfig</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.341">updatePeerConfig</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.342">updatePeerConfig</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id,
                              <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;newConfig)
                       throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html#updatePeerConfig-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">ReplicationPeers</a></code></span></div>
@@ -773,7 +773,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <dd><code>id</code> - a short that identifies the cluster</dd>
 <dd><code>newConfig</code> - new config for the peer cluster</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></code></dd>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></code> - if updating the peer configuration fails</dd>
 </dl>
 </li>
 </ul>
@@ -783,7 +783,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllPeerIds</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.389">getAllPeerIds</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.390">getAllPeerIds</a>()</pre>
 <div class="block">List all registered peer clusters and set a watch on their znodes.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -799,7 +799,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>addExistingPeers</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.403">addExistingPeers</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.404">addExistingPeers</a>()
                        throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block">A private method used during initialization. This method attempts to add all registered
  peer clusters. This method does not set a watch on the peer cluster znodes.</div>
@@ -815,7 +815,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>peerConnected</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.418">peerConnected</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.419">peerConnected</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                       throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html#peerConnected-java.lang.String-">ReplicationPeers</a></code></span></div>
 <div class="block">Method called after a peer has been connected. It will create a ReplicationPeer to track the
@@ -828,7 +828,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>whether a ReplicationPeer was successfully created</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></code></dd>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></code> - if connecting to the peer fails</dd>
 </dl>
 </li>
 </ul>
@@ -838,7 +838,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>peerDisconnected</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.423">peerDisconnected</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.424">peerDisconnected</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html#peerDisconnected-java.lang.String-">ReplicationPeers</a></code></span></div>
 <div class="block">Method called after a peer has been disconnected. It will remove the ReplicationPeer that
  tracked the disconnected cluster.</div>
@@ -856,7 +856,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>createAndAddPeer</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.435">createAndAddPeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.436">createAndAddPeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                          throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block">Attempt to connect to a new remote slave cluster.</div>
 <dl>
@@ -875,14 +875,14 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>changePeerState</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.468">changePeerState</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.469">changePeerState</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id,
                              org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ReplicationState.State&nbsp;state)
                       throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block">Update the state znode of a peer cluster.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>id</code> - </dd>
-<dd><code>state</code> - </dd>
+<dd><code>id</code> - the id of the peer</dd>
+<dd><code>state</code> - the state to update to</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></code></dd>
 </dl>
@@ -894,7 +894,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>createPeer</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerZKImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.496">createPeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerZKImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.497">createPeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                                   throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block">Helper method to connect to a peer</div>
 <dl>
@@ -903,7 +903,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>object representing the peer</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></code></dd>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></code> - if creating the peer fails</dd>
 </dl>
 </li>
 </ul>
@@ -913,7 +913,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockListLast">
 <li class="blockList">
 <h4>checkQueuesDeleted</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.522">checkQueuesDeleted</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.html#line.523">checkQueuesDeleted</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                          throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>


[17/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html
index 7dd656e..fdaaf42 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html
@@ -169,1851 +169,1857 @@
 <span class="sourceLineNo">161</span>  static final String BIND_CONF_KEY = "hbase.regionserver.thrift.ipaddress";<a name="line.161"></a>
 <span class="sourceLineNo">162</span>  static final String COMPACT_CONF_KEY = "hbase.regionserver.thrift.compact";<a name="line.162"></a>
 <span class="sourceLineNo">163</span>  static final String FRAMED_CONF_KEY = "hbase.regionserver.thrift.framed";<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  static final String MAX_FRAME_SIZE_CONF_KEY = "hbase.regionserver.thrift.framed.max_frame_size_in_mb";<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  static final String PORT_CONF_KEY = "hbase.regionserver.thrift.port";<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  static final String COALESCE_INC_KEY = "hbase.regionserver.thrift.coalesceIncrement";<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  static final String USE_HTTP_CONF_KEY = "hbase.regionserver.thrift.http";<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  static final String HTTP_MIN_THREADS = "hbase.thrift.http_threads.min";<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  static final String HTTP_MAX_THREADS = "hbase.thrift.http_threads.max";<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>  static final String THRIFT_SSL_ENABLED = "hbase.thrift.ssl.enabled";<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  static final String THRIFT_SSL_KEYSTORE_STORE = "hbase.thrift.ssl.keystore.store";<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  static final String THRIFT_SSL_KEYSTORE_PASSWORD = "hbase.thrift.ssl.keystore.password";<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  static final String THRIFT_SSL_KEYSTORE_KEYPASSWORD = "hbase.thrift.ssl.keystore.keypassword";<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  static final String THRIFT_SSL_EXCLUDE_CIPHER_SUITES = "hbase.thrift.ssl.exclude.cipher.suites";<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  static final String THRIFT_SSL_INCLUDE_CIPHER_SUITES = "hbase.thrift.ssl.include.cipher.suites";<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  static final String THRIFT_SSL_EXCLUDE_PROTOCOLS = "hbase.thrift.ssl.exclude.protocols";<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  static final String THRIFT_SSL_INCLUDE_PROTOCOLS = "hbase.thrift.ssl.include.protocols";<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>  /**<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   * Amount of time in milliseconds before a server thread will timeout<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   * waiting for client to send data on a connected socket. Currently,<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * applies only to TBoundedThreadPoolServer<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   */<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  public static final String THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY =<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    "hbase.thrift.server.socket.read.timeout";<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public static final int THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT = 60000;<a name="line.187"></a>
-<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">164</span>  static final String MAX_FRAME_SIZE_CONF_KEY =<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          "hbase.regionserver.thrift.framed.max_frame_size_in_mb";<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  static final String PORT_CONF_KEY = "hbase.regionserver.thrift.port";<a name="line.166"></a>
+<span class="sourceLineNo">167</span>  static final String COALESCE_INC_KEY = "hbase.regionserver.thrift.coalesceIncrement";<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  static final String USE_HTTP_CONF_KEY = "hbase.regionserver.thrift.http";<a name="line.168"></a>
+<span class="sourceLineNo">169</span>  static final String HTTP_MIN_THREADS = "hbase.thrift.http_threads.min";<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  static final String HTTP_MAX_THREADS = "hbase.thrift.http_threads.max";<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  static final String THRIFT_SSL_ENABLED = "hbase.thrift.ssl.enabled";<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  static final String THRIFT_SSL_KEYSTORE_STORE = "hbase.thrift.ssl.keystore.store";<a name="line.173"></a>
+<span class="sourceLineNo">174</span>  static final String THRIFT_SSL_KEYSTORE_PASSWORD = "hbase.thrift.ssl.keystore.password";<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  static final String THRIFT_SSL_KEYSTORE_KEYPASSWORD = "hbase.thrift.ssl.keystore.keypassword";<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  static final String THRIFT_SSL_EXCLUDE_CIPHER_SUITES = "hbase.thrift.ssl.exclude.cipher.suites";<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  static final String THRIFT_SSL_INCLUDE_CIPHER_SUITES = "hbase.thrift.ssl.include.cipher.suites";<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  static final String THRIFT_SSL_EXCLUDE_PROTOCOLS = "hbase.thrift.ssl.exclude.protocols";<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  static final String THRIFT_SSL_INCLUDE_PROTOCOLS = "hbase.thrift.ssl.include.protocols";<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  /**<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   * Amount of time in milliseconds before a server thread will timeout<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * waiting for client to send data on a connected socket. Currently,<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * applies only to TBoundedThreadPoolServer<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   */<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public static final String THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY =<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    "hbase.thrift.server.socket.read.timeout";<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  public static final int THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT = 60000;<a name="line.188"></a>
 <span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>  /**<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * Thrift quality of protection configuration key. Valid values can be:<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * auth-conf: authentication, integrity and confidentiality checking<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * auth-int: authentication and integrity checking<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * auth: authentication only<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   *<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * This is used to authenticate the callers and support impersonation.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * The thrift server and the HBase cluster must run in secure mode.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  static final String THRIFT_QOP_KEY = "hbase.thrift.security.qop";<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  static final String BACKLOG_CONF_KEY = "hbase.regionserver.thrift.backlog";<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>  private static final String DEFAULT_BIND_ADDR = "0.0.0.0";<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  public static final int DEFAULT_LISTEN_PORT = 9090;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  public static final int HREGION_VERSION = 1;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  static final String THRIFT_SUPPORT_PROXYUSER = "hbase.thrift.support.proxyuser";<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  private final int listenPort;<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>  private Configuration conf;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  volatile TServer tserver;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  volatile Server httpServer;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>  private final Hbase.Iface handler;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  private final ThriftMetrics metrics;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private final HBaseHandler hbaseHandler;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  private final UserGroupInformation realUser;<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  private SaslUtil.QualityOfProtection qop;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  private String host;<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>  private final boolean securityEnabled;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  private final boolean doAsEnabled;<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>  private final JvmPauseMonitor pauseMonitor;<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  /** An enum of server implementation selections */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  enum ImplType {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    HS_HA("hsha", true, THsHaServer.class, true),<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    NONBLOCKING("nonblocking", true, TNonblockingServer.class, true),<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    THREAD_POOL("threadpool", false, TBoundedThreadPoolServer.class, true),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    THREADED_SELECTOR(<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        "threadedselector", true, TThreadedSelectorServer.class, true);<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>    public static final ImplType DEFAULT = THREAD_POOL;<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>    final String option;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    final boolean isAlwaysFramed;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    final Class&lt;? extends TServer&gt; serverClass;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    final boolean canSpecifyBindIP;<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    ImplType(String option, boolean isAlwaysFramed,<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        Class&lt;? extends TServer&gt; serverClass, boolean canSpecifyBindIP) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      this.option = option;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      this.isAlwaysFramed = isAlwaysFramed;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      this.serverClass = serverClass;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      this.canSpecifyBindIP = canSpecifyBindIP;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>    /**<a name="line.247"></a>
-<span class="sourceLineNo">248</span>     * @return &lt;code&gt;-option&lt;/code&gt; so we can get the list of options from<a name="line.248"></a>
-<span class="sourceLineNo">249</span>     *         {@link #values()}<a name="line.249"></a>
-<span class="sourceLineNo">250</span>     */<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    @Override<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    public String toString() {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      return "-" + option;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    String getDescription() {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      StringBuilder sb = new StringBuilder("Use the " +<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          serverClass.getSimpleName());<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      if (isAlwaysFramed) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        sb.append(" This implies the framed transport.");<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      if (this == DEFAULT) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        sb.append("This is the default.");<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      return sb.toString();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>    static OptionGroup createOptionGroup() {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      OptionGroup group = new OptionGroup();<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      for (ImplType t : values()) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        group.addOption(new Option(t.option, t.getDescription()));<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      }<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      return group;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>    static ImplType getServerImpl(Configuration conf) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      String confType = conf.get(SERVER_TYPE_CONF_KEY, THREAD_POOL.option);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      for (ImplType t : values()) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        if (confType.equals(t.option)) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          return t;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>        }<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      }<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      throw new AssertionError("Unknown server ImplType.option:" + confType);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    static void setServerImpl(CommandLine cmd, Configuration conf) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      ImplType chosenType = null;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      int numChosen = 0;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      for (ImplType t : values()) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        if (cmd.hasOption(t.option)) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          chosenType = t;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          ++numChosen;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        }<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      }<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      if (numChosen &lt; 1) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        LOG.info("Using default thrift server type");<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        chosenType = DEFAULT;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      } else if (numChosen &gt; 1) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        throw new AssertionError("Exactly one option out of " +<a name="line.299"></a>
-<span class="sourceLineNo">300</span>          Arrays.toString(values()) + " has to be specified");<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      LOG.info("Using thrift server type " + chosenType.option);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      conf.set(SERVER_TYPE_CONF_KEY, chosenType.option);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
-<span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span>    public String simpleClassName() {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      return serverClass.getSimpleName();<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    }<a name="line.308"></a>
-<span class="sourceLineNo">309</span><a name="line.309"></a>
-<span class="sourceLineNo">310</span>    public static List&lt;String&gt; serversThatCannotSpecifyBindIP() {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      List&lt;String&gt; l = new ArrayList&lt;&gt;();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      for (ImplType t : values()) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        if (!t.canSpecifyBindIP) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>          l.add(t.simpleClassName());<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      return l;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>  public ThriftServerRunner(Configuration conf) throws IOException {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    UserProvider userProvider = UserProvider.instantiate(conf);<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    // login the server principal (if using secure Hadoop)<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    securityEnabled = userProvider.isHadoopSecurityEnabled()<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      &amp;&amp; userProvider.isHBaseSecurityEnabled();<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    if (securityEnabled) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      host = Strings.domainNamePointerToHostName(DNS.getDefaultHost(<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        conf.get("hbase.thrift.dns.interface", "default"),<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        conf.get("hbase.thrift.dns.nameserver", "default")));<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      userProvider.login("hbase.thrift.keytab.file",<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        "hbase.thrift.kerberos.principal", host);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    }<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    this.conf = HBaseConfiguration.create(conf);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    this.listenPort = conf.getInt(PORT_CONF_KEY, DEFAULT_LISTEN_PORT);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    this.metrics = new ThriftMetrics(conf, ThriftMetrics.ThriftServerType.ONE);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    this.pauseMonitor = new JvmPauseMonitor(conf, this.metrics.getSource());<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    this.hbaseHandler = new HBaseHandler(conf, userProvider);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    this.hbaseHandler.initMetrics(metrics);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    this.handler = HbaseHandlerMetricsProxy.newInstance(<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      hbaseHandler, metrics, conf);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    this.realUser = userProvider.getCurrent().getUGI();<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    String strQop = conf.get(THRIFT_QOP_KEY);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    if (strQop != null) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      this.qop = SaslUtil.getQop(strQop);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    doAsEnabled = conf.getBoolean(THRIFT_SUPPORT_PROXYUSER, false);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    if (doAsEnabled) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      if (!conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        LOG.warn("Fail to enable the doAs feature. hbase.regionserver.thrift.http is not configured ");<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      }<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    if (qop != null) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      if (qop != QualityOfProtection.AUTHENTICATION &amp;&amp;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>          qop != QualityOfProtection.INTEGRITY &amp;&amp;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          qop != QualityOfProtection.PRIVACY) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        throw new IOException(String.format("Invalide %s: It must be one of %s, %s, or %s.",<a name="line.357"></a>
-<span class="sourceLineNo">358</span>                              THRIFT_QOP_KEY,<a name="line.358"></a>
-<span class="sourceLineNo">359</span>                              QualityOfProtection.AUTHENTICATION.name(),<a name="line.359"></a>
-<span class="sourceLineNo">360</span>                              QualityOfProtection.INTEGRITY.name(),<a name="line.360"></a>
-<span class="sourceLineNo">361</span>                              QualityOfProtection.PRIVACY.name()));<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      if (!securityEnabled) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        throw new IOException("Thrift server must"<a name="line.364"></a>
-<span class="sourceLineNo">365</span>          + " run in secure mode to support authentication");<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    }<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  /*<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * Runs the Thrift server<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   */<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  @Override<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  public void run() {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    realUser.doAs(new PrivilegedAction&lt;Object&gt;() {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      @Override<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      public Object run() {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>        try {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>          pauseMonitor.start();<a name="line.379"></a>
-<span class="sourceLineNo">380</span>          if (conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>            setupHTTPServer();<a name="line.381"></a>
-<span class="sourceLineNo">382</span>            httpServer.start();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>            httpServer.join();<a name="line.383"></a>
-<span class="sourceLineNo">384</span>          } else {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>            setupServer();<a name="line.385"></a>
-<span class="sourceLineNo">386</span>            tserver.serve();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>          }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        } catch (Exception e) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          LOG.error(HBaseMarkers.FATAL, "Cannot run ThriftServer", e);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>          // Crash the process if the ThriftServer is not running<a name="line.390"></a>
-<span class="sourceLineNo">391</span>          System.exit(-1);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        }<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        return null;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      }<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    });<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>  }<a name="line.397"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  /**<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * Thrift quality of protection configuration key. Valid values can be:<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * auth-conf: authentication, integrity and confidentiality checking<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * auth-int: authentication and integrity checking<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * auth: authentication only<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   *<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * This is used to authenticate the callers and support impersonation.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * The thrift server and the HBase cluster must run in secure mode.<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   */<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  static final String THRIFT_QOP_KEY = "hbase.thrift.security.qop";<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  static final String BACKLOG_CONF_KEY = "hbase.regionserver.thrift.backlog";<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>  private static final String DEFAULT_BIND_ADDR = "0.0.0.0";<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  public static final int DEFAULT_LISTEN_PORT = 9090;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  public static final int HREGION_VERSION = 1;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>  static final String THRIFT_SUPPORT_PROXYUSER = "hbase.thrift.support.proxyuser";<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  private final int listenPort;<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>  private Configuration conf;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  volatile TServer tserver;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>  volatile Server httpServer;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  private final Hbase.Iface handler;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  private final ThriftMetrics metrics;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  private final HBaseHandler hbaseHandler;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  private final UserGroupInformation realUser;<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>  private SaslUtil.QualityOfProtection qop;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  private String host;<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  private final boolean securityEnabled;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  private final boolean doAsEnabled;<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  private final JvmPauseMonitor pauseMonitor;<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>  /** An enum of server implementation selections */<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  enum ImplType {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    HS_HA("hsha", true, THsHaServer.class, true),<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    NONBLOCKING("nonblocking", true, TNonblockingServer.class, true),<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    THREAD_POOL("threadpool", false, TBoundedThreadPoolServer.class, true),<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    THREADED_SELECTOR(<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        "threadedselector", true, TThreadedSelectorServer.class, true);<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>    public static final ImplType DEFAULT = THREAD_POOL;<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    final String option;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    final boolean isAlwaysFramed;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    final Class&lt;? extends TServer&gt; serverClass;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    final boolean canSpecifyBindIP;<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>    ImplType(String option, boolean isAlwaysFramed,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        Class&lt;? extends TServer&gt; serverClass, boolean canSpecifyBindIP) {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      this.option = option;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      this.isAlwaysFramed = isAlwaysFramed;<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      this.serverClass = serverClass;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      this.canSpecifyBindIP = canSpecifyBindIP;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    }<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>    /**<a name="line.248"></a>
+<span class="sourceLineNo">249</span>     * @return &lt;code&gt;-option&lt;/code&gt; so we can get the list of options from<a name="line.249"></a>
+<span class="sourceLineNo">250</span>     *         {@link #values()}<a name="line.250"></a>
+<span class="sourceLineNo">251</span>     */<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    @Override<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    public String toString() {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      return "-" + option;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>    String getDescription() {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      StringBuilder sb = new StringBuilder("Use the " +<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          serverClass.getSimpleName());<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      if (isAlwaysFramed) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        sb.append(" This implies the framed transport.");<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      }<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      if (this == DEFAULT) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        sb.append("This is the default.");<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      return sb.toString();<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>    static OptionGroup createOptionGroup() {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      OptionGroup group = new OptionGroup();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      for (ImplType t : values()) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        group.addOption(new Option(t.option, t.getDescription()));<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      return group;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>    static ImplType getServerImpl(Configuration conf) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      String confType = conf.get(SERVER_TYPE_CONF_KEY, THREAD_POOL.option);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      for (ImplType t : values()) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        if (confType.equals(t.option)) {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>          return t;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      }<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      throw new AssertionError("Unknown server ImplType.option:" + confType);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    static void setServerImpl(CommandLine cmd, Configuration conf) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      ImplType chosenType = null;<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      int numChosen = 0;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      for (ImplType t : values()) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        if (cmd.hasOption(t.option)) {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          chosenType = t;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>          ++numChosen;<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        }<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      }<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      if (numChosen &lt; 1) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        LOG.info("Using default thrift server type");<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        chosenType = DEFAULT;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      } else if (numChosen &gt; 1) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        throw new AssertionError("Exactly one option out of " +<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          Arrays.toString(values()) + " has to be specified");<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      LOG.info("Using thrift server type " + chosenType.option);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      conf.set(SERVER_TYPE_CONF_KEY, chosenType.option);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span>    public String simpleClassName() {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      return serverClass.getSimpleName();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>    public static List&lt;String&gt; serversThatCannotSpecifyBindIP() {<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      List&lt;String&gt; l = new ArrayList&lt;&gt;();<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      for (ImplType t : values()) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        if (!t.canSpecifyBindIP) {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>          l.add(t.simpleClassName());<a name="line.315"></a>
+<span class="sourceLineNo">316</span>        }<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      return l;<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public ThriftServerRunner(Configuration conf) throws IOException {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    UserProvider userProvider = UserProvider.instantiate(conf);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // login the server principal (if using secure Hadoop)<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    securityEnabled = userProvider.isHadoopSecurityEnabled()<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      &amp;&amp; userProvider.isHBaseSecurityEnabled();<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    if (securityEnabled) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      host = Strings.domainNamePointerToHostName(DNS.getDefaultHost(<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        conf.get("hbase.thrift.dns.interface", "default"),<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        conf.get("hbase.thrift.dns.nameserver", "default")));<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      userProvider.login("hbase.thrift.keytab.file",<a name="line.332"></a>
+<span class="sourceLineNo">333</span>        "hbase.thrift.kerberos.principal", host);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    }<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    this.conf = HBaseConfiguration.create(conf);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    this.listenPort = conf.getInt(PORT_CONF_KEY, DEFAULT_LISTEN_PORT);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    this.metrics = new ThriftMetrics(conf, ThriftMetrics.ThriftServerType.ONE);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    this.pauseMonitor = new JvmPauseMonitor(conf, this.metrics.getSource());<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    this.hbaseHandler = new HBaseHandler(conf, userProvider);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    this.hbaseHandler.initMetrics(metrics);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    this.handler = HbaseHandlerMetricsProxy.newInstance(<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      hbaseHandler, metrics, conf);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    this.realUser = userProvider.getCurrent().getUGI();<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    String strQop = conf.get(THRIFT_QOP_KEY);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    if (strQop != null) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      this.qop = SaslUtil.getQop(strQop);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    doAsEnabled = conf.getBoolean(THRIFT_SUPPORT_PROXYUSER, false);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    if (doAsEnabled) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      if (!conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        LOG.warn("Fail to enable the doAs feature. hbase.regionserver.thrift.http is not " +<a name="line.351"></a>
+<span class="sourceLineNo">352</span>                "configured ");<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      }<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    }<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    if (qop != null) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      if (qop != QualityOfProtection.AUTHENTICATION &amp;&amp;<a name="line.356"></a>
+<span class="sourceLineNo">357</span>          qop != QualityOfProtection.INTEGRITY &amp;&amp;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>          qop != QualityOfProtection.PRIVACY) {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>        throw new IOException(String.format("Invalide %s: It must be one of %s, %s, or %s.",<a name="line.359"></a>
+<span class="sourceLineNo">360</span>                              THRIFT_QOP_KEY,<a name="line.360"></a>
+<span class="sourceLineNo">361</span>                              QualityOfProtection.AUTHENTICATION.name(),<a name="line.361"></a>
+<span class="sourceLineNo">362</span>                              QualityOfProtection.INTEGRITY.name(),<a name="line.362"></a>
+<span class="sourceLineNo">363</span>                              QualityOfProtection.PRIVACY.name()));<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      if (!securityEnabled) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>        throw new IOException("Thrift server must"<a name="line.366"></a>
+<span class="sourceLineNo">367</span>          + " run in secure mode to support authentication");<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    }<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  /*<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * Runs the Thrift server<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   */<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  @Override<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  public void run() {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    realUser.doAs(new PrivilegedAction&lt;Object&gt;() {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      @Override<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      public Object run() {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        try {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>          pauseMonitor.start();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>          if (conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>            setupHTTPServer();<a name="line.383"></a>
+<span class="sourceLineNo">384</span>            httpServer.start();<a name="line.384"></a>
+<span class="sourceLineNo">385</span>            httpServer.join();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>          } else {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>            setupServer();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>            tserver.serve();<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          }<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        } catch (Exception e) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>          LOG.error(HBaseMarkers.FATAL, "Cannot run ThriftServer", e);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          // Crash the process if the ThriftServer is not running<a name="line.392"></a>
+<span class="sourceLineNo">393</span>          System.exit(-1);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        }<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        return null;<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      }<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    });<a name="line.397"></a>
 <span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  public void shutdown() {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    if (pauseMonitor != null) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      pauseMonitor.stop();<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    if (tserver != null) {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      tserver.stop();<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      tserver = null;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    }<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    if (httpServer != null) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      try {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        httpServer.stop();<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        httpServer = null;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      } catch (Exception e) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        LOG.error("Problem encountered in shutting down HTTP server " + e.getCause());<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      httpServer = null;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    }<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  }<a name="line.416"></a>
-<span class="sourceLineNo">417</span><a name="line.417"></a>
-<span class="sourceLineNo">418</span>  private void setupHTTPServer() throws IOException {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    TProcessor processor = new Hbase.Processor&lt;&gt;(handler);<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    TServlet thriftHttpServlet = new ThriftHttpServlet(processor, protocolFactory, realUser,<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        conf, hbaseHandler, securityEnabled, doAsEnabled);<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>    // Set the default max thread number to 100 to limit<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    // the number of concurrent requests so that Thrfit HTTP server doesn't OOM easily.<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    // Jetty set the default max thread number to 250, if we don't set it.<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    //<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    // Our default min thread number 2 is the same as that used by Jetty.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    int minThreads = conf.getInt(HTTP_MIN_THREADS, 2);<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    int maxThreads = conf.getInt(HTTP_MAX_THREADS, 100);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    QueuedThreadPool threadPool = new QueuedThreadPool(maxThreads);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    threadPool.setMinThreads(minThreads);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    httpServer = new Server(threadPool);<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>    // Context handler<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    ServletContextHandler ctxHandler = new ServletContextHandler(httpServer, "/", ServletContextHandler.SESSIONS);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    ctxHandler.addServlet(new ServletHolder(thriftHttpServlet), "/*");<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>    // set up Jetty and run the embedded server<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    HttpConfiguration httpConfig = new HttpConfiguration();<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    httpConfig.setSecureScheme("https");<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    httpConfig.setSecurePort(listenPort);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    httpConfig.setHeaderCacheSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    httpConfig.setRequestHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    httpConfig.setResponseHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    httpConfig.setSendServerVersion(false);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    httpConfig.setSendDateHeader(false);<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>    ServerConnector serverConnector;<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    if(conf.getBoolean(THRIFT_SSL_ENABLED, false)) {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      HttpConfiguration httpsConfig = new HttpConfiguration(httpConfig);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      httpsConfig.addCustomizer(new SecureRequestCustomizer());<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>      SslContextFactory sslCtxFactory = new SslContextFactory();<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      String keystore = conf.get(THRIFT_SSL_KEYSTORE_STORE);<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      String password = HBaseConfiguration.getPassword(conf,<a name="line.456"></a>
-<span class="sourceLineNo">457</span>          THRIFT_SSL_KEYSTORE_PASSWORD, null);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      String keyPassword = HBaseConfiguration.getPassword(conf,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>          THRIFT_SSL_KEYSTORE_KEYPASSWORD, password);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      sslCtxFactory.setKeyStorePath(keystore);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      sslCtxFactory.setKeyStorePassword(password);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      sslCtxFactory.setKeyManagerPassword(keyPassword);<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span>      String[] excludeCiphers = conf.getStrings(<a name="line.464"></a>
-<span class="sourceLineNo">465</span>          THRIFT_SSL_EXCLUDE_CIPHER_SUITES, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      if (excludeCiphers.length != 0) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>        sslCtxFactory.setExcludeCipherSuites(excludeCiphers);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      }<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      String[] includeCiphers = conf.getStrings(<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          THRIFT_SSL_INCLUDE_CIPHER_SUITES, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      if (includeCiphers.length != 0) {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>        sslCtxFactory.setIncludeCipherSuites(includeCiphers);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>      // Disable SSLv3 by default due to "Poodle" Vulnerability - CVE-2014-3566<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      String[] excludeProtocols = conf.getStrings(<a name="line.476"></a>
-<span class="sourceLineNo">477</span>          THRIFT_SSL_EXCLUDE_PROTOCOLS, "SSLv3");<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      if (excludeProtocols.length != 0) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        sslCtxFactory.setExcludeProtocols(excludeProtocols);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      }<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      String[] includeProtocols = conf.getStrings(<a name="line.481"></a>
-<span class="sourceLineNo">482</span>          THRIFT_SSL_INCLUDE_PROTOCOLS, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      if (includeProtocols.length != 0) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>        sslCtxFactory.setIncludeProtocols(includeProtocols);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      }<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>      serverConnector = new ServerConnector(httpServer,<a name="line.487"></a>
-<span class="sourceLineNo">488</span>          new SslConnectionFactory(sslCtxFactory, HttpVersion.HTTP_1_1.toString()),<a name="line.488"></a>
-<span class="sourceLineNo">489</span>          new HttpConnectionFactory(httpsConfig));<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    } else {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      serverConnector = new ServerConnector(httpServer, new HttpConnectionFactory(httpConfig));<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    serverConnector.setPort(listenPort);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    String host = getBindAddress(conf).getHostAddress();<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    serverConnector.setHost(host);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    httpServer.addConnector(serverConnector);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    httpServer.setStopAtShutdown(true);<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    if (doAsEnabled) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      ProxyUsers.refreshSuperUserGroupsConfiguration(conf);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    }<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>    LOG.info("Starting Thrift HTTP Server on " + Integer.toString(listenPort));<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  }<a name="line.504"></a>
+<span class="sourceLineNo">399</span>  }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>  public void shutdown() {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    if (pauseMonitor != null) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      pauseMonitor.stop();<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    }<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    if (tserver != null) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      tserver.stop();<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      tserver = null;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    if (httpServer != null) {<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      try {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        httpServer.stop();<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        httpServer = null;<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      } catch (Exception e) {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        LOG.error("Problem encountered in shutting down HTTP server " + e.getCause());<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      }<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      httpServer = null;<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>  }<a name="line.418"></a>
+<span class="sourceLineNo">419</span><a name="line.419"></a>
+<span class="sourceLineNo">420</span>  private void setupHTTPServer() throws IOException {<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    TProcessor processor = new Hbase.Processor&lt;&gt;(handler);<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    TServlet thriftHttpServlet = new ThriftHttpServlet(processor, protocolFactory, realUser,<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        conf, hbaseHandler, securityEnabled, doAsEnabled);<a name="line.424"></a>
+<span class="sourceLineNo">425</span><a name="line.425"></a>
+<span class="sourceLineNo">426</span>    // Set the default max thread number to 100 to limit<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    // the number of concurrent requests so that Thrfit HTTP server doesn't OOM easily.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    // Jetty set the default max thread number to 250, if we don't set it.<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    //<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    // Our default min thread number 2 is the same as that used by Jetty.<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    int minThreads = conf.getInt(HTTP_MIN_THREADS, 2);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    int maxThreads = conf.getInt(HTTP_MAX_THREADS, 100);<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    QueuedThreadPool threadPool = new QueuedThreadPool(maxThreads);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    threadPool.setMinThreads(minThreads);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    httpServer = new Server(threadPool);<a name="line.435"></a>
+<span class="sourceLineNo">436</span><a name="line.436"></a>
+<span class="sourceLineNo">437</span>    // Context handler<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    ServletContextHandler ctxHandler = new ServletContextHandler(httpServer, "/",<a name="line.438"></a>
+<span class="sourceLineNo">439</span>            ServletContextHandler.SESSIONS);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    ctxHandler.addServlet(new ServletHolder(thriftHttpServlet), "/*");<a name="line.440"></a>
+<span class="sourceLineNo">441</span><a name="line.441"></a>
+<span class="sourceLineNo">442</span>    // set up Jetty and run the embedded server<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    HttpConfiguration httpConfig = new HttpConfiguration();<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    httpConfig.setSecureScheme("https");<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    httpConfig.setSecurePort(listenPort);<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    httpConfig.setHeaderCacheSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    httpConfig.setRequestHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    httpConfig.setResponseHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    httpConfig.setSendServerVersion(false);<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    httpConfig.setSendDateHeader(false);<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    ServerConnector serverConnector;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    if(conf.getBoolean(THRIFT_SSL_ENABLED, false)) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      HttpConfiguration httpsConfig = new HttpConfiguration(httpConfig);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      httpsConfig.addCustomizer(new SecureRequestCustomizer());<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>      SslContextFactory sslCtxFactory = new SslContextFactory();<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      String keystore = conf.get(THRIFT_SSL_KEYSTORE_STORE);<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      String password = HBaseConfiguration.getPassword(conf,<a name="line.459"></a>
+<span class="sourceLineNo">460</span>          THRIFT_SSL_KEYSTORE_PASSWORD, null);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      String keyPassword = HBaseConfiguration.getPassword(conf,<a name="line.461"></a>
+<span class="sourceLineNo">462</span>          THRIFT_SSL_KEYSTORE_KEYPASSWORD, password);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      sslCtxFactory.setKeyStorePath(keystore);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      sslCtxFactory.setKeyStorePassword(password);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      sslCtxFactory.setKeyManagerPassword(keyPassword);<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>      String[] excludeCiphers = conf.getStrings(<a name="line.467"></a>
+<span class="sourceLineNo">468</span>          THRIFT_SSL_EXCLUDE_CIPHER_SUITES, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      if (excludeCiphers.length != 0) {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>        sslCtxFactory.setExcludeCipherSuites(excludeCiphers);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      }<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      String[] includeCiphers = conf.getStrings(<a name="line.472"></a>
+<span class="sourceLineNo">473</span>          THRIFT_SSL_INCLUDE_CIPHER_SUITES, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      if (includeCiphers.length != 0) {<a name="line.474"></a>
+<span class="sourceLineNo">475</span>        sslCtxFactory.setIncludeCipherSuites(includeCiphers);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      }<a name="line.476"></a>
+<span class="sourceLineNo">477</span><a name="line.477"></a>
+<span class="sourceLineNo">478</span>      // Disable SSLv3 by default due to "Poodle" Vulnerability - CVE-2014-3566<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      String[] excludeProtocols = conf.getStrings(<a name="line.479"></a>
+<span class="sourceLineNo">480</span>          THRIFT_SSL_EXCLUDE_PROTOCOLS, "SSLv3");<a name="line.480"></a>
+<span class="sourceLineNo">481</span>      if (excludeProtocols.length != 0) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>        sslCtxFactory.setExcludeProtocols(excludeProtocols);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      }<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      String[] includeProtocols = conf.getStrings(<a name="line.484"></a>
+<span class="sourceLineNo">485</span>          THRIFT_SSL_INCLUDE_PROTOCOLS, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      if (includeProtocols.length != 0) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>        sslCtxFactory.setIncludeProtocols(includeProtocols);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      }<a name="line.488"></a>
+<span class="sourceLineNo">489</span><a name="line.489"></a>
+<span class="sourceLineNo">490</span>      serverConnector = new ServerConnector(httpServer,<a name="line.490"></a>
+<span class="sourceLineNo">491</span>          new SslConnectionFactory(sslCtxFactory, HttpVersion.HTTP_1_1.toString()),<a name="line.491"></a>
+<span class="sourceLineNo">492</span>          new HttpConnectionFactory(httpsConfig));<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    } else {<a name="line.493"></a>
+<span class="sourceLineNo">494</span>      serverConnector = new ServerConnector(httpServer, new HttpConnectionFactory(httpConfig));<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    }<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    serverConnector.setPort(listenPort);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    String host = getBindAddress(conf).getHostAddress();<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    serverConnector.setHost(host);<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    httpServer.addConnector(serverConnector);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    httpServer.setStopAtShutdown(true);<a name="line.500"></a>
+<span class="sourceLineNo">501</span><a name="line.501"></a>
+<span class="sourceLineNo">502</span>    if (doAsEnabled) {<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      ProxyUsers.refreshSuperUserGroupsConfiguration(conf);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    }<a name="line.504"></a>
 <span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>  /**<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * Setting up the thrift TServer<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   */<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  private void setupServer() throws Exception {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    // Construct correct ProtocolFactory<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    TProtocolFactory protocolFactory;<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    if (conf.getBoolean(COMPACT_CONF_KEY, false)) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      LOG.debug("Using compact protocol");<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      protocolFactory = new TCompactProtocol.Factory();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    } else {<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      LOG.debug("Using binary protocol");<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      protocolFactory = new TBinaryProtocol.Factory();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    }<a name="line.518"></a>
+<span class="sourceLineNo">506</span>    LOG.info("Starting Thrift HTTP Server on " + Integer.toString(listenPort));<a name="line.506"></a>
+<span class="sourceLineNo">507</span>  }<a name="line.507"></a>
+<span class="sourceLineNo">508</span><a name="line.508"></a>
+<span class="sourceLineNo">509</span>  /**<a name="line.509"></a>
+<span class="sourceLineNo">510</span>   * Setting up the thrift TServer<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
+<span class="sourceLineNo">512</span>  private void setupServer() throws Exception {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    // Construct correct ProtocolFactory<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    TProtocolFactory protocolFactory = getProtocolFactory();<a name="line.514"></a>
+<span class="sourceLineNo">515</span><a name="line.515"></a>
+<span class="sourceLineNo">516</span>    final TProcessor p = new Hbase.Processor&lt;&gt;(handler);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    ImplType implType = ImplType.getServerImpl(conf);<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    TProcessor processor = p;<a name="line.518"></a>
 <span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>    final TProcessor p = new Hbase.Processor&lt;&gt;(handler);<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    ImplType implType = ImplType.getServerImpl(conf);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    TProcessor processor = p;<a name="line.522"></a>
-<span class="sourceLineNo">523</span><a name="line.523"></a>
-<span class="sourceLineNo">524</span>    // Construct correct TransportFactory<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    TTransportFactory transportFactory;<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    if (conf.getBoolean(FRAMED_CONF_KEY, false) || implType.isAlwaysFramed) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      if (qop != null) {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>        throw new RuntimeException("Thrift server authentication"<a name="line.528"></a>
-<span class="sourceLineNo">529</span>          + " doesn't work with framed transport yet");<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      }<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      transportFactory = new TFramedTransport.Factory(<a name="line.531"></a>
-<span class="sourceLineNo">532</span>          conf.getInt(MAX_FRAME_SIZE_CONF_KEY, 2)  * 1024 * 1024);<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      LOG.debug("Using framed transport");<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    } else if (qop == null) {<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      transportFactory = new TTransportFactory();<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    } else {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      // Extract the name from the principal<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      String name = SecurityUtil.getUserFromPrincipal(<a name="line.538"></a>
-<span class="sourceLineNo">539</span>        conf.get("hbase.thrift.kerberos.principal"));<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      Map&lt;String, String&gt; saslProperties = SaslUtil.initSaslProperties(qop.name());<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      TSaslServerTransport.Factory saslFactory = new TSaslServerTransport.Factory();<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      saslFactory.addServerDefinition("GSSAPI", name, host, saslProperties,<a name="line.542"></a>
-<span class="sourceLineNo">543</span>        new SaslGssCallbackHandler() {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>          @Override<a name="line.544"></a>
-<span class="sourceLineNo">545</span>          public void handle(Callback[] callbacks)<a name="line.545"></a>
-<span class="sourceLineNo">546</span>              throws UnsupportedCallbackException {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>            AuthorizeCallback ac = null;<a name="line.547"></a>
-<span class="sourceLineNo">548</span>            for (Callback callback : callbacks) {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>              if (callback instanceof AuthorizeCallback) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>                ac = (AuthorizeCallback) callback;<a name="line.550"></a>
-<span class="sourceLineNo">551</span>              } else {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>                throw new UnsupportedCallbackException(callback,<a name="line.552"></a>
-<span class="sourceLineNo">553</span>                    "Unrecognized SASL GSSAPI Callback");<a name="line.553"></a>
-<span class="sourceLineNo">554</span>              }<a name="line.554"></a>
-<span class="sourceLineNo">555</span>            }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>            if (ac != null) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>              String authid = ac.getAuthenticationID();<a name="line.557"></a>
-<span class="sourceLineNo">558</span>              String authzid = ac.getAuthorizationID();<a name="line.558"></a>
-<span class="sourceLineNo">559</span>              if (!authid.equals(authzid)) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>                ac.setAuthorized(false);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>              } else {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>                ac.setAuthorized(true);<a name="line.562"></a>
-<span class="sourceLineNo">563</span>                String userName = SecurityUtil.getUserFromPrincipal(authzid);<a name="line.563"></a>
-<span class="sourceLineNo">564</span>                LOG.info("Effective user: " + userName);<a name="line.564"></a>
-<span class="sourceLineNo">565</span>                ac.setAuthorizedID(userName);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>              }<a name="line.566"></a>
-<span class="sourceLineNo">567</span>            }<a name="line.567"></a>
-<span class="sourceLineNo">568</span>          }<a name="line.568"></a>
-<span class="sourceLineNo">569</span>        });<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      transportFactory = saslFactory;<a name="line.570"></a>
-<span class="sourceLineNo">571</span><a name="line.571"></a>
-<span class="sourceLineNo">572</span>      // Create a processor wrapper, to get the caller<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      processor = new TProcessor() {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>        @Override<a name="line.574"></a>
-<span class="sourceLineNo">575</span>        public boolean process(TProtocol inProt,<a name="line.575"></a>
-<span class="sourceLineNo">576</span>            TProtocol outProt) throws TException {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>          TSaslServerTransport saslServerTransport =<a name="line.577"></a>
-<span class="sourceLineNo">578</span>            (TSaslServerTransport)inProt.getTransport();<a name="line.578"></a>
-<span class="sourceLineNo">579</span>          SaslServer saslServer = saslServerTransport.getSaslServer();<a name="line.579"></a>
-<span class="sourceLineNo">580</span>          String principal = saslServer.getAuthorizationID();<a name="line.580"></a>
-<span class="sourceLineNo">581</span>          hbaseHandler.setEffectiveUser(principal);<a name="line.581"></a>
-<span class="sourceLineNo">582</span>          return p.process(inProt, outProt);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>        }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>      };<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    }<a name="line.585"></a>
-<span class="sourceLineNo">586</span><a name="line.586"></a>
-<span class="sourceLineNo">587</span>    if (conf.get(BIND_CONF_KEY) != null &amp;&amp; !implType.canSpecifyBindIP) {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      LOG.error("Server types " + Joiner.on(", ").join(<a name="line.588"></a>
-<span class="sourceLineNo">589</span>          ImplType.serversThatCannotSpecifyBindIP()) + " don't support IP " +<a name="line.589"></a>
-<span class="sourceLineNo">590</span>          "address binding at the moment. See " +<a name="line.590"></a>
-<span class="sourceLineNo">591</span>          "https://issues.apache.org/jira/browse/HBASE-2155 for details.");<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      throw new RuntimeException(<a name="line.592"></a>
-<span class="sourceLineNo">593</span>          "-" + BIND_CONF_KEY + " not supported with " + implType);<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    }<a name="line.594"></a>
-<span class="sourceLineNo">595</span><a name="line.595"></a>
-<span class="sourceLineNo">596</span>    // Thrift's implementation uses '0' as a placeholder for 'use the default.'<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    int backlog = conf.getInt(BACKLOG_CONF_KEY, 0);<a name="line.597"></a>
-<span class="sourceLineNo">598</span><a name="line.598"></a>
-<span class="sourceLineNo">599</span>    if (implType == ImplType.HS_HA || implType == ImplType.NONBLOCKING ||<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        implType == ImplType.THREADED_SELECTOR) {<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      InetAddress listenAddress = getBindAddress(conf);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      TNonblockingServerTransport serverTransport = new TNonblockingServerSocket(<a name="line.602"></a>
-<span class="sourceLineNo">603</span>          new InetSocketAddress(listenAddress, listenPort));<a name="line.603"></a>
-<span class="sourceLineNo">604</span><a name="line.604"></a>
-<span class="sourceLineNo">605</span>      if (implType == ImplType.NONBLOCKING) {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>        TNonblockingServer.Args serverArgs =<a name="line.606"></a>
-<span class="sourceLineNo">607</span>            new TNonblockingServer.Args(serverTransport);<a name="line.607"></a>
-<span class="sourceLineNo">608</span>        serverArgs.processor(processor)<a name="line.608"></a>
-<span class="sourceLineNo">609</span>                  .transportFactory(transportFactory)<a name="line.609"></a>
-<span class="sourceLineNo">610</span>                  .protocolFactory(protocolFactory);<a name="line.610"></a>
-<span class="sourceLineNo">611</span>        tserver = new TNonblockingServer(serverArgs);<a name="line.611"></a>
-<span class="sourceLineNo">612</span>      } else if (implType == ImplType.HS_HA) {<a name="line.612"></a>
-<span class="sourceLineNo">613</span>        THsHaServer.Args serverArgs = new THsHaServer.Args(serverTransport);<a name="line.613"></a>
-<span class="sourceLineNo">614</span>        CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        ExecutorService executorService = createExecutor(<a name="line.615"></a>
-<span class="sourceLineNo">616</span>            callQueue, serverArgs.getMaxWorkerThreads(), serverArgs.getMaxWorkerThreads());<a name="line.616"></a>
-<span class="sourceLineNo">617</span>        serverArgs.executorService(executorService)<a name="line.617"></a>
-<span class="sourceLineNo">618</span>                  .processor(processor)<a name="line.618"></a>
-<span class="sourceLineNo">619</span>                  .transportFactory(transportFactory)<a name="line.619"></a>
-<span class="sourceLineNo">620</span>                  .protocolFactory(protocolFactory);<a name="line.620"></a>
-<span class="sourceLineNo">621</span>        tserver = new THsHaServer(serverArgs);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      } else { // THREADED_SELECTOR<a name="line.622"></a>
-<span class="sourceLineNo">623</span>        TThreadedSelectorServer.Args serverArgs =<a name="line.623"></a>
-<span class="sourceLineNo">624</span>            new HThreadedSelectorServerArgs(serverTransport, conf);<a name="line.624"></a>
-<span class="sourceLineNo">625</span>        CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>        ExecutorService executorService = createExecutor(<a name="line.626"></a>
-<span class="sourceLineNo">627</span>            callQueue, serverArgs.getWorkerThreads(), serverArgs.getWorkerThreads());<a name="line.627"></a>
-<span class="sourceLineNo">628</span>        serverArgs.executorService(executorService)<a name="line.628"></a>
-<span class="sourceLineNo">629</span>                  .processor(processor)<a name="line.629"></a>
-<span class="sourceLineNo">630</span>                  .transportFactory(transportFactory)<a name="line.630"></a>
-<span class="sourceLineNo">631</span>                  .protocolFactory(protocolFactory);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>        tserver = new TThreadedSelectorServer(serverArgs);<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      }<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      LOG.info("starting HBase " + implType.simpleClassName() +<a name="line.634"></a>
-<span class="sourceLineNo">635</span>          " server on " + Integer.toString(listenPort));<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    } else if (implType == ImplType.THREAD_POOL) {<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      // Thread pool server. Get the IP address to bind to.<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      InetAddress listenAddress = getBindAddress(conf);<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      int readTimeout = conf.getInt(THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY,<a name="line.639"></a>
-<span class="sourceLineNo">640</span>          THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT);<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      TServerTransport serverTransport = new TServerSocket(<a name="line.641"></a>
-<span class="sourceLineNo">642</span>          new TServerSocket.ServerSocketTransportArgs().<a name="line.642"></a>
-<span class="sourceLineNo">643</span>              bindAddr(new InetSocketAddress(listenAddress, listenPort)).<a name="line.643"></a>
-<span class="sourceLineNo">644</span>              backlog(backlog).<a name="line.644"></a>
-<span class="sourceLineNo">645</span>              clientTimeout(readTimeout));<a name="line.645"></a>
-<span class="sourceLineNo">646</span><a name="line.646"></a>
-<span class="sourceLineNo">647</span>      TBoundedThreadPoolServer.Args serverArgs =<a name="line.647"></a>
-<span class="sourceLineNo">648</span>          new TBoundedThreadPoolServer.Args(serverTransport, conf);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      serverArgs.processor(processor)<a name="line.649"></a>
-<span class="sourceLineNo">650</span>                .transportFactory(transportFactory)<a name="line.650"></a>
-<span class="sourceLineNo">651</span>                .protocolFactory(protocolFactory);<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      LOG.info("starting " + ImplType.THREAD_POOL.simpleClassName() + " on "<a name="line.652"></a>
-<span class="sourceLineNo">653</span>          + listenAddress + ":" + Integer.toString(listenPort)<a name="line.653"></a>
-<span class="sourceLineNo">654</span>          + " with readTimeout " + readTimeout + "ms; " + serverArgs);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      TBoundedThreadPoolServer tserver =<a name="line.655"></a>
-<span class="sourceLineNo">656</span>          new TBoundedThreadPoolServer(serverArgs, metrics);<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      this.tserver = tserver;<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    } else {<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      throw new AssertionError("Unsupported Thrift server implementation: " +<a name="line.659"></a>
-<span class="sourceLineNo">660</span>          implType.simpleClassName());<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    }<a name="line.661"></a>
+<span class="sourceLineNo">520</span>    // Construct correct TransportFactory<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    TTransportFactory transportFactory;<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    if (conf.getBoolean(FRAMED_CONF_KEY, false) || implType.isAlwaysFramed) {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>      if (qop != null) {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>        throw new RuntimeException("Thrift server authentication"<a name="line.524"></a>
+<span class="sourceLineNo">525</span>          + " doesn't work with framed transport yet");<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      }<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      transportFactory = new TFramedTransport.Factory(<a name="line.527"></a>
+<span class="sourceLineNo">528</span>          conf.getInt(MAX_FRAME_SIZE_CONF_KEY, 2)  * 1024 * 1024);<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      LOG.debug("Using framed transport");<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    } else if (qop == null) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>      transportFactory = new TTransportFactory();<a name="line.531"></a>
+<span class="sourceLineNo">532</span>    } else {<a name="line.532"></a>
+<span class="sourceLineNo">533</span>      // Extract the name from the principal<a name="line.533"></a>
+<span class="sourceLineNo">534</span>      String name = SecurityUtil.getUserFromPrincipal(<a name="line.534"></a>
+<span class="sourceLineNo">535</span>        conf.get("hbase.thrift.kerberos.principal"));<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      Map&lt;String, String&gt; saslProperties = SaslUtil.initSaslProperties(qop.name());<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      TSaslServerTransport.Factory saslFactory = new TSaslServerTransport.Factory();<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      saslFactory.addServerDefinition("GSSAPI", name, host, saslProperties,<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        new SaslGssCallbackHandler() {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>          @Override<a name="line.540"></a>
+<span class="sou

<TRUNCATED>

[07/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/testdevapidocs/org/apache/hadoop/hbase/client/TestReversedScannerCallable.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestReversedScannerCallable.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestReversedScannerCallable.html
index 1334fd8..84cfb93 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestReversedScannerCallable.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestReversedScannerCallable.html
@@ -309,7 +309,7 @@ private&nbsp;org.apache.hadoop.hbase.RegionLocations <a href="../../../../../src
 <ul class="blockList">
 <li class="blockList">
 <h4>testPrepareDoesNotUseCache</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestReversedScannerCallable.html#line.74">testPrepareDoesNotUseCache</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestReversedScannerCallable.html#line.71">testPrepareDoesNotUseCache</a>()
                                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -323,7 +323,7 @@ private&nbsp;org.apache.hadoop.hbase.RegionLocations <a href="../../../../../src
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testPrepareUsesCache</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestReversedScannerCallable.html#line.86">testPrepareUsesCache</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestReversedScannerCallable.html#line.83">testPrepareUsesCache</a>()
                           throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html b/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html
index 957a4e2..a44e907 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static final class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.165">TestThriftServer.MySlowHBaseHandler</a>
+<pre>public static final class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.161">TestThriftServer.MySlowHBaseHandler</a>
 extends org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler
 implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 </li>
@@ -223,7 +223,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MySlowHBaseHandler</h4>
-<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html#line.168">MySlowHBaseHandler</a>(org.apache.hadoop.conf.Configuration&nbsp;c)
+<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html#line.164">MySlowHBaseHandler</a>(org.apache.hadoop.conf.Configuration&nbsp;c)
                       throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -245,7 +245,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getTableNames</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html#line.174">getTableNames</a>()
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html#line.170">getTableNames</a>()
                                throws org.apache.hadoop.hbase.thrift.generated.IOError</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftServer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftServer.html b/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftServer.html
index 8c6342e..84f112b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftServer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftServer.html
@@ -681,7 +681,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testAll</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.131">testAll</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.129">testAll</a>()
              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Runs all of the tests under a single JUnit test method.  We
  consolidate all testing to one method because HBaseClusterTestCase
@@ -699,7 +699,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>doTestTableCreateDrop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.153">doTestTableCreateDrop</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.149">doTestTableCreateDrop</a>()
                            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Tests for creating, enabling, disabling, and deleting tables.  Also
  tests that creating a table with an invalid column name yields an
@@ -716,7 +716,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>doTestTableCreateDrop</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.160">doTestTableCreateDrop</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;handler)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.156">doTestTableCreateDrop</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;handler)
                                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -730,19 +730,12 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentCount</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.189">getCurrentCount</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.181">getCurrentCount</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                             int&nbsp;maybe,
                             org.apache.hadoop.hbase.thrift.ThriftMetrics&nbsp;metrics)</pre>
 <div class="block">TODO: These counts are supposed to be zero but sometimes they are not, they are equal to the
  passed in maybe.  Investigate why.  My guess is they are set by the test that runs just
  previous to this one.  Sometimes they are cleared.  Sometimes not.</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>name</code> - </dd>
-<dd><code>maybe</code> - </dd>
-<dd><code>metrics</code> - </dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-</dl>
 </li>
 </ul>
 <a name="doTestThriftMetrics--">
@@ -751,7 +744,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>doTestThriftMetrics</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.204">doTestThriftMetrics</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.196">doTestThriftMetrics</a>()
                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Tests if the metrics for thrift handler work correctly</div>
 <dl>
@@ -766,7 +759,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getHandlerForMetricsTest</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.231">getHandlerForMetricsTest</a>(org.apache.hadoop.hbase.thrift.ThriftMetrics&nbsp;metrics,
+<pre>private static&nbsp;org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.225">getHandlerForMetricsTest</a>(org.apache.hadoop.hbase.thrift.ThriftMetrics&nbsp;metrics,
                                                                                              org.apache.hadoop.conf.Configuration&nbsp;conf)
                                                                                       throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
@@ -781,7 +774,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetrics</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.thrift.ThriftMetrics&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.237">getMetrics</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
+<pre>private static&nbsp;org.apache.hadoop.hbase.thrift.ThriftMetrics&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.231">getMetrics</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
                                                                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -795,7 +788,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createTestTables</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.242">createTestTables</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;handler)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.236">createTestTables</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;handler)
                              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -809,7 +802,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>checkTableList</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.253">checkTableList</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;handler)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.247">checkTableList</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;handler)
                            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -823,7 +816,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>dropTestTables</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.257">dropTestTables</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;handler)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.251">dropTestTables</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;handler)
                            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -837,7 +830,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>doTestIncrements</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.273">doTestIncrements</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.267">doTestIncrements</a>()
                       throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -851,7 +844,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>doTestIncrements</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.282">doTestIncrements</a>(org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler&nbsp;handler)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.276">doTestIncrements</a>(org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler&nbsp;handler)
                              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -865,7 +858,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>doTestTableMutations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.321">doTestTableMutations</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.315">doTestTableMutations</a>()
                           throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Tests adding a series of Mutations and BatchMutations, including a
  delete mutation.  Also tests data retrieval, and getting back multiple
@@ -882,7 +875,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>doTestTableMutations</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.328">doTestTableMutations</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;handler)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.322">doTestTableMutations</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;handler)
                                  throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -896,7 +889,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>doTestTableTimestampsAndColumns</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.399">doTestTableTimestampsAndColumns</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.391">doTestTableTimestampsAndColumns</a>()
                                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Similar to testTableMutations(), except Mutations are applied with
  specific timestamps and data retrieval uses these timestamps to
@@ -913,7 +906,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>doTestTableScanners</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.479">doTestTableScanners</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.469">doTestTableScanners</a>()
                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Tests the four different scanner-opening methods (with and without
  a stoprow, with and without a timestamp).</div>
@@ -929,7 +922,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>doTestGetTableRegions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.600">doTestGetTableRegions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.589">doTestGetTableRegions</a>()
                            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">For HBASE-2556
  Tests for GetTableRegions</div>
@@ -945,7 +938,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>doTestGetTableRegions</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.607">doTestGetTableRegions</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;handler)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.596">doTestGetTableRegions</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;handler)
                                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -959,7 +952,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>doTestFilterRegistration</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.624">doTestFilterRegistration</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.613">doTestFilterRegistration</a>()
                               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -973,7 +966,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>doTestGetRegionInfo</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.636">doTestGetRegionInfo</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.625">doTestGetRegionInfo</a>()
                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -987,7 +980,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>doTestGetRegionInfo</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.643">doTestGetRegionInfo</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;handler)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.632">doTestGetRegionInfo</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;handler)
                                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1001,7 +994,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>doTestAppend</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.665">doTestAppend</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.652">doTestAppend</a>()
                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Appends the value to a cell and checks that the cell value is updated properly.</div>
 <dl>
@@ -1016,7 +1009,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>doTestCheckAndPut</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.699">doTestCheckAndPut</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.684">doTestCheckAndPut</a>()
                               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Check that checkAndPut fails if the cell does not exist, then put in the cell, then check that
  the checkAndPut succeeds.</div>
@@ -1032,7 +1025,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMetricsWithException</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.725">testMetricsWithException</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.710">testMetricsWithException</a>()
                               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1046,7 +1039,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testExceptionType</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.772">testExceptionType</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;handler,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.757">testExceptionType</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;handler,
                                org.apache.hadoop.hbase.thrift.ThriftMetrics&nbsp;metrics,
                                <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tTableName,
                                <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;rowkey,
@@ -1064,11 +1057,11 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getColumnDescriptors</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.ColumnDescriptor&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.798">getColumnDescriptors</a>()</pre>
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.ColumnDescriptor&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.782">getColumnDescriptors</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>a List of ColumnDescriptors for use in creating a table.  Has one
- default ColumnDescriptor and one ColumnDescriptor with fewer versions</dd>
+         default ColumnDescriptor and one ColumnDescriptor with fewer versions</dd>
 </dl>
 </li>
 </ul>
@@ -1078,7 +1071,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getColumnList</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.820">getColumnList</a>(boolean&nbsp;includeA,
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.804">getColumnList</a>(boolean&nbsp;includeA,
                                        boolean&nbsp;includeB)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1095,11 +1088,11 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMutations</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.Mutation&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.832">getMutations</a>()</pre>
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.Mutation&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.821">getMutations</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>a List of Mutations for a row, with columnA having valueA
- and columnB having valueB</dd>
+         and columnB having valueB</dd>
 </dl>
 </li>
 </ul>
@@ -1109,14 +1102,14 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getBatchMutations</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.BatchMutation&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.847">getBatchMutations</a>()</pre>
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.BatchMutation&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.835">getBatchMutations</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>a List of BatchMutations with the following effects:
- (rowA, columnA): delete
- (rowA, columnB): place valueC
- (rowB, columnA): place valueC
- (rowB, columnB): place valueD</dd>
+         (rowA, columnA): delete
+         (rowA, columnB): place valueC
+         (rowB, columnA): place valueC
+         (rowB, columnB): place valueD</dd>
 </dl>
 </li>
 </ul>
@@ -1126,7 +1119,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>closeScanner</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.876">closeScanner</a>(int&nbsp;scannerId,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.863">closeScanner</a>(int&nbsp;scannerId,
                           org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler&nbsp;handler)
                    throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Asserts that the passed scanner is exhausted, and then closes

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html b/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html
index befbce6..902d14b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html
@@ -373,7 +373,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>tableCreated</h4>
-<pre>private static volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.207">tableCreated</a></pre>
+<pre>private static volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.208">tableCreated</a></pre>
 </li>
 </ul>
 </li>
@@ -390,7 +390,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestThriftServerCmdLine</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.101">TestThriftServerCmdLine</a>(org.apache.hadoop.hbase.thrift.ThriftServerRunner.ImplType&nbsp;implType,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.102">TestThriftServerCmdLine</a>(org.apache.hadoop.hbase.thrift.ThriftServerRunner.ImplType&nbsp;implType,
                                boolean&nbsp;specifyFramed,
                                boolean&nbsp;specifyBindIP,
                                boolean&nbsp;specifyCompact)</pre>
@@ -419,7 +419,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getParametersString</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.110">getParametersString</a>()</pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.111">getParametersString</a>()</pre>
 </li>
 </ul>
 <a name="setUpBeforeClass--">
@@ -428,7 +428,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setUpBeforeClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.118">setUpBeforeClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.119">setUpBeforeClass</a>()
                              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -442,7 +442,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDownAfterClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.127">tearDownAfterClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.128">tearDownAfterClass</a>()
                                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -456,7 +456,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>startCmdLineThread</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.132">startCmdLineThread</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.133">startCmdLineThread</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</pre>
 </li>
 </ul>
 <a name="testRunThriftServer--">
@@ -465,7 +465,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRunThriftServer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.152">testRunThriftServer</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.153">testRunThriftServer</a>()
                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -479,7 +479,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>talkToThriftServer</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.209">talkToThriftServer</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.210">talkToThriftServer</a>()
                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -493,7 +493,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>stopCmdLineThread</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.237">stopCmdLineThread</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.238">stopCmdLineThread</a>()
                         throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/testdevapidocs/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html b/testdevapidocs/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html
index a02b86a..15adbd3 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1564">TestThriftHBaseServiceHandler.DelayingRegionObserver</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1559">TestThriftHBaseServiceHandler.DelayingRegionObserver</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver</pre>
 </li>
@@ -270,7 +270,7 @@ implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.had
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1565">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1560">LOG</a></pre>
 </li>
 </ul>
 <a name="delayMillis">
@@ -279,7 +279,7 @@ implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.had
 <ul class="blockListLast">
 <li class="blockList">
 <h4>delayMillis</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1567">delayMillis</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1562">delayMillis</a></pre>
 </li>
 </ul>
 </li>
@@ -296,7 +296,7 @@ implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.had
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DelayingRegionObserver</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1564">DelayingRegionObserver</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1559">DelayingRegionObserver</a>()</pre>
 </li>
 </ul>
 </li>
@@ -313,7 +313,7 @@ implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.had
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionObserver</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;org.apache.hadoop.hbase.coprocessor.RegionObserver&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1570">getRegionObserver</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;org.apache.hadoop.hbase.coprocessor.RegionObserver&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1565">getRegionObserver</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getRegionObserver</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.coprocessor.RegionCoprocessor</code></dd>
@@ -326,7 +326,7 @@ implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.had
 <ul class="blockList">
 <li class="blockList">
 <h4>start</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1575">start</a>(org.apache.hadoop.hbase.CoprocessorEnvironment&nbsp;e)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1570">start</a>(org.apache.hadoop.hbase.CoprocessorEnvironment&nbsp;e)
            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -342,7 +342,7 @@ implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.had
 <ul class="blockListLast">
 <li class="blockList">
 <h4>preGetOp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1581">preGetOp</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1576">preGetOp</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
                      org.apache.hadoop.hbase.client.Get&nbsp;get,
                      <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.Cell&gt;&nbsp;results)
               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/testdevapidocs/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html b/testdevapidocs/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html
index fa49894..0d7d9c9 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html
@@ -827,7 +827,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckAndPut</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.597">testCheckAndPut</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.595">testCheckAndPut</a>()
                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">check that checkAndPut fails if the cell does not exist, then put in the cell, then check
  that the checkAndPut succeeds.</div>
@@ -843,7 +843,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckAndDelete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.644">testCheckAndDelete</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.640">testCheckAndDelete</a>()
                         throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">check that checkAndDelete fails if the cell does not exist, then put in the cell, then
  check that the checkAndDelete succeeds.</div>
@@ -859,7 +859,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.687">testScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.683">testScan</a>()
               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -873,10 +873,10 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testLongLivedScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.740">testLongLivedScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.735">testLongLivedScan</a>()
                        throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Tests keeping a HBase scanner alive for long periods of time. Each call to getScannerRow()
- should reset the ConnectionCache timeout for the scanner's connection</div>
+ should reset the ConnectionCache timeout for the scanner's connection.</div>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
@@ -889,7 +889,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReverseScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.786">testReverseScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.781">testReverseScan</a>()
                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -903,7 +903,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanWithFilter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.835">testScanWithFilter</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.830">testScanWithFilter</a>()
                         throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -917,7 +917,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanWithColumnFamilyTimeRange</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.887">testScanWithColumnFamilyTimeRange</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.882">testScanWithColumnFamilyTimeRange</a>()
                                        throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -931,7 +931,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testSmallScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.948">testSmallScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.943">testSmallScan</a>()
                    throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -945,7 +945,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testPutTTL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.992">testPutTTL</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.987">testPutTTL</a>()
                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -959,7 +959,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>pad</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1048">pad</a>(int&nbsp;n,
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1043">pad</a>(int&nbsp;n,
                    byte&nbsp;pad)</pre>
 <div class="block">Padding numbers to make comparison of sort order easier in a for loop</div>
 <dl>
@@ -977,7 +977,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanWithBatchSize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1055">testScanWithBatchSize</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1054">testScanWithBatchSize</a>()
                            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -991,7 +991,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetScannerResults</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1114">testGetScannerResults</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1113">testGetScannerResults</a>()
                            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1005,7 +1005,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testFilterRegistration</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1185">testFilterRegistration</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1184">testFilterRegistration</a>()
                             throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1019,7 +1019,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMetrics</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1194">testMetrics</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1193">testMetrics</a>()
                  throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1033,7 +1033,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetrics</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.thrift.ThriftMetrics&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1219">getMetrics</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
+<pre>private static&nbsp;org.apache.hadoop.hbase.thrift.ThriftMetrics&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1218">getMetrics</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
                                                                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1047,7 +1047,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMetricsWithException</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1226">testMetricsWithException</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1225">testMetricsWithException</a>()
                               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1061,7 +1061,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testExceptionType</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1267">testExceptionType</a>(org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface&nbsp;handler,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1266">testExceptionType</a>(org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface&nbsp;handler,
                                org.apache.hadoop.hbase.thrift.ThriftMetrics&nbsp;metrics,
                                <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tTableName,
                                byte[]&nbsp;rowkey,
@@ -1074,7 +1074,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMetricsPrecision</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1297">testMetricsPrecision</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1296">testMetricsPrecision</a>()
                           throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">See HBASE-17611
 
@@ -1092,7 +1092,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testAttribute</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1344">testAttribute</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1343">testAttribute</a>()
                    throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1106,7 +1106,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMutateRow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1388">testMutateRow</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1385">testMutateRow</a>()
                    throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Put valueA to a row, make sure put has happened, then create a mutation object to put valueB
  and delete ValueA, then check that the row value is only valueB.</div>
@@ -1122,7 +1122,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testDurability</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1452">testDurability</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1447">testDurability</a>()
                     throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Create TPut, TDelete , TIncrement objects, set durability then call ThriftUtility
  functions to get Put , Delete and Increment respectively. Use getDurability to make sure
@@ -1139,7 +1139,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testCheckAndMutate</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1514">testCheckAndMutate</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1509">testCheckAndMutate</a>()
                         throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestReversedScannerCallable.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestReversedScannerCallable.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestReversedScannerCallable.html
index 4ebb52f..a928aa8 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestReversedScannerCallable.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestReversedScannerCallable.html
@@ -65,44 +65,41 @@
 <span class="sourceLineNo">057</span>    Configuration conf = Mockito.mock(Configuration.class);<a name="line.57"></a>
 <span class="sourceLineNo">058</span>    HRegionLocation regionLocation = Mockito.mock(HRegionLocation.class);<a name="line.58"></a>
 <span class="sourceLineNo">059</span>    ServerName serverName = Mockito.mock(ServerName.class);<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    HRegionInfo regionInfo = Mockito.mock(HRegionInfo.class);<a name="line.60"></a>
-<span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>    Mockito.when(connection.getConfiguration()).thenReturn(conf);<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    Mockito.when(regionLocations.size()).thenReturn(1);<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    Mockito.when(regionLocations.getRegionLocation(0)).thenReturn(regionLocation);<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    Mockito.when(regionLocation.getHostname()).thenReturn("localhost");<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    Mockito.when(regionLocation.getRegionInfo()).thenReturn(regionInfo);<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    Mockito.when(regionLocation.getServerName()).thenReturn(serverName);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    Mockito.when(regionInfo.containsRow(ROW_BEFORE)).thenReturn(true);<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    Mockito.when(scan.includeStartRow()).thenReturn(true);<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    Mockito.when(scan.getStartRow()).thenReturn(ROW);<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  }<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  @Test<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  public void testPrepareDoesNotUseCache() throws Exception {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    TableName tableName = TableName.valueOf("MyTable");<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    Mockito.when(connection.relocateRegion(tableName, ROW, 0)).thenReturn(regionLocations);<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>    ReversedScannerCallable callable =<a name="line.78"></a>
-<span class="sourceLineNo">079</span>        new ReversedScannerCallable(connection, tableName, scan, null, rpcFactory);<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    callable.prepare(true);<a name="line.80"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>    Mockito.when(connection.getConfiguration()).thenReturn(conf);<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    Mockito.when(regionLocations.size()).thenReturn(1);<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    Mockito.when(regionLocations.getRegionLocation(0)).thenReturn(regionLocation);<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    Mockito.when(regionLocation.getHostname()).thenReturn("localhost");<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    Mockito.when(regionLocation.getServerName()).thenReturn(serverName);<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    Mockito.when(scan.includeStartRow()).thenReturn(true);<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    Mockito.when(scan.getStartRow()).thenReturn(ROW);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  }<a name="line.68"></a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span>  @Test<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  public void testPrepareDoesNotUseCache() throws Exception {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    TableName tableName = TableName.valueOf("MyTable");<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    Mockito.when(connection.relocateRegion(tableName, ROW, 0)).thenReturn(regionLocations);<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>    ReversedScannerCallable callable =<a name="line.75"></a>
+<span class="sourceLineNo">076</span>        new ReversedScannerCallable(connection, tableName, scan, null, rpcFactory);<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    callable.prepare(true);<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>    Mockito.verify(connection).relocateRegion(tableName, ROW, 0);<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  }<a name="line.80"></a>
 <span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>    Mockito.verify(connection).relocateRegion(tableName, ROW, 0);<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  }<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>  @Test<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  public void testPrepareUsesCache() throws Exception {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    TableName tableName = TableName.valueOf("MyTable");<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    Mockito.when(connection.locateRegion(tableName, ROW, true, true, 0))<a name="line.88"></a>
-<span class="sourceLineNo">089</span>        .thenReturn(regionLocations);<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>    ReversedScannerCallable callable =<a name="line.91"></a>
-<span class="sourceLineNo">092</span>        new ReversedScannerCallable(connection, tableName, scan, null, rpcFactory);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    callable.prepare(false);<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>    Mockito.verify(connection).locateRegion(tableName, ROW, true, true, 0);<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  }<a name="line.96"></a>
-<span class="sourceLineNo">097</span>}<a name="line.97"></a>
+<span class="sourceLineNo">082</span>  @Test<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  public void testPrepareUsesCache() throws Exception {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    TableName tableName = TableName.valueOf("MyTable");<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    Mockito.when(connection.locateRegion(tableName, ROW, true, true, 0))<a name="line.85"></a>
+<span class="sourceLineNo">086</span>        .thenReturn(regionLocations);<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>    ReversedScannerCallable callable =<a name="line.88"></a>
+<span class="sourceLineNo">089</span>        new ReversedScannerCallable(connection, tableName, scan, null, rpcFactory);<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    callable.prepare(false);<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>    Mockito.verify(connection).locateRegion(tableName, ROW, true, true, 0);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  }<a name="line.93"></a>
+<span class="sourceLineNo">094</span>}<a name="line.94"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestCallQueue.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestCallQueue.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestCallQueue.html
index c13f117..a61a754 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestCallQueue.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestCallQueue.html
@@ -117,7 +117,7 @@
 <span class="sourceLineNo">109</span><a name="line.109"></a>
 <span class="sourceLineNo">110</span>  private static void verifyMetrics(ThriftMetrics metrics, String name, int expectValue)<a name="line.110"></a>
 <span class="sourceLineNo">111</span>      throws Exception { <a name="line.111"></a>
-<span class="sourceLineNo">112</span>      metricsHelper.assertCounter(name, expectValue, metrics.getSource());<a name="line.112"></a>
+<span class="sourceLineNo">112</span>    metricsHelper.assertCounter(name, expectValue, metrics.getSource());<a name="line.112"></a>
 <span class="sourceLineNo">113</span>  }<a name="line.113"></a>
 <span class="sourceLineNo">114</span><a name="line.114"></a>
 <span class="sourceLineNo">115</span>  private static Runnable createDummyRunnable() {<a name="line.115"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html
index df5e916..91193f1 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html
@@ -146,7 +146,7 @@
 <span class="sourceLineNo">138</span><a name="line.138"></a>
 <span class="sourceLineNo">139</span>    // wait up to 10s for the server to start<a name="line.139"></a>
 <span class="sourceLineNo">140</span>    for (int i = 0; i &lt; 100<a name="line.140"></a>
-<span class="sourceLineNo">141</span>        &amp;&amp; ( thriftServer.serverRunner == null ||  thriftServer.serverRunner.httpServer ==<a name="line.141"></a>
+<span class="sourceLineNo">141</span>        &amp;&amp; (thriftServer.serverRunner == null ||  thriftServer.serverRunner.httpServer ==<a name="line.141"></a>
 <span class="sourceLineNo">142</span>        null); i++) {<a name="line.142"></a>
 <span class="sourceLineNo">143</span>      Thread.sleep(100);<a name="line.143"></a>
 <span class="sourceLineNo">144</span>    }<a name="line.144"></a>


[30/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html
index 0c9e858..49b3b26 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.715">ThriftServerRunner.HBaseHandler</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.717">ThriftServerRunner.HBaseHandler</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <div class="block">The HBaseHandler is a glue object that connects Thrift RPC calls to the
@@ -721,7 +721,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>conf</h4>
-<pre>protected&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.716">conf</a></pre>
+<pre>protected&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.718">conf</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -730,7 +730,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>protected static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.717">LOG</a></pre>
+<pre>protected static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.719">LOG</a></pre>
 </li>
 </ul>
 <a name="nextScannerId">
@@ -739,7 +739,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>nextScannerId</h4>
-<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.720">nextScannerId</a></pre>
+<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.722">nextScannerId</a></pre>
 </li>
 </ul>
 <a name="scannerMap">
@@ -748,7 +748,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>scannerMap</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>,<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ResultScannerWrapper</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.721">scannerMap</a></pre>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>,<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ResultScannerWrapper</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.723">scannerMap</a></pre>
 </li>
 </ul>
 <a name="metrics">
@@ -757,7 +757,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>metrics</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.722">metrics</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.724">metrics</a></pre>
 </li>
 </ul>
 <a name="connectionCache">
@@ -766,7 +766,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>connectionCache</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/ConnectionCache.html" title="class in org.apache.hadoop.hbase.util">ConnectionCache</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.724">connectionCache</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/ConnectionCache.html" title="class in org.apache.hadoop.hbase.util">ConnectionCache</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.726">connectionCache</a></pre>
 </li>
 </ul>
 <a name="coalescer">
@@ -775,7 +775,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>coalescer</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.html" title="class in org.apache.hadoop.hbase.thrift">IncrementCoalescer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.725">coalescer</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.html" title="class in org.apache.hadoop.hbase.thrift">IncrementCoalescer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.727">coalescer</a></pre>
 </li>
 </ul>
 <a name="CLEANUP_INTERVAL">
@@ -784,7 +784,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>CLEANUP_INTERVAL</h4>
-<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.727">CLEANUP_INTERVAL</a></pre>
+<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.729">CLEANUP_INTERVAL</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler.CLEANUP_INTERVAL">Constant Field Values</a></dd>
@@ -797,7 +797,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MAX_IDLETIME</h4>
-<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.728">MAX_IDLETIME</a></pre>
+<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.730">MAX_IDLETIME</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler.MAX_IDLETIME">Constant Field Values</a></dd>
@@ -818,7 +818,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HBaseHandler</h4>
-<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.799">HBaseHandler</a>(org.apache.hadoop.conf.Configuration&nbsp;c,
+<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.800">HBaseHandler</a>(org.apache.hadoop.conf.Configuration&nbsp;c,
                        <a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a>&nbsp;userProvider)
                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -841,7 +841,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllColumns</h4>
-<pre>byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.736">getAllColumns</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;table)
+<pre>byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.738">getAllColumns</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;table)
                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Returns a list of all the column families for a given Table.</div>
 <dl>
@@ -858,7 +858,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTable</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.754">getTable</a>(byte[]&nbsp;tableName)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.756">getTable</a>(byte[]&nbsp;tableName)
                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Creates and returns a Table instance from a given table name.</div>
 <dl>
@@ -867,7 +867,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Table object</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if getting the table fails</dd>
 </dl>
 </li>
 </ul>
@@ -877,7 +877,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTable</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.760">getTable</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.761">getTable</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName)
                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -891,13 +891,13 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>addScanner</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.771">addScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a>&nbsp;scanner,
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.772">addScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a>&nbsp;scanner,
                          boolean&nbsp;sortColumns)</pre>
 <div class="block">Assigns a unique ID to the scanner and adds the mapping to an internal
  hash-map.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>scanner</code> - </dd>
+<dd><code>scanner</code> - the <a href="../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client"><code>ResultScanner</code></a> to add</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>integer scanner id</dd>
 </dl>
@@ -909,11 +909,11 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanner</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ResultScannerWrapper</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.784">getScanner</a>(int&nbsp;id)</pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ResultScannerWrapper</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.785">getScanner</a>(int&nbsp;id)</pre>
 <div class="block">Returns the scanner associated with the specified ID.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>id</code> - </dd>
+<dd><code>id</code> - the ID of the scanner to get</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>a Scanner, or null if ID was invalid.</dd>
 </dl>
@@ -925,12 +925,12 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>removeScanner</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ResultScannerWrapper</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.795">removeScanner</a>(int&nbsp;id)</pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ResultScannerWrapper</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.796">removeScanner</a>(int&nbsp;id)</pre>
 <div class="block">Removes the scanner associated with the specified ID from the internal
  id-&gt;scanner hash-map.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>id</code> - </dd>
+<dd><code>id</code> - the ID of the scanner to remove</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>a Scanner, or null if ID was invalid.</dd>
 </dl>
@@ -942,7 +942,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getAdmin</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.814">getAdmin</a>()
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.815">getAdmin</a>()
                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Obtain HBaseAdmin. Creates the instance if it is not already created.</div>
 <dl>
@@ -957,7 +957,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setEffectiveUser</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.818">setEffectiveUser</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;effectiveUser)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.819">setEffectiveUser</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;effectiveUser)</pre>
 </li>
 </ul>
 <a name="enableTable-java.nio.ByteBuffer-">
@@ -966,7 +966,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>enableTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.823">enableTable</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.824">enableTable</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName)
                  throws org.apache.hadoop.hbase.thrift.generated.IOError</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</code></span></div>
 <div class="block">Brings a table on-line (enables it)</div>
@@ -986,7 +986,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>disableTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.833">disableTable</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.834">disableTable</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName)
                   throws org.apache.hadoop.hbase.thrift.generated.IOError</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</code></span></div>
 <div class="block">Disables a table (takes it off-line) If it is being served, the master
@@ -1007,7 +1007,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>isTableEnabled</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.843">isTableEnabled</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.844">isTableEnabled</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName)
                        throws org.apache.hadoop.hbase.thrift.generated.IOError</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1027,7 +1027,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>compact</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.855">compact</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableNameOrRegionName)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.856">compact</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableNameOrRegionName)
              throws org.apache.hadoop.hbase.thrift.generated.IOError</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1043,7 +1043,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>majorCompact</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.872">majorCompact</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableNameOrRegionName)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.873">majorCompact</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableNameOrRegionName)
                   throws org.apache.hadoop.hbase.thrift.generated.IOError</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1059,7 +1059,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableNames</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.887">getTableNames</a>()
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.888">getTableNames</a>()
                                throws org.apache.hadoop.hbase.thrift.generated.IOError</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</code></span></div>
 <div class="block">List all the userspace tables.</div>
@@ -1079,7 +1079,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableRegions</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRegionInfo&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.905">getTableRegions</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName)
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRegionInfo&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.906">getTableRegions</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName)
                                                                            throws org.apache.hadoop.hbase.thrift.generated.IOError</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</code></span></div>
 <div class="block">List the regions associated with a table.</div>
@@ -1101,7 +1101,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TCell&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.935">get</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TCell&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.936">get</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                                                                 <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;row,
                                                                 <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;column,
                                                                 <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;attributes)
@@ -1130,7 +1130,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TCell&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.956">get</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TCell&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.957">get</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                                                                    <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;row,
                                                                    byte[]&nbsp;family,
                                                                    byte[]&nbsp;qualifier,
@@ -1153,7 +1153,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getVer</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TCell&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.982">getVer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TCell&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.983">getVer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                                                                    <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;row,
                                                                    <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;column,
                                                                    int&nbsp;numVersions,
@@ -1184,7 +1184,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getVer</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TCell&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1003">getVer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TCell&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1004">getVer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                                                                    <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;row,
                                                                    byte[]&nbsp;family,
                                                                    byte[]&nbsp;qualifier,
@@ -1209,7 +1209,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getVerTs</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TCell&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1028">getVerTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TCell&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1029">getVerTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                                                                      <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;row,
                                                                      <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;column,
                                                                      long&nbsp;timestamp,
@@ -1243,7 +1243,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getVerTs</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TCell&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1048">getVerTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TCell&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1049">getVerTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                                                                         <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;row,
                                                                         byte[]&nbsp;family,
                                                                         byte[]&nbsp;qualifier,
@@ -1268,7 +1268,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getRow</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1075">getRow</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1076">getRow</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                                                                         <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;row,
                                                                         <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;attributes)
                                                                  throws org.apache.hadoop.hbase.thrift.generated.IOError</pre>
@@ -1295,7 +1295,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowWithColumns</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1083">getRowWithColumns</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1084">getRowWithColumns</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                                                                                    <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;row,
                                                                                    <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;columns,
                                                                                    <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;attributes)
@@ -1324,7 +1324,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowTs</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1093">getRowTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1094">getRowTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                                                                           <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;row,
                                                                           long&nbsp;timestamp,
                                                                           <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;attributes)
@@ -1353,7 +1353,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowWithColumnsTs</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1100">getRowWithColumnsTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1101">getRowWithColumnsTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                                                                                      <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;row,
                                                                                      <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;columns,
                                                                                      long&nbsp;timestamp,
@@ -1383,7 +1383,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getRows</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1136">getRows</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1137">getRows</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                                                                          <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;rows,
                                                                          <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;attributes)
                                                                   throws org.apache.hadoop.hbase.thrift.generated.IOError</pre>
@@ -1410,7 +1410,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowsWithColumns</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1146">getRowsWithColumns</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1147">getRowsWithColumns</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                                                                                     <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;rows,
                                                                                     <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;columns,
                                                                                     <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;attributes)
@@ -1439,7 +1439,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowsTs</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1156">getRowsTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1157">getRowsTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                                                                            <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;rows,
                                                                            long&nbsp;timestamp,
                                                                            <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;attributes)
@@ -1468,7 +1468,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowsWithColumnsTs</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1165">getRowsWithColumnsTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1166">getRowsWithColumnsTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                                                                                       <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;rows,
                                                                                       <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;columns,
                                                                                       long&nbsp;timestamp,
@@ -1498,7 +1498,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteAll</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1205">deleteAll</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1206">deleteAll</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                       <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;row,
                       <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;column,
                       <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;attributes)
@@ -1524,7 +1524,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteAllTs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1214">deleteAllTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1215">deleteAllTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                         <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;row,
                         <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;column,
                         long&nbsp;timestamp,
@@ -1553,7 +1553,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteAllRow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1240">deleteAllRow</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1241">deleteAllRow</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                          <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;row,
                          <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;attributes)
                   throws org.apache.hadoop.hbase.thrift.generated.IOError</pre>
@@ -1577,7 +1577,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteAllRowTs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1247">deleteAllRowTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1248">deleteAllRowTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                            <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;row,
                            long&nbsp;timestamp,
                            <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;attributes)
@@ -1604,7 +1604,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1265">createTable</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;in_tableName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1266">createTable</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;in_tableName,
                         <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.ColumnDescriptor&gt;&nbsp;columnFamilies)
                  throws org.apache.hadoop.hbase.thrift.generated.IOError,
                         org.apache.hadoop.hbase.thrift.generated.IllegalArgument,
@@ -1633,7 +1633,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableName</h4>
-<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1288">getTableName</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buffer)</pre>
+<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1289">getTableName</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buffer)</pre>
 </li>
 </ul>
 <a name="deleteTable-java.nio.ByteBuffer-">
@@ -1642,7 +1642,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1293">deleteTable</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;in_tableName)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1294">deleteTable</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;in_tableName)
                  throws org.apache.hadoop.hbase.thrift.generated.IOError</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</code></span></div>
 <div class="block">Deletes a table</div>
@@ -1663,7 +1663,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>mutateRow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1310">mutateRow</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1311">mutateRow</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                       <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;row,
                       <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.Mutation&gt;&nbsp;mutations,
                       <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;attributes)
@@ -1694,7 +1694,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>mutateRowTs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1318">mutateRowTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1319">mutateRowTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                         <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;row,
                         <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.Mutation&gt;&nbsp;mutations,
                         long&nbsp;timestamp,
@@ -1727,7 +1727,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>mutateRows</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1380">mutateRows</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1383">mutateRows</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                        <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.BatchMutation&gt;&nbsp;rowBatches,
                        <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;attributes)
                 throws org.apache.hadoop.hbase.thrift.generated.IOError,
@@ -1758,7 +1758,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>mutateRowsTs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1387">mutateRowsTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1390">mutateRowsTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                          <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.BatchMutation&gt;&nbsp;rowBatches,
                          long&nbsp;timestamp,
                          <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;attributes)
@@ -1791,7 +1791,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>atomicIncrement</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1463">atomicIncrement</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1470">atomicIncrement</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                             <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;row,
                             <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;column,
                             long&nbsp;amount)
@@ -1821,7 +1821,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>atomicIncrement</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1473">atomicIncrement</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1480">atomicIncrement</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                                <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;row,
                                byte[]&nbsp;family,
                                byte[]&nbsp;qualifier,
@@ -1843,7 +1843,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>scannerClose</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1490">scannerClose</a>(int&nbsp;id)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1497">scannerClose</a>(int&nbsp;id)
                   throws org.apache.hadoop.hbase.thrift.generated.IOError,
                          org.apache.hadoop.hbase.thrift.generated.IllegalArgument</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</code></span></div>
@@ -1865,7 +1865,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>scannerGetList</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1503">scannerGetList</a>(int&nbsp;id,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1510">scannerGetList</a>(int&nbsp;id,
                                                                                 int&nbsp;nbRows)
                                                                          throws org.apache.hadoop.hbase.thrift.generated.IllegalArgument,
                                                                                 org.apache.hadoop.hbase.thrift.generated.IOError</pre>
@@ -1894,7 +1894,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>scannerGet</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1527">scannerGet</a>(int&nbsp;id)
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1534">scannerGet</a>(int&nbsp;id)
                                                                      throws org.apache.hadoop.hbase.thrift.generated.IllegalArgument,
                                                                             org.apache.hadoop.hbase.thrift.generated.IOError</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</code></span></div>
@@ -1921,7 +1921,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>scannerOpenWithScan</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1532">scannerOpenWithScan</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1539">scannerOpenWithScan</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                                org.apache.hadoop.hbase.thrift.generated.TScan&nbsp;tScan,
                                <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;attributes)
                         throws org.apache.hadoop.hbase.thrift.generated.IOError</pre>
@@ -1946,7 +1946,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>scannerOpen</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1587">scannerOpen</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1594">scannerOpen</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                        <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;startRow,
                        <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;columns,
                        <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;attributes)
@@ -1978,7 +1978,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>scannerOpenWithStop</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1616">scannerOpenWithStop</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1623">scannerOpenWithStop</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                                <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;startRow,
                                <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;stopRow,
                                <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;columns,
@@ -2016,7 +2016,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>scannerOpenWithPrefix</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1646">scannerOpenWithPrefix</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1653">scannerOpenWithPrefix</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                                  <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;startAndPrefix,
                                  <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;columns,
                                  <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;attributes)
@@ -2047,7 +2047,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>scannerOpenTs</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1680">scannerOpenTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1687">scannerOpenTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                          <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;startRow,
                          <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;columns,
                          long&nbsp;timestamp,
@@ -2084,7 +2084,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>scannerOpenWithStopTs</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1710">scannerOpenWithStopTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1717">scannerOpenWithStopTs</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName,
                                  <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;startRow,
                                  <a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;stopRow,
                                  <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;columns,
@@ -2125,7 +2125,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getColumnDescriptors</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>,org.apache.hadoop.hbase.thrift.generated.ColumnDescriptor&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1742">getColumnDescriptors</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName)
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>,org.apache.hadoop.hbase.thrift.generated.ColumnDescriptor&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1749">getColumnDescriptors</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;tableName)
                                                                                                throws org.apache.hadoop.hbase.thrift.generated.IOError,
                                                                                                       org.apache.thrift.TException</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</code></span></div>
@@ -2149,7 +2149,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>closeTable</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1765">closeTable</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;table)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1772">closeTable</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;table)
                  throws org.apache.hadoop.hbase.thrift.generated.IOError</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2163,7 +2163,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionInfo</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.thrift.generated.TRegionInfo&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1778">getRegionInfo</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;searchRow)
+<pre>public&nbsp;org.apache.hadoop.hbase.thrift.generated.TRegionInfo&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.1784">getRegionInfo</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in 

<TRUNCATED>

[20/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html
index 4515e88..4f105d5 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html
@@ -125,259 +125,285 @@
 <span class="sourceLineNo">117</span><a name="line.117"></a>
 <span class="sourceLineNo">118</span>    @Override<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    public boolean equals(Object obj) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      if (this == obj) return true;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      if (obj == null) return false;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      if (getClass() != obj.getClass()) return false;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      FullyQualifiedRow other = (FullyQualifiedRow) obj;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      if (!Arrays.equals(family, other.family)) return false;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      if (!Arrays.equals(qualifier, other.qualifier)) return false;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      if (!Arrays.equals(rowKey, other.rowKey)) return false;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      if (!Arrays.equals(table, other.table)) return false;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      return true;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  static class DaemonThreadFactory implements ThreadFactory {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    static final AtomicInteger poolNumber = new AtomicInteger(1);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    final ThreadGroup group;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    final AtomicInteger threadNumber = new AtomicInteger(1);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    final String namePrefix;<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>    DaemonThreadFactory() {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      SecurityManager s = System.getSecurityManager();<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      group = (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup();<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      namePrefix = "ICV-" + poolNumber.getAndIncrement() + "-thread-";<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>    public Thread newThread(Runnable r) {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      Thread t = new Thread(group, r, namePrefix + threadNumber.getAndIncrement(), 0);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      if (!t.isDaemon()) t.setDaemon(true);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      if (t.getPriority() != Thread.NORM_PRIORITY) t.setPriority(Thread.NORM_PRIORITY);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      return t;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  }<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  private final LongAdder failedIncrements = new LongAdder();<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  private final LongAdder successfulCoalescings = new LongAdder();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  private final LongAdder totalIncrements = new LongAdder();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  private final ConcurrentMap&lt;FullyQualifiedRow, Long&gt; countersMap =<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      new ConcurrentHashMap&lt;&gt;(100000, 0.75f, 1500);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  private final ThreadPoolExecutor pool;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  private final HBaseHandler handler;<a name="line.159"></a>
+<span class="sourceLineNo">120</span>      if (this == obj) {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>        return true;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      }<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      if (obj == null) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>        return false;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      if (getClass() != obj.getClass()) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>        return false;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      }<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>      FullyQualifiedRow other = (FullyQualifiedRow) obj;<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>      if (!Arrays.equals(family, other.family)) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>        return false;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      }<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      if (!Arrays.equals(qualifier, other.qualifier)) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>        return false;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      }<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      if (!Arrays.equals(rowKey, other.rowKey)) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        return false;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      }<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      if (!Arrays.equals(table, other.table)) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>        return false;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      }<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      return true;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  }<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  static class DaemonThreadFactory implements ThreadFactory {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    static final AtomicInteger poolNumber = new AtomicInteger(1);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    final ThreadGroup group;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    final AtomicInteger threadNumber = new AtomicInteger(1);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    final String namePrefix;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>    DaemonThreadFactory() {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      SecurityManager s = System.getSecurityManager();<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      group = (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      namePrefix = "ICV-" + poolNumber.getAndIncrement() + "-thread-";<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
 <span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  private int maxQueueSize = 500000;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  private static final int CORE_POOL_SIZE = 1;<a name="line.162"></a>
+<span class="sourceLineNo">161</span>    public Thread newThread(Runnable r) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      Thread t = new Thread(group, r, namePrefix + threadNumber.getAndIncrement(), 0);<a name="line.162"></a>
 <span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  private static final Logger LOG = LoggerFactory.getLogger(FullyQualifiedRow.class);<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  @SuppressWarnings("deprecation")<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  public IncrementCoalescer(HBaseHandler hand) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    this.handler = hand;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    LinkedBlockingQueue&lt;Runnable&gt; queue = new LinkedBlockingQueue&lt;&gt;();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    pool =<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        new ThreadPoolExecutor(CORE_POOL_SIZE, CORE_POOL_SIZE, 50, TimeUnit.MILLISECONDS, queue,<a name="line.171"></a>
-<span class="sourceLineNo">172</span>            Threads.newDaemonThreadFactory("IncrementCoalescer"));<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>    MBeans.register("thrift", "Thrift", this);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  }<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>  public boolean queueIncrement(TIncrement inc) throws TException {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    if (!canQueue()) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      failedIncrements.increment();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      return false;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    return internalQueueTincrement(inc);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  public boolean queueIncrements(List&lt;TIncrement&gt; incs) throws TException {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    if (!canQueue()) {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      failedIncrements.increment();<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      return false;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>    for (TIncrement tinc : incs) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      internalQueueTincrement(tinc);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    }<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    return true;<a name="line.194"></a>
+<span class="sourceLineNo">164</span>      if (!t.isDaemon()) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        t.setDaemon(true);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      if (t.getPriority() != Thread.NORM_PRIORITY) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        t.setPriority(Thread.NORM_PRIORITY);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      }<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>      return t;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  }<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>  private final LongAdder failedIncrements = new LongAdder();<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  private final LongAdder successfulCoalescings = new LongAdder();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  private final LongAdder totalIncrements = new LongAdder();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  private final ConcurrentMap&lt;FullyQualifiedRow, Long&gt; countersMap =<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      new ConcurrentHashMap&lt;&gt;(100000, 0.75f, 1500);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  private final ThreadPoolExecutor pool;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  private final HBaseHandler handler;<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  private int maxQueueSize = 500000;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  private static final int CORE_POOL_SIZE = 1;<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  private static final Logger LOG = LoggerFactory.getLogger(FullyQualifiedRow.class);<a name="line.186"></a>
+<span class="sourceLineNo">187</span><a name="line.187"></a>
+<span class="sourceLineNo">188</span>  @SuppressWarnings("deprecation")<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  public IncrementCoalescer(HBaseHandler hand) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    this.handler = hand;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    LinkedBlockingQueue&lt;Runnable&gt; queue = new LinkedBlockingQueue&lt;&gt;();<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    pool =<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        new ThreadPoolExecutor(CORE_POOL_SIZE, CORE_POOL_SIZE, 50, TimeUnit.MILLISECONDS, queue,<a name="line.193"></a>
+<span class="sourceLineNo">194</span>            Threads.newDaemonThreadFactory("IncrementCoalescer"));<a name="line.194"></a>
 <span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>  }<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>  private boolean internalQueueTincrement(TIncrement inc) throws TException {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    byte[][] famAndQf = CellUtil.parseColumn(inc.getColumn());<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    if (famAndQf.length != 2) return false;<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>    return internalQueueIncrement(inc.getTable(), inc.getRow(), famAndQf[0], famAndQf[1],<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      inc.getAmmount());<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  }<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>  private boolean internalQueueIncrement(byte[] tableName, byte[] rowKey, byte[] fam,<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      byte[] qual, long ammount) throws TException {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    int countersMapSize = countersMap.size();<a name="line.208"></a>
-<span class="sourceLineNo">209</span><a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>    //Make sure that the number of threads is scaled.<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    dynamicallySetCoreSize(countersMapSize);<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>    totalIncrements.increment();<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>    FullyQualifiedRow key = new FullyQualifiedRow(tableName, rowKey, fam, qual);<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>    long currentAmount = ammount;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    // Spin until able to insert the value back without collisions<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    while (true) {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      Long value = countersMap.remove(key);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      if (value == null) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>        // There was nothing there, create a new value<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        value = Long.valueOf(currentAmount);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      } else {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>        value += currentAmount;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>        successfulCoalescings.increment();<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      }<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      // Try to put the value, only if there was none<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      Long oldValue = countersMap.putIfAbsent(key, value);<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      if (oldValue == null) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        // We were able to put it in, we're done<a name="line.232"></a>
-<span class="sourceLineNo">233</span>        break;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      // Someone else was able to put a value in, so let's remember our<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      // current value (plus what we picked up) and retry to add it in<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      currentAmount = value;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    }<a name="line.238"></a>
+<span class="sourceLineNo">196</span>    MBeans.register("thrift", "Thrift", this);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  }<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>  public boolean queueIncrement(TIncrement inc) throws TException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    if (!canQueue()) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      failedIncrements.increment();<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      return false;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    return internalQueueTincrement(inc);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  }<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>  public boolean queueIncrements(List&lt;TIncrement&gt; incs) throws TException {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    if (!canQueue()) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      failedIncrements.increment();<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      return false;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    }<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>    for (TIncrement tinc : incs) {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      internalQueueTincrement(tinc);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>    return true;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  private boolean internalQueueTincrement(TIncrement inc) throws TException {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    byte[][] famAndQf = CellUtil.parseColumn(inc.getColumn());<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>    if (famAndQf.length != 2) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      return false;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    }<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>    return internalQueueIncrement(inc.getTable(), inc.getRow(), famAndQf[0], famAndQf[1],<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      inc.getAmmount());<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>  private boolean internalQueueIncrement(byte[] tableName, byte[] rowKey, byte[] fam,<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      byte[] qual, long ammount) throws TException {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    int countersMapSize = countersMap.size();<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    //Make sure that the number of threads is scaled.<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    dynamicallySetCoreSize(countersMapSize);<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>    totalIncrements.increment();<a name="line.238"></a>
 <span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>    // We limit the size of the queue simply because all we need is a<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    // notification that something needs to be incremented. No need<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    // for millions of callables that mean the same thing.<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    if (pool.getQueue().size() &lt;= 1000) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      // queue it up<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      Callable&lt;Integer&gt; callable = createIncCallable();<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      pool.submit(callable);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    }<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>    return true;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  public boolean canQueue() {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    return countersMap.size() &lt; maxQueueSize;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>  private Callable&lt;Integer&gt; createIncCallable() {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    return new Callable&lt;Integer&gt;() {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      @Override<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      public Integer call() throws Exception {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        int failures = 0;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        Set&lt;FullyQualifiedRow&gt; keys = countersMap.keySet();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        for (FullyQualifiedRow row : keys) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>          Long counter = countersMap.remove(row);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>          if (counter == null) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>            continue;<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>          Table table = null;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>          try {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>            table = handler.getTable(row.getTable());<a name="line.269"></a>
-<span class="sourceLineNo">270</span>            if (failures &gt; 2) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>              throw new IOException("Auto-Fail rest of ICVs");<a name="line.271"></a>
-<span class="sourceLineNo">272</span>            }<a name="line.272"></a>
-<span class="sourceLineNo">273</span>            table.incrementColumnValue(row.getRowKey(), row.getFamily(), row.getQualifier(),<a name="line.273"></a>
-<span class="sourceLineNo">274</span>              counter);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>          } catch (IOException e) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>            // log failure of increment<a name="line.276"></a>
-<span class="sourceLineNo">277</span>            failures++;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>            LOG.error("FAILED_ICV: " + Bytes.toString(row.getTable()) + ", "<a name="line.278"></a>
-<span class="sourceLineNo">279</span>                + Bytes.toStringBinary(row.getRowKey()) + ", "<a name="line.279"></a>
-<span class="sourceLineNo">280</span>                + Bytes.toStringBinary(row.getFamily()) + ", "<a name="line.280"></a>
-<span class="sourceLineNo">281</span>                + Bytes.toStringBinary(row.getQualifier()) + ", " + counter, e);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          } finally{<a name="line.282"></a>
-<span class="sourceLineNo">283</span>            if(table != null){<a name="line.283"></a>
-<span class="sourceLineNo">284</span>              table.close();<a name="line.284"></a>
-<span class="sourceLineNo">285</span>            }<a name="line.285"></a>
-<span class="sourceLineNo">286</span>          }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        }<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        return failures;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      }<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    };<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  /**<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * This method samples the incoming requests and, if selected, will check if<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * the corePoolSize should be changed.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * @param countersMapSize<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   */<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  private void dynamicallySetCoreSize(int countersMapSize) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    // Here we are using countersMapSize as a random number, meaning this<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    // could be a Random object<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    if (countersMapSize % 10 != 0) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      return;<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    double currentRatio = (double) countersMapSize / (double) maxQueueSize;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    int newValue = 1;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    if (currentRatio &lt; 0.1) {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      // it's 1<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    } else if (currentRatio &lt; 0.3) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      newValue = 2;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    } else if (currentRatio &lt; 0.5) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      newValue = 4;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    } else if (currentRatio &lt; 0.7) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      newValue = 8;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    } else if (currentRatio &lt; 0.9) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      newValue = 14;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    } else {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      newValue = 22;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    if (pool.getCorePoolSize() != newValue) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      pool.setCorePoolSize(newValue);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    }<a name="line.321"></a>
-<span class="sourceLineNo">322</span>  }<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>  // MBean get/set methods<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public int getQueueSize() {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    return pool.getQueue().size();<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  }<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  public int getMaxQueueSize() {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    return this.maxQueueSize;<a name="line.329"></a>
-<span class="sourceLineNo">330</span>  }<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  public void setMaxQueueSize(int newSize) {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    this.maxQueueSize = newSize;<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>  public long getPoolCompletedTaskCount() {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    return pool.getCompletedTaskCount();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  public long getPoolTaskCount() {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    return pool.getTaskCount();<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  public int getPoolLargestPoolSize() {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    return pool.getLargestPoolSize();<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  public int getCorePoolSize() {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    return pool.getCorePoolSize();<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  public void setCorePoolSize(int newCoreSize) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    pool.setCorePoolSize(newCoreSize);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  }<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  public int getMaxPoolSize() {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    return pool.getMaximumPoolSize();<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  }<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public void setMaxPoolSize(int newMaxSize) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    pool.setMaximumPoolSize(newMaxSize);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  public long getFailedIncrements() {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    return failedIncrements.sum();<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  }<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>  public long getSuccessfulCoalescings() {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    return successfulCoalescings.sum();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  public long getTotalIncrements() {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    return totalIncrements.sum();<a name="line.365"></a>
+<span class="sourceLineNo">240</span>    FullyQualifiedRow key = new FullyQualifiedRow(tableName, rowKey, fam, qual);<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>    long currentAmount = ammount;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    // Spin until able to insert the value back without collisions<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    while (true) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      Long value = countersMap.remove(key);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      if (value == null) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        // There was nothing there, create a new value<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        value = Long.valueOf(currentAmount);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      } else {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        value += currentAmount;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        successfulCoalescings.increment();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      }<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      // Try to put the value, only if there was none<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      Long oldValue = countersMap.putIfAbsent(key, value);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      if (oldValue == null) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        // We were able to put it in, we're done<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        break;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      }<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      // Someone else was able to put a value in, so let's remember our<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      // current value (plus what we picked up) and retry to add it in<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      currentAmount = value;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>    // We limit the size of the queue simply because all we need is a<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    // notification that something needs to be incremented. No need<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    // for millions of callables that mean the same thing.<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    if (pool.getQueue().size() &lt;= 1000) {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      // queue it up<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      Callable&lt;Integer&gt; callable = createIncCallable();<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      pool.submit(callable);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    }<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    return true;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public boolean canQueue() {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    return countersMap.size() &lt; maxQueueSize;<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  private Callable&lt;Integer&gt; createIncCallable() {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    return new Callable&lt;Integer&gt;() {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      @Override<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      public Integer call() throws Exception {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>        int failures = 0;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        Set&lt;FullyQualifiedRow&gt; keys = countersMap.keySet();<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        for (FullyQualifiedRow row : keys) {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          Long counter = countersMap.remove(row);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          if (counter == null) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>            continue;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>          }<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          Table table = null;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          try {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            table = handler.getTable(row.getTable());<a name="line.293"></a>
+<span class="sourceLineNo">294</span>            if (failures &gt; 2) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>              throw new IOException("Auto-Fail rest of ICVs");<a name="line.295"></a>
+<span class="sourceLineNo">296</span>            }<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            table.incrementColumnValue(row.getRowKey(), row.getFamily(), row.getQualifier(),<a name="line.297"></a>
+<span class="sourceLineNo">298</span>              counter);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          } catch (IOException e) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>            // log failure of increment<a name="line.300"></a>
+<span class="sourceLineNo">301</span>            failures++;<a name="line.301"></a>
+<span class="sourceLineNo">302</span>            LOG.error("FAILED_ICV: " + Bytes.toString(row.getTable()) + ", "<a name="line.302"></a>
+<span class="sourceLineNo">303</span>                + Bytes.toStringBinary(row.getRowKey()) + ", "<a name="line.303"></a>
+<span class="sourceLineNo">304</span>                + Bytes.toStringBinary(row.getFamily()) + ", "<a name="line.304"></a>
+<span class="sourceLineNo">305</span>                + Bytes.toStringBinary(row.getQualifier()) + ", " + counter, e);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          } finally{<a name="line.306"></a>
+<span class="sourceLineNo">307</span>            if(table != null){<a name="line.307"></a>
+<span class="sourceLineNo">308</span>              table.close();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>            }<a name="line.309"></a>
+<span class="sourceLineNo">310</span>          }<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        return failures;<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      }<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    };<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  }<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span>  /**<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * This method samples the incoming requests and, if selected, will check if<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * the corePoolSize should be changed.<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   * @param countersMapSize the size of the counters map<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   */<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  private void dynamicallySetCoreSize(int countersMapSize) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    // Here we are using countersMapSize as a random number, meaning this<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    // could be a Random object<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    if (countersMapSize % 10 != 0) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      return;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    }<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    double currentRatio = (double) countersMapSize / (double) maxQueueSize;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    int newValue;<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>    if (currentRatio &lt; 0.1) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      newValue = 1;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    } else if (currentRatio &lt; 0.3) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      newValue = 2;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    } else if (currentRatio &lt; 0.5) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      newValue = 4;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    } else if (currentRatio &lt; 0.7) {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      newValue = 8;<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    } else if (currentRatio &lt; 0.9) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      newValue = 14;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    } else {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      newValue = 22;<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
+<span class="sourceLineNo">344</span><a name="line.344"></a>
+<span class="sourceLineNo">345</span>    if (pool.getCorePoolSize() != newValue) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      pool.setCorePoolSize(newValue);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  // MBean get/set methods<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  public int getQueueSize() {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    return pool.getQueue().size();<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span>  public int getMaxQueueSize() {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    return this.maxQueueSize;<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  public void setMaxQueueSize(int newSize) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    this.maxQueueSize = newSize;<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  }<a name="line.359"></a>
+<span class="sourceLineNo">360</span><a name="line.360"></a>
+<span class="sourceLineNo">361</span>  public long getPoolCompletedTaskCount() {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    return pool.getCompletedTaskCount();<a name="line.362"></a>
+<span class="sourceLineNo">363</span>  }<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  public long getPoolTaskCount() {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    return pool.getTaskCount();<a name="line.365"></a>
 <span class="sourceLineNo">366</span>  }<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>  public long getCountersMapSize() {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    return countersMap.size();<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>}<a name="line.372"></a>
+<span class="sourceLineNo">367</span>  public int getPoolLargestPoolSize() {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    return pool.getLargestPoolSize();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  }<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  public int getCorePoolSize() {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    return pool.getCorePoolSize();<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  public void setCorePoolSize(int newCoreSize) {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    pool.setCorePoolSize(newCoreSize);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  }<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  public int getMaxPoolSize() {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    return pool.getMaximumPoolSize();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  }<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  public void setMaxPoolSize(int newMaxSize) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    pool.setMaximumPoolSize(newMaxSize);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  public long getFailedIncrements() {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    return failedIncrements.sum();<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  public long getSuccessfulCoalescings() {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    return successfulCoalescings.sum();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>  }<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span>  public long getTotalIncrements() {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    return totalIncrements.sum();<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span>  public long getCountersMapSize() {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    return countersMap.size();<a name="line.395"></a>
+<span class="sourceLineNo">396</span>  }<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>}<a name="line.398"></a>
 
 
 


[10/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html
index fab1c87..c791c41 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html
@@ -82,7 +82,7 @@
 <span class="sourceLineNo">074</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.74"></a>
 <span class="sourceLineNo">075</span><a name="line.75"></a>
 <span class="sourceLineNo">076</span>@InterfaceAudience.Private<a name="line.76"></a>
-<span class="sourceLineNo">077</span>public class ThriftUtilities {<a name="line.77"></a>
+<span class="sourceLineNo">077</span>public final class ThriftUtilities {<a name="line.77"></a>
 <span class="sourceLineNo">078</span><a name="line.78"></a>
 <span class="sourceLineNo">079</span>  private ThriftUtilities() {<a name="line.79"></a>
 <span class="sourceLineNo">080</span>    throw new UnsupportedOperationException("Can't initialize class");<a name="line.80"></a>
@@ -295,329 +295,334 @@
 <span class="sourceLineNo">287</span>      for (TColumn column : in.getColumns()) {<a name="line.287"></a>
 <span class="sourceLineNo">288</span>        if (in.isSetDeleteType()) {<a name="line.288"></a>
 <span class="sourceLineNo">289</span>          switch (in.getDeleteType()) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>          case DELETE_COLUMN:<a name="line.290"></a>
-<span class="sourceLineNo">291</span>            if (column.isSetTimestamp()) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>              out.addColumn(column.getFamily(), column.getQualifier(), column.getTimestamp());<a name="line.292"></a>
-<span class="sourceLineNo">293</span>            } else {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>              out.addColumn(column.getFamily(), column.getQualifier());<a name="line.294"></a>
-<span class="sourceLineNo">295</span>            }<a name="line.295"></a>
-<span class="sourceLineNo">296</span>            break;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          case DELETE_COLUMNS:<a name="line.297"></a>
-<span class="sourceLineNo">298</span>            if (column.isSetTimestamp()) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>              out.addColumns(column.getFamily(), column.getQualifier(), column.getTimestamp());<a name="line.299"></a>
-<span class="sourceLineNo">300</span>            } else {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>              out.addColumns(column.getFamily(), column.getQualifier());<a name="line.301"></a>
-<span class="sourceLineNo">302</span>            }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>            break;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>          case DELETE_FAMILY:<a name="line.304"></a>
-<span class="sourceLineNo">305</span>            if (column.isSetTimestamp()) {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>              out.addFamily(column.getFamily(), column.getTimestamp());<a name="line.306"></a>
-<span class="sourceLineNo">307</span>            } else {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>              out.addFamily(column.getFamily());<a name="line.308"></a>
-<span class="sourceLineNo">309</span>            }<a name="line.309"></a>
-<span class="sourceLineNo">310</span>            break;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>          case DELETE_FAMILY_VERSION:<a name="line.311"></a>
-<span class="sourceLineNo">312</span>            if (column.isSetTimestamp()) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>              out.addFamilyVersion(column.getFamily(), column.getTimestamp());<a name="line.313"></a>
-<span class="sourceLineNo">314</span>            } else {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>              throw new IllegalArgumentException(<a name="line.315"></a>
-<span class="sourceLineNo">316</span>                  "Timestamp is required for TDelete with DeleteFamilyVersion type");<a name="line.316"></a>
-<span class="sourceLineNo">317</span>            }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>            break;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>          }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        } else {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>          throw new IllegalArgumentException("DeleteType is required for TDelete");<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        }<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    } else {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      if (in.isSetTimestamp()) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        out = new Delete(in.getRow(), in.getTimestamp());<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      } else {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        out = new Delete(in.getRow());<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      }<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
-<span class="sourceLineNo">331</span><a name="line.331"></a>
-<span class="sourceLineNo">332</span>    if (in.isSetAttributes()) {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      addAttributes(out,in.getAttributes());<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    }<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>    if (in.isSetDurability()) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      out.setDurability(durabilityFromThrift(in.getDurability()));<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>    return out;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  }<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>  /**<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   * Converts multiple {@link TDelete}s (Thrift) into a list of {@link Delete}s (HBase).<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   *<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   * @param in list of &lt;code&gt;TDelete&lt;/code&gt;s to convert<a name="line.346"></a>
+<span class="sourceLineNo">290</span>            case DELETE_COLUMN:<a name="line.290"></a>
+<span class="sourceLineNo">291</span>              if (column.isSetTimestamp()) {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>                out.addColumn(column.getFamily(), column.getQualifier(), column.getTimestamp());<a name="line.292"></a>
+<span class="sourceLineNo">293</span>              } else {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>                out.addColumn(column.getFamily(), column.getQualifier());<a name="line.294"></a>
+<span class="sourceLineNo">295</span>              }<a name="line.295"></a>
+<span class="sourceLineNo">296</span>              break;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            case DELETE_COLUMNS:<a name="line.297"></a>
+<span class="sourceLineNo">298</span>              if (column.isSetTimestamp()) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>                out.addColumns(column.getFamily(), column.getQualifier(), column.getTimestamp());<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              } else {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>                out.addColumns(column.getFamily(), column.getQualifier());<a name="line.301"></a>
+<span class="sourceLineNo">302</span>              }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>              break;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>            case DELETE_FAMILY:<a name="line.304"></a>
+<span class="sourceLineNo">305</span>              if (column.isSetTimestamp()) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>                out.addFamily(column.getFamily(), column.getTimestamp());<a name="line.306"></a>
+<span class="sourceLineNo">307</span>              } else {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>                out.addFamily(column.getFamily());<a name="line.308"></a>
+<span class="sourceLineNo">309</span>              }<a name="line.309"></a>
+<span class="sourceLineNo">310</span>              break;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>            case DELETE_FAMILY_VERSION:<a name="line.311"></a>
+<span class="sourceLineNo">312</span>              if (column.isSetTimestamp()) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>                out.addFamilyVersion(column.getFamily(), column.getTimestamp());<a name="line.313"></a>
+<span class="sourceLineNo">314</span>              } else {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>                throw new IllegalArgumentException(<a name="line.315"></a>
+<span class="sourceLineNo">316</span>                    "Timestamp is required for TDelete with DeleteFamilyVersion type");<a name="line.316"></a>
+<span class="sourceLineNo">317</span>              }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>              break;<a name="line.318"></a>
+<span class="sourceLineNo">319</span>            default:<a name="line.319"></a>
+<span class="sourceLineNo">320</span>              throw new IllegalArgumentException("DeleteType is required for TDelete");<a name="line.320"></a>
+<span class="sourceLineNo">321</span>          }<a name="line.321"></a>
+<span class="sourceLineNo">322</span>        } else {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>          throw new IllegalArgumentException("DeleteType is required for TDelete");<a name="line.323"></a>
+<span class="sourceLineNo">324</span>        }<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      }<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    } else {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      if (in.isSetTimestamp()) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        out = new Delete(in.getRow(), in.getTimestamp());<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      } else {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        out = new Delete(in.getRow());<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      }<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>    if (in.isSetAttributes()) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      addAttributes(out,in.getAttributes());<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    }<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>    if (in.isSetDurability()) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      out.setDurability(durabilityFromThrift(in.getDurability()));<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    return out;<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  }<a name="line.343"></a>
+<span class="sourceLineNo">344</span><a name="line.344"></a>
+<span class="sourceLineNo">345</span>  /**<a name="line.345"></a>
+<span class="sourceLineNo">346</span>   * Converts multiple {@link TDelete}s (Thrift) into a list of {@link Delete}s (HBase).<a name="line.346"></a>
 <span class="sourceLineNo">347</span>   *<a name="line.347"></a>
-<span class="sourceLineNo">348</span>   * @return list of converted &lt;code&gt;Delete&lt;/code&gt;s<a name="line.348"></a>
+<span class="sourceLineNo">348</span>   * @param in list of &lt;code&gt;TDelete&lt;/code&gt;s to convert<a name="line.348"></a>
 <span class="sourceLineNo">349</span>   *<a name="line.349"></a>
-<span class="sourceLineNo">350</span>   * @see #deleteFromThrift(TDelete)<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   */<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public static List&lt;Delete&gt; deletesFromThrift(List&lt;TDelete&gt; in) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    List&lt;Delete&gt; out = new ArrayList&lt;&gt;(in.size());<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    for (TDelete delete : in) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      out.add(deleteFromThrift(delete));<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    }<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    return out;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  }<a name="line.359"></a>
-<span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>  public static TDelete deleteFromHBase(Delete in) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    TDelete out = new TDelete(ByteBuffer.wrap(in.getRow()));<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(in.getFamilyCellMap().entrySet().size());<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    long rowTimestamp = in.getTimeStamp();<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    if (rowTimestamp != HConstants.LATEST_TIMESTAMP) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      out.setTimestamp(rowTimestamp);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    }<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>    // Map&lt;family, List&lt;KeyValue&gt;&gt;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    for (Map.Entry&lt;byte[], List&lt;org.apache.hadoop.hbase.Cell&gt;&gt; familyEntry:<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        in.getFamilyCellMap().entrySet()) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      TColumn column = new TColumn(ByteBuffer.wrap(familyEntry.getKey()));<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      for (org.apache.hadoop.hbase.Cell cell: familyEntry.getValue()) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>        byte[] family = CellUtil.cloneFamily(cell);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        byte[] qualifier = CellUtil.cloneQualifier(cell);<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        long timestamp = cell.getTimestamp();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>        if (family != null) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>          column.setFamily(family);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        }<a name="line.380"></a>
-<span class="sourceLineNo">381</span>        if (qualifier != null) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>          column.setQualifier(qualifier);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        }<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        if (timestamp != HConstants.LATEST_TIMESTAMP) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>          column.setTimestamp(timestamp);<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        }<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      columns.add(column);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    }<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    out.setColumns(columns);<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>    return out;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  }<a name="line.393"></a>
-<span class="sourceLineNo">394</span><a name="line.394"></a>
-<span class="sourceLineNo">395</span>  /**<a name="line.395"></a>
-<span class="sourceLineNo">396</span>   * Creates a {@link RowMutations} (HBase) from a {@link TRowMutations} (Thrift)<a name="line.396"></a>
-<span class="sourceLineNo">397</span>   *<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * @param in the &lt;code&gt;TRowMutations&lt;/code&gt; to convert<a name="line.398"></a>
+<span class="sourceLineNo">350</span>   * @return list of converted &lt;code&gt;Delete&lt;/code&gt;s<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   *<a name="line.351"></a>
+<span class="sourceLineNo">352</span>   * @see #deleteFromThrift(TDelete)<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   */<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  public static List&lt;Delete&gt; deletesFromThrift(List&lt;TDelete&gt; in) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    List&lt;Delete&gt; out = new ArrayList&lt;&gt;(in.size());<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    for (TDelete delete : in) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      out.add(deleteFromThrift(delete));<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    }<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    return out;<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  public static TDelete deleteFromHBase(Delete in) {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    TDelete out = new TDelete(ByteBuffer.wrap(in.getRow()));<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    List&lt;TColumn&gt; columns = new ArrayList&lt;&gt;(in.getFamilyCellMap().entrySet().size());<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    long rowTimestamp = in.getTimeStamp();<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    if (rowTimestamp != HConstants.LATEST_TIMESTAMP) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      out.setTimestamp(rowTimestamp);<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>    // Map&lt;family, List&lt;KeyValue&gt;&gt;<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    for (Map.Entry&lt;byte[], List&lt;org.apache.hadoop.hbase.Cell&gt;&gt; familyEntry:<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        in.getFamilyCellMap().entrySet()) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      TColumn column = new TColumn(ByteBuffer.wrap(familyEntry.getKey()));<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      for (org.apache.hadoop.hbase.Cell cell: familyEntry.getValue()) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>        byte[] family = CellUtil.cloneFamily(cell);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        byte[] qualifier = CellUtil.cloneQualifier(cell);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>        long timestamp = cell.getTimestamp();<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        if (family != null) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>          column.setFamily(family);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>        }<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        if (qualifier != null) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>          column.setQualifier(qualifier);<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        }<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        if (timestamp != HConstants.LATEST_TIMESTAMP) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>          column.setTimestamp(timestamp);<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        }<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      }<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      columns.add(column);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    }<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    out.setColumns(columns);<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span>    return out;<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  /**<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * Creates a {@link RowMutations} (HBase) from a {@link TRowMutations} (Thrift)<a name="line.398"></a>
 <span class="sourceLineNo">399</span>   *<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @return converted &lt;code&gt;RowMutations&lt;/code&gt;<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   */<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  public static RowMutations rowMutationsFromThrift(TRowMutations in) throws IOException {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    List&lt;TMutation&gt; mutations = in.getMutations();<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    RowMutations out = new RowMutations(in.getRow(), mutations.size());<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    for (TMutation mutation : mutations) {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      if (mutation.isSetPut()) {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        out.add(putFromThrift(mutation.getPut()));<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      }<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      if (mutation.isSetDeleteSingle()) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        out.add(deleteFromThrift(mutation.getDeleteSingle()));<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      }<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    return out;<a name="line.413"></a>
-<span class="sourceLineNo">414</span>  }<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>  public static Scan scanFromThrift(TScan in) throws IOException {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    Scan out = new Scan();<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>    if (in.isSetStartRow())<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      out.setStartRow(in.getStartRow());<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    if (in.isSetStopRow())<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      out.setStopRow(in.getStopRow());<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    if (in.isSetCaching())<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      out.setCaching(in.getCaching());<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    if (in.isSetMaxVersions()) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      out.setMaxVersions(in.getMaxVersions());<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    }<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>    if (in.isSetColumns()) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      for (TColumn column : in.getColumns()) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        if (column.isSetQualifier()) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>          out.addColumn(column.getFamily(), column.getQualifier());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>        } else {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          out.addFamily(column.getFamily());<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        }<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      }<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    }<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>    TTimeRange timeRange = in.getTimeRange();<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    if (timeRange != null &amp;&amp;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        timeRange.isSetMinStamp() &amp;&amp; timeRange.isSetMaxStamp()) {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      out.setTimeRange(timeRange.getMinStamp(), timeRange.getMaxStamp());<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    }<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>    if (in.isSetBatchSize()) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      out.setBatch(in.getBatchSize());<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>    if (in.isSetFilterString()) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      ParseFilter parseFilter = new ParseFilter();<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      out.setFilter(parseFilter.parseFilterString(in.getFilterString()));<a name="line.451"></a>
+<span class="sourceLineNo">400</span>   * @param in the &lt;code&gt;TRowMutations&lt;/code&gt; to convert<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   *<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   * @return converted &lt;code&gt;RowMutations&lt;/code&gt;<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   */<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  public static RowMutations rowMutationsFromThrift(TRowMutations in) throws IOException {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    List&lt;TMutation&gt; mutations = in.getMutations();<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    RowMutations out = new RowMutations(in.getRow(), mutations.size());<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    for (TMutation mutation : mutations) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      if (mutation.isSetPut()) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        out.add(putFromThrift(mutation.getPut()));<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      }<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      if (mutation.isSetDeleteSingle()) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        out.add(deleteFromThrift(mutation.getDeleteSingle()));<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    }<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    return out;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>  }<a name="line.416"></a>
+<span class="sourceLineNo">417</span><a name="line.417"></a>
+<span class="sourceLineNo">418</span>  public static Scan scanFromThrift(TScan in) throws IOException {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    Scan out = new Scan();<a name="line.419"></a>
+<span class="sourceLineNo">420</span><a name="line.420"></a>
+<span class="sourceLineNo">421</span>    if (in.isSetStartRow()) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      out.setStartRow(in.getStartRow());<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    }<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    if (in.isSetStopRow()) {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      out.setStopRow(in.getStopRow());<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    }<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    if (in.isSetCaching()) {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      out.setCaching(in.getCaching());<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    if (in.isSetMaxVersions()) {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      out.setMaxVersions(in.getMaxVersions());<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    }<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>    if (in.isSetColumns()) {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      for (TColumn column : in.getColumns()) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        if (column.isSetQualifier()) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>          out.addColumn(column.getFamily(), column.getQualifier());<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        } else {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          out.addFamily(column.getFamily());<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      }<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
+<span class="sourceLineNo">443</span><a name="line.443"></a>
+<span class="sourceLineNo">444</span>    TTimeRange timeRange = in.getTimeRange();<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    if (timeRange != null &amp;&amp;<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        timeRange.isSetMinStamp() &amp;&amp; timeRange.isSetMaxStamp()) {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      out.setTimeRange(timeRange.getMinStamp(), timeRange.getMaxStamp());<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    }<a name="line.448"></a>
+<span class="sourceLineNo">449</span><a name="line.449"></a>
+<span class="sourceLineNo">450</span>    if (in.isSetBatchSize()) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      out.setBatch(in.getBatchSize());<a name="line.451"></a>
 <span class="sourceLineNo">452</span>    }<a name="line.452"></a>
 <span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    if (in.isSetAttributes()) {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      addAttributes(out,in.getAttributes());<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>    if (in.isSetAuthorizations()) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      out.setAuthorizations(new Authorizations(in.getAuthorizations().getLabels()));<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>    if (in.isSetReversed()) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      out.setReversed(in.isReversed());<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    }<a name="line.464"></a>
-<span class="sourceLineNo">465</span><a name="line.465"></a>
-<span class="sourceLineNo">466</span>    if (in.isSetCacheBlocks()) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      out.setCacheBlocks(in.isCacheBlocks());<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    }<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>    if (in.isSetColFamTimeRangeMap()) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      Map&lt;ByteBuffer, TTimeRange&gt; colFamTimeRangeMap = in.getColFamTimeRangeMap();<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      if (MapUtils.isNotEmpty(colFamTimeRangeMap)) {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        for (Map.Entry&lt;ByteBuffer, TTimeRange&gt; entry : colFamTimeRangeMap.entrySet()) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>          out.setColumnFamilyTimeRange(Bytes.toBytes(entry.getKey()),<a name="line.474"></a>
-<span class="sourceLineNo">475</span>              entry.getValue().getMinStamp(), entry.getValue().getMaxStamp());<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        }<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      }<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    }<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>    if (in.isSetReadType()) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      out.setReadType(readTypeFromThrift(in.getReadType()));<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    }<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>    if (in.isSetLimit()) {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      out.setLimit(in.getLimit());<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    }<a name="line.486"></a>
-<span class="sourceLineNo">487</span><a name="line.487"></a>
-<span class="sourceLineNo">488</span>    return out;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>  }<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span>  public static Increment incrementFromThrift(TIncrement in) throws IOException {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    Increment out = new Increment(in.getRow());<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    for (TColumnIncrement column : in.getColumns()) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      out.addColumn(column.getFamily(), column.getQualifier(), column.getAmount());<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    }<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>    if (in.isSetAttributes()) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      addAttributes(out,in.getAttributes());<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    }<a name="line.499"></a>
-<span class="sourceLineNo">500</span><a name="line.500"></a>
-<span class="sourceLineNo">501</span>    if (in.isSetDurability()) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      out.setDurability(durabilityFromThrift(in.getDurability()));<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    }<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>    if(in.getCellVisibility() != null) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      out.setCellVisibility(new CellVisibility(in.getCellVisibility().getExpression()));<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    }<a name="line.507"></a>
-<span class="sourceLineNo">508</span><a name="line.508"></a>
-<span class="sourceLineNo">509</span>    return out;<a name="line.509"></a>
-<span class="sourceLineNo">510</span>  }<a name="line.510"></a>
-<span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span>  public static Append appendFromThrift(TAppend append) throws IOException {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    Append out = new Append(append.getRow());<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    for (TColumnValue column : append.getColumns()) {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      out.addColumn(column.getFamily(), column.getQualifier(), column.getValue());<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>    if (append.isSetAttributes()) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      addAttributes(out, append.getAttributes());<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    }<a name="line.520"></a>
-<span class="sourceLineNo">521</span><a name="line.521"></a>
-<span class="sourceLineNo">522</span>    if (append.isSetDurability()) {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      out.setDurability(durabilityFromThrift(append.getDurability()));<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    }<a name="line.524"></a>
-<span class="sourceLineNo">525</span><a name="line.525"></a>
-<span class="sourceLineNo">526</span>    if(append.getCellVisibility() != null) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      out.setCellVisibility(new CellVisibility(append.getCellVisibility().getExpression()));<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    }<a name="line.528"></a>
-<span class="sourceLineNo">529</span><a name="line.529"></a>
-<span class="sourceLineNo">530</span>    return out;<a name="line.530"></a>
-<span class="sourceLineNo">531</span>  }<a name="line.531"></a>
-<span class="sourceLineNo">532</span><a name="line.532"></a>
-<span class="sourceLineNo">533</span>  public static THRegionLocation regionLocationFromHBase(HRegionLocation hrl) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    HRegionInfo hri = hrl.getRegionInfo();<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    ServerName serverName = hrl.getServerName();<a name="line.535"></a>
-<span class="sourceLineNo">536</span><a name="line.536"></a>
-<span class="sourceLineNo">537</span>    THRegionInfo thRegionInfo = new THRegionInfo();<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    THRegionLocation thRegionLocation = new THRegionLocation();<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    TServerName tServerName = new TServerName();<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>    tServerName.setHostName(serverName.getHostname());<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    tServerName.setPort(serverName.getPort());<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    tServerName.setStartCode(serverName.getStartcode());<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    thRegionInfo.setTableName(hri.getTable().getName());<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    thRegionInfo.setEndKey(hri.getEndKey());<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    thRegionInfo.setStartKey(hri.getStartKey());<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    thRegionInfo.setOffline(hri.isOffline());<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    thRegionInfo.setSplit(hri.isSplit());<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    thRegionInfo.setReplicaId(hri.getReplicaId());<a name="line.550"></a>
-<span class="sourceLineNo">551</span><a name="line.551"></a>
-<span class="sourceLineNo">552</span>    thRegionLocation.setRegionInfo(thRegionInfo);<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    thRegionLocation.setServerName(tServerName);<a name="line.553"></a>
-<span class="sourceLineNo">554</span><a name="line.554"></a>
-<span class="sourceLineNo">555</span>    return thRegionLocation;<a name="line.555"></a>
-<span class="sourceLineNo">556</span>  }<a name="line.556"></a>
-<span class="sourceLineNo">557</span><a name="line.557"></a>
-<span class="sourceLineNo">558</span>  public static List&lt;THRegionLocation&gt; regionLocationsFromHBase(List&lt;HRegionLocation&gt; locations) {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    List&lt;THRegionLocation&gt; tlocations = new ArrayList&lt;&gt;(locations.size());<a name="line.559"></a>
-<span class="sourceLineNo">560</span>    for (HRegionLocation hrl:locations) {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      tlocations.add(regionLocationFromHBase(hrl));<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    }<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    return tlocations;<a name="line.563"></a>
-<span class="sourceLineNo">564</span>  }<a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>  /**<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   * Adds all the attributes into the Operation object<a name="line.567"></a>
-<span class="sourceLineNo">568</span>   */<a name="line.568"></a>
-<span class="sourceLineNo">569</span>  private static void addAttributes(OperationWithAttributes op,<a name="line.569"></a>
-<span class="sourceLineNo">570</span>                                    Map&lt;ByteBuffer, ByteBuffer&gt; attributes) {<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    if (attributes == null || attributes.isEmpty()) {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>      return;<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    }<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    for (Map.Entry&lt;ByteBuffer, ByteBuffer&gt; entry : attributes.entrySet()) {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      String name = Bytes.toStringBinary(getBytes(entry.getKey()));<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      byte[] value =  getBytes(entry.getValue());<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      op.setAttribute(name, value);<a name="line.577"></a>
+<span class="sourceLineNo">454</span>    if (in.isSetFilterString()) {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      ParseFilter parseFilter = new ParseFilter();<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      out.setFilter(parseFilter.parseFilterString(in.getFilterString()));<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    }<a name="line.457"></a>
+<span class="sourceLineNo">458</span><a name="line.458"></a>
+<span class="sourceLineNo">459</span>    if (in.isSetAttributes()) {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>      addAttributes(out,in.getAttributes());<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    }<a name="line.461"></a>
+<span class="sourceLineNo">462</span><a name="line.462"></a>
+<span class="sourceLineNo">463</span>    if (in.isSetAuthorizations()) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      out.setAuthorizations(new Authorizations(in.getAuthorizations().getLabels()));<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>    if (in.isSetReversed()) {<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      out.setReversed(in.isReversed());<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    }<a name="line.469"></a>
+<span class="sourceLineNo">470</span><a name="line.470"></a>
+<span class="sourceLineNo">471</span>    if (in.isSetCacheBlocks()) {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      out.setCacheBlocks(in.isCacheBlocks());<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    }<a name="line.473"></a>
+<span class="sourceLineNo">474</span><a name="line.474"></a>
+<span class="sourceLineNo">475</span>    if (in.isSetColFamTimeRangeMap()) {<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      Map&lt;ByteBuffer, TTimeRange&gt; colFamTimeRangeMap = in.getColFamTimeRangeMap();<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      if (MapUtils.isNotEmpty(colFamTimeRangeMap)) {<a name="line.477"></a>
+<span class="sourceLineNo">478</span>        for (Map.Entry&lt;ByteBuffer, TTimeRange&gt; entry : colFamTimeRangeMap.entrySet()) {<a name="line.478"></a>
+<span class="sourceLineNo">479</span>          out.setColumnFamilyTimeRange(Bytes.toBytes(entry.getKey()),<a name="line.479"></a>
+<span class="sourceLineNo">480</span>              entry.getValue().getMinStamp(), entry.getValue().getMaxStamp());<a name="line.480"></a>
+<span class="sourceLineNo">481</span>        }<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      }<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    }<a name="line.483"></a>
+<span class="sourceLineNo">484</span><a name="line.484"></a>
+<span class="sourceLineNo">485</span>    if (in.isSetReadType()) {<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      out.setReadType(readTypeFromThrift(in.getReadType()));<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    }<a name="line.487"></a>
+<span class="sourceLineNo">488</span><a name="line.488"></a>
+<span class="sourceLineNo">489</span>    if (in.isSetLimit()) {<a name="line.489"></a>
+<span class="sourceLineNo">490</span>      out.setLimit(in.getLimit());<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    }<a name="line.491"></a>
+<span class="sourceLineNo">492</span><a name="line.492"></a>
+<span class="sourceLineNo">493</span>    return out;<a name="line.493"></a>
+<span class="sourceLineNo">494</span>  }<a name="line.494"></a>
+<span class="sourceLineNo">495</span><a name="line.495"></a>
+<span class="sourceLineNo">496</span>  public static Increment incrementFromThrift(TIncrement in) throws IOException {<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    Increment out = new Increment(in.getRow());<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    for (TColumnIncrement column : in.getColumns()) {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      out.addColumn(column.getFamily(), column.getQualifier(), column.getAmount());<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    }<a name="line.500"></a>
+<span class="sourceLineNo">501</span><a name="line.501"></a>
+<span class="sourceLineNo">502</span>    if (in.isSetAttributes()) {<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      addAttributes(out,in.getAttributes());<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    }<a name="line.504"></a>
+<span class="sourceLineNo">505</span><a name="line.505"></a>
+<span class="sourceLineNo">506</span>    if (in.isSetDurability()) {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>      out.setDurability(durabilityFromThrift(in.getDurability()));<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
+<span class="sourceLineNo">509</span><a name="line.509"></a>
+<span class="sourceLineNo">510</span>    if(in.getCellVisibility() != null) {<a name="line.510"></a>
+<span class="sourceLineNo">511</span>      out.setCellVisibility(new CellVisibility(in.getCellVisibility().getExpression()));<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    }<a name="line.512"></a>
+<span class="sourceLineNo">513</span><a name="line.513"></a>
+<span class="sourceLineNo">514</span>    return out;<a name="line.514"></a>
+<span class="sourceLineNo">515</span>  }<a name="line.515"></a>
+<span class="sourceLineNo">516</span><a name="line.516"></a>
+<span class="sourceLineNo">517</span>  public static Append appendFromThrift(TAppend append) throws IOException {<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    Append out = new Append(append.getRow());<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    for (TColumnValue column : append.getColumns()) {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>      out.addColumn(column.getFamily(), column.getQualifier(), column.getValue());<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    }<a name="line.521"></a>
+<span class="sourceLineNo">522</span><a name="line.522"></a>
+<span class="sourceLineNo">523</span>    if (append.isSetAttributes()) {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>      addAttributes(out, append.getAttributes());<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
+<span class="sourceLineNo">526</span><a name="line.526"></a>
+<span class="sourceLineNo">527</span>    if (append.isSetDurability()) {<a name="line.527"></a>
+<span class="sourceLineNo">528</span>      out.setDurability(durabilityFromThrift(append.getDurability()));<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    }<a name="line.529"></a>
+<span class="sourceLineNo">530</span><a name="line.530"></a>
+<span class="sourceLineNo">531</span>    if(append.getCellVisibility() != null) {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      out.setCellVisibility(new CellVisibility(append.getCellVisibility().getExpression()));<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    }<a name="line.533"></a>
+<span class="sourceLineNo">534</span><a name="line.534"></a>
+<span class="sourceLineNo">535</span>    return out;<a name="line.535"></a>
+<span class="sourceLineNo">536</span>  }<a name="line.536"></a>
+<span class="sourceLineNo">537</span><a name="line.537"></a>
+<span class="sourceLineNo">538</span>  public static THRegionLocation regionLocationFromHBase(HRegionLocation hrl) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    HRegionInfo hri = hrl.getRegionInfo();<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    ServerName serverName = hrl.getServerName();<a name="line.540"></a>
+<span class="sourceLineNo">541</span><a name="line.541"></a>
+<span class="sourceLineNo">542</span>    THRegionInfo thRegionInfo = new THRegionInfo();<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    THRegionLocation thRegionLocation = new THRegionLocation();<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    TServerName tServerName = new TServerName();<a name="line.544"></a>
+<span class="sourceLineNo">545</span><a name="line.545"></a>
+<span class="sourceLineNo">546</span>    tServerName.setHostName(serverName.getHostname());<a name="line.546"></a>
+<span class="sourceLineNo">547</span>    tServerName.setPort(serverName.getPort());<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    tServerName.setStartCode(serverName.getStartcode());<a name="line.548"></a>
+<span class="sourceLineNo">549</span><a name="line.549"></a>
+<span class="sourceLineNo">550</span>    thRegionInfo.setTableName(hri.getTable().getName());<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    thRegionInfo.setEndKey(hri.getEndKey());<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    thRegionInfo.setStartKey(hri.getStartKey());<a name="line.552"></a>
+<span class="sourceLineNo">553</span>    thRegionInfo.setOffline(hri.isOffline());<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    thRegionInfo.setSplit(hri.isSplit());<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    thRegionInfo.setReplicaId(hri.getReplicaId());<a name="line.555"></a>
+<span class="sourceLineNo">556</span><a name="line.556"></a>
+<span class="sourceLineNo">557</span>    thRegionLocation.setRegionInfo(thRegionInfo);<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    thRegionLocation.setServerName(tServerName);<a name="line.558"></a>
+<span class="sourceLineNo">559</span><a name="line.559"></a>
+<span class="sourceLineNo">560</span>    return thRegionLocation;<a name="line.560"></a>
+<span class="sourceLineNo">561</span>  }<a name="line.561"></a>
+<span class="sourceLineNo">562</span><a name="line.562"></a>
+<span class="sourceLineNo">563</span>  public static List&lt;THRegionLocation&gt; regionLocationsFromHBase(List&lt;HRegionLocation&gt; locations) {<a name="line.563"></a>
+<span class="sourceLineNo">564</span>    List&lt;THRegionLocation&gt; tlocations = new ArrayList&lt;&gt;(locations.size());<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    for (HRegionLocation hrl:locations) {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      tlocations.add(regionLocationFromHBase(hrl));<a name="line.566"></a>
+<span class="sourceLineNo">567</span>    }<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    return tlocations;<a name="line.568"></a>
+<span class="sourceLineNo">569</span>  }<a name="line.569"></a>
+<span class="sourceLineNo">570</span><a name="line.570"></a>
+<span class="sourceLineNo">571</span>  /**<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   * Adds all the attributes into the Operation object<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   */<a name="line.573"></a>
+<span class="sourceLineNo">574</span>  private static void addAttributes(OperationWithAttributes op,<a name="line.574"></a>
+<span class="sourceLineNo">575</span>                                    Map&lt;ByteBuffer, ByteBuffer&gt; attributes) {<a name="line.575"></a>
+<span class="sourceLineNo">576</span>    if (attributes == null || attributes.isEmpty()) {<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      return;<a name="line.577"></a>
 <span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span>  }<a name="line.579"></a>
-<span class="sourceLineNo">580</span><a name="line.580"></a>
-<span class="sourceLineNo">581</span>  private static Durability durabilityFromThrift(TDurability tDurability) {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    switch (tDurability.getValue()) {<a name="line.582"></a>
-<span class="sourceLineNo">583</span>      case 1: return Durability.SKIP_WAL;<a name="line.583"></a>
-<span class="sourceLineNo">584</span>      case 2: return Durability.ASYNC_WAL;<a name="line.584"></a>
-<span class="sourceLineNo">585</span>      case 3: return Durability.SYNC_WAL;<a name="line.585"></a>
-<span class="sourceLineNo">586</span>      case 4: return Durability.FSYNC_WAL;<a name="line.586"></a>
-<span class="sourceLineNo">587</span>      default: return null;<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    }<a name="line.588"></a>
-<span class="sourceLineNo">589</span>  }<a name="line.589"></a>
-<span class="sourceLineNo">590</span><a name="line.590"></a>
-<span class="sourceLineNo">591</span>  public static CompareOperator compareOpFromThrift(TCompareOp tCompareOp) {<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    switch (tCompareOp.getValue()) {<a name="line.592"></a>
-<span class="sourceLineNo">593</span>      case 0: return CompareOperator.LESS;<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      case 1: return CompareOperator.LESS_OR_EQUAL;<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      case 2: return CompareOperator.EQUAL;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      case 3: return CompareOperator.NOT_EQUAL;<a name="line.596"></a>
-<span class="sourceLineNo">597</span>      case 4: return CompareOperator.GREATER_OR_EQUAL;<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      case 5: return CompareOperator.GREATER;<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      case 6: return CompareOperator.NO_OP;<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      default: return null;<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    }<a name="line.601"></a>
-<span class="sourceLineNo">602</span>  }<a name="line.602"></a>
-<span class="sourceLineNo">603</span><a name="line.603"></a>
-<span class="sourceLineNo">604</span>  private static ReadType readTypeFromThrift(TReadType tReadType) {<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    switch (tReadType.getValue()) {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      case 1: return ReadType.DEFAULT;<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      case 2: return ReadType.STREAM;<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      case 3: return ReadType.PREAD;<a name="line.608"></a>
-<span class="sourceLineNo">609</span>      default: return null;<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    }<a name="line.610"></a>
-<span class="sourceLineNo">611</span>  }<a name="line.611"></a>
-<span class="sourceLineNo">612</span>}<a name="line.612"></a>
+<span class="sourceLineNo">579</span>    for (Map.Entry&lt;ByteBuffer, ByteBuffer&gt; entry : attributes.entrySet()) {<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      String name = Bytes.toStringBinary(getBytes(entry.getKey()));<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      byte[] value =  getBytes(entry.getValue());<a name="line.581"></a>
+<span class="sourceLineNo">582</span>      op.setAttribute(name, value);<a name="line.582"></a>
+<span class="sourceLineNo">583</span>    }<a name="line.583"></a>
+<span class="sourceLineNo">584</span>  }<a name="line.584"></a>
+<span class="sourceLineNo">585</span><a name="line.585"></a>
+<span class="sourceLineNo">586</span>  private static Durability durabilityFromThrift(TDurability tDurability) {<a name="line.586"></a>
+<span class="sourceLineNo">587</span>    switch (tDurability.getValue()) {<a name="line.587"></a>
+<span class="sourceLineNo">588</span>      case 1: return Durability.SKIP_WAL;<a name="line.588"></a>
+<span class="sourceLineNo">589</span>      case 2: return Durability.ASYNC_WAL;<a name="line.589"></a>
+<span class="sourceLineNo">590</span>      case 3: return Durability.SYNC_WAL;<a name="line.590"></a>
+<span class="sourceLineNo">591</span>      case 4: return Durability.FSYNC_WAL;<a name="line.591"></a>
+<span class="sourceLineNo">592</span>      default: return null;<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    }<a name="line.593"></a>
+<span class="sourceLineNo">594</span>  }<a name="line.594"></a>
+<span class="sourceLineNo">595</span><a name="line.595"></a>
+<span class="sourceLineNo">596</span>  public static CompareOperator compareOpFromThrift(TCompareOp tCompareOp) {<a name="line.596"></a>
+<span class="sourceLineNo">597</span>    switch (tCompareOp.getValue()) {<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      case 0: return CompareOperator.LESS;<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      case 1: return CompareOperator.LESS_OR_EQUAL;<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      case 2: return CompareOperator.EQUAL;<a name="line.600"></a>
+<span class="sourceLineNo">601</span>      case 3: return CompareOperator.NOT_EQUAL;<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      case 4: return CompareOperator.GREATER_OR_EQUAL;<a name="line.602"></a>
+<span class="sourceLineNo">603</span>      case 5: return CompareOperator.GREATER;<a name="line.603"></a>
+<span class="sourceLineNo">604</span>      case 6: return CompareOperator.NO_OP;<a name="line.604"></a>
+<span class="sourceLineNo">605</span>      default: return null;<a name="line.605"></a>
+<span class="sourceLineNo">606</span>    }<a name="line.606"></a>
+<span class="sourceLineNo">607</span>  }<a name="line.607"></a>
+<span class="sourceLineNo">608</span><a name="line.608"></a>
+<span class="sourceLineNo">609</span>  private static ReadType readTypeFromThrift(TReadType tReadType) {<a name="line.609"></a>
+<span class="sourceLineNo">610</span>    switch (tReadType.getValue()) {<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      case 1: return ReadType.DEFAULT;<a name="line.611"></a>
+<span class="sourceLineNo">612</span>      case 2: return ReadType.STREAM;<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      case 3: return ReadType.PREAD;<a name="line.613"></a>
+<span class="sourceLineNo">614</span>      default: return null;<a name="line.614"></a>
+<span class="sourceLineNo">615</span>    }<a name="line.615"></a>
+<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
+<span class="sourceLineNo">617</span>}<a name="line.617"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index 3e2cda4..1e4eebf 100644
--- a/export_control.html
+++ b/export_control.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -336,7 +336,7 @@ for more details.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-annotations/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/checkstyle.html b/hbase-annotations/checkstyle.html
index 25de6de..f7e4a8d 100644
--- a/hbase-annotations/checkstyle.html
+++ b/hbase-annotations/checkstyle.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -150,7 +150,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-annotations/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependencies.html b/hbase-annotations/dependencies.html
index f31987e..893486a 100644
--- a/hbase-annotations/dependencies.html
+++ b/hbase-annotations/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -272,7 +272,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-annotations/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-convergence.html b/hbase-annotations/dependency-convergence.html
index 953f9a1..2503074 100644
--- a/hbase-annotations/dependency-convergence.html
+++ b/hbase-annotations/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -912,7 +912,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-annotations/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-info.html b/hbase-annotations/dependency-info.html
index 0f5cdc2..847ce1c 100644
--- a/hbase-annotations/dependency-info.html
+++ b/hbase-annotations/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -147,7 +147,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-annotations/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-management.html b/hbase-annotations/dependency-management.html
index a7fca40..8d71d80 100644
--- a/hbase-annotations/dependency-management.html
+++ b/hbase-annotations/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-annotations/index.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/index.html b/hbase-annotations/index.html
index fb4e6f0..9808edd 100644
--- a/hbase-annotations/index.html
+++ b/hbase-annotations/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-annotations/integration.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/integration.html b/hbase-annotations/integration.html
index 0c5d8de..07fa31f 100644
--- a/hbase-annotations/integration.html
+++ b/hbase-annotations/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-annotations/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/issue-tracking.html b/hbase-annotations/issue-tracking.html
index f6cec4c..4e790b4 100644
--- a/hbase-annotations/issue-tracking.html
+++ b/hbase-annotations/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-annotations/license.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/license.html b/hbase-annotations/license.html
index 8a6cdba..2971eb6 100644
--- a/hbase-annotations/license.html
+++ b/hbase-annotations/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-annotations/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/mail-lists.html b/hbase-annotations/mail-lists.html
index 69ae314..6e890bf 100644
--- a/hbase-annotations/mail-lists.html
+++ b/hbase-annotations/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-annotations/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/plugin-management.html b/hbase-annotations/plugin-management.html
index a46591a..5ae1d91 100644
--- a/hbase-annotations/plugin-management.html
+++ b/hbase-annotations/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-annotations/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/plugins.html b/hbase-annotations/plugins.html
index 2ad8e8a..e5afe36 100644
--- a/hbase-annotations/plugins.html
+++ b/hbase-annotations/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -222,7 +222,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-annotations/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-info.html b/hbase-annotations/project-info.html
index 40305bf..a23bc2e 100644
--- a/hbase-annotations/project-info.html
+++ b/hbase-annotations/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-annotations/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-reports.html b/hbase-annotations/project-reports.html
index 977aa2a..0355f9a 100644
--- a/hbase-annotations/project-reports.html
+++ b/hbase-annotations/project-reports.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -128,7 +128,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-annotations/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-summary.html b/hbase-annotations/project-summary.html
index bcadf3e..71e556b 100644
--- a/hbase-annotations/project-summary.html
+++ b/hbase-annotations/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-annotations/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/source-repository.html b/hbase-annotations/source-repository.html
index 9d6420a..28b3fad 100644
--- a/hbase-annotations/source-repository.html
+++ b/hbase-annotations/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-annotations/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/team-list.html b/hbase-annotations/team-list.html
index 60b079d..443dfb8 100644
--- a/hbase-annotations/team-list.html
+++ b/hbase-annotations/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -553,7 +553,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/dependencies.html b/hbase-build-configuration/dependencies.html
index 797fb70..f3402d2 100644
--- a/hbase-build-configuration/dependencies.html
+++ b/hbase-build-configuration/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -330,7 +330,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/dependency-convergence.html b/hbase-build-configuration/dependency-convergence.html
index 21cca35..a912fb2 100644
--- a/hbase-build-configuration/dependency-convergence.html
+++ b/hbase-build-configuration/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -912,7 +912,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/dependency-info.html b/hbase-build-configuration/dependency-info.html
index 6b09191..c589191 100644
--- a/hbase-build-configuration/dependency-info.html
+++ b/hbase-build-configuration/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -148,7 +148,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/dependency-management.html b/hbase-build-configuration/dependency-management.html
index 6709206..0db3bb8 100644
--- a/hbase-build-configuration/dependency-management.html
+++ b/hbase-build-configuration/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 


[19/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html
index 4515e88..4f105d5 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html
@@ -125,259 +125,285 @@
 <span class="sourceLineNo">117</span><a name="line.117"></a>
 <span class="sourceLineNo">118</span>    @Override<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    public boolean equals(Object obj) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      if (this == obj) return true;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      if (obj == null) return false;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      if (getClass() != obj.getClass()) return false;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      FullyQualifiedRow other = (FullyQualifiedRow) obj;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      if (!Arrays.equals(family, other.family)) return false;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      if (!Arrays.equals(qualifier, other.qualifier)) return false;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      if (!Arrays.equals(rowKey, other.rowKey)) return false;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      if (!Arrays.equals(table, other.table)) return false;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      return true;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  static class DaemonThreadFactory implements ThreadFactory {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    static final AtomicInteger poolNumber = new AtomicInteger(1);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    final ThreadGroup group;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    final AtomicInteger threadNumber = new AtomicInteger(1);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    final String namePrefix;<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>    DaemonThreadFactory() {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      SecurityManager s = System.getSecurityManager();<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      group = (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup();<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      namePrefix = "ICV-" + poolNumber.getAndIncrement() + "-thread-";<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>    public Thread newThread(Runnable r) {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      Thread t = new Thread(group, r, namePrefix + threadNumber.getAndIncrement(), 0);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      if (!t.isDaemon()) t.setDaemon(true);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      if (t.getPriority() != Thread.NORM_PRIORITY) t.setPriority(Thread.NORM_PRIORITY);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      return t;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  }<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  private final LongAdder failedIncrements = new LongAdder();<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  private final LongAdder successfulCoalescings = new LongAdder();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  private final LongAdder totalIncrements = new LongAdder();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  private final ConcurrentMap&lt;FullyQualifiedRow, Long&gt; countersMap =<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      new ConcurrentHashMap&lt;&gt;(100000, 0.75f, 1500);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  private final ThreadPoolExecutor pool;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  private final HBaseHandler handler;<a name="line.159"></a>
+<span class="sourceLineNo">120</span>      if (this == obj) {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>        return true;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      }<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      if (obj == null) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>        return false;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      if (getClass() != obj.getClass()) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>        return false;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      }<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>      FullyQualifiedRow other = (FullyQualifiedRow) obj;<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>      if (!Arrays.equals(family, other.family)) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>        return false;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      }<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      if (!Arrays.equals(qualifier, other.qualifier)) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>        return false;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      }<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      if (!Arrays.equals(rowKey, other.rowKey)) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        return false;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      }<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      if (!Arrays.equals(table, other.table)) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>        return false;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      }<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      return true;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  }<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  static class DaemonThreadFactory implements ThreadFactory {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    static final AtomicInteger poolNumber = new AtomicInteger(1);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    final ThreadGroup group;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    final AtomicInteger threadNumber = new AtomicInteger(1);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    final String namePrefix;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>    DaemonThreadFactory() {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      SecurityManager s = System.getSecurityManager();<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      group = (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      namePrefix = "ICV-" + poolNumber.getAndIncrement() + "-thread-";<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
 <span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  private int maxQueueSize = 500000;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  private static final int CORE_POOL_SIZE = 1;<a name="line.162"></a>
+<span class="sourceLineNo">161</span>    public Thread newThread(Runnable r) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      Thread t = new Thread(group, r, namePrefix + threadNumber.getAndIncrement(), 0);<a name="line.162"></a>
 <span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  private static final Logger LOG = LoggerFactory.getLogger(FullyQualifiedRow.class);<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  @SuppressWarnings("deprecation")<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  public IncrementCoalescer(HBaseHandler hand) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    this.handler = hand;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    LinkedBlockingQueue&lt;Runnable&gt; queue = new LinkedBlockingQueue&lt;&gt;();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    pool =<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        new ThreadPoolExecutor(CORE_POOL_SIZE, CORE_POOL_SIZE, 50, TimeUnit.MILLISECONDS, queue,<a name="line.171"></a>
-<span class="sourceLineNo">172</span>            Threads.newDaemonThreadFactory("IncrementCoalescer"));<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>    MBeans.register("thrift", "Thrift", this);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  }<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>  public boolean queueIncrement(TIncrement inc) throws TException {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    if (!canQueue()) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      failedIncrements.increment();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      return false;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    return internalQueueTincrement(inc);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  public boolean queueIncrements(List&lt;TIncrement&gt; incs) throws TException {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    if (!canQueue()) {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      failedIncrements.increment();<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      return false;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>    for (TIncrement tinc : incs) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      internalQueueTincrement(tinc);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    }<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    return true;<a name="line.194"></a>
+<span class="sourceLineNo">164</span>      if (!t.isDaemon()) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        t.setDaemon(true);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      if (t.getPriority() != Thread.NORM_PRIORITY) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        t.setPriority(Thread.NORM_PRIORITY);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      }<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>      return t;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  }<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>  private final LongAdder failedIncrements = new LongAdder();<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  private final LongAdder successfulCoalescings = new LongAdder();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  private final LongAdder totalIncrements = new LongAdder();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  private final ConcurrentMap&lt;FullyQualifiedRow, Long&gt; countersMap =<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      new ConcurrentHashMap&lt;&gt;(100000, 0.75f, 1500);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  private final ThreadPoolExecutor pool;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  private final HBaseHandler handler;<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  private int maxQueueSize = 500000;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  private static final int CORE_POOL_SIZE = 1;<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  private static final Logger LOG = LoggerFactory.getLogger(FullyQualifiedRow.class);<a name="line.186"></a>
+<span class="sourceLineNo">187</span><a name="line.187"></a>
+<span class="sourceLineNo">188</span>  @SuppressWarnings("deprecation")<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  public IncrementCoalescer(HBaseHandler hand) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    this.handler = hand;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    LinkedBlockingQueue&lt;Runnable&gt; queue = new LinkedBlockingQueue&lt;&gt;();<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    pool =<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        new ThreadPoolExecutor(CORE_POOL_SIZE, CORE_POOL_SIZE, 50, TimeUnit.MILLISECONDS, queue,<a name="line.193"></a>
+<span class="sourceLineNo">194</span>            Threads.newDaemonThreadFactory("IncrementCoalescer"));<a name="line.194"></a>
 <span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>  }<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>  private boolean internalQueueTincrement(TIncrement inc) throws TException {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    byte[][] famAndQf = CellUtil.parseColumn(inc.getColumn());<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    if (famAndQf.length != 2) return false;<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>    return internalQueueIncrement(inc.getTable(), inc.getRow(), famAndQf[0], famAndQf[1],<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      inc.getAmmount());<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  }<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>  private boolean internalQueueIncrement(byte[] tableName, byte[] rowKey, byte[] fam,<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      byte[] qual, long ammount) throws TException {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    int countersMapSize = countersMap.size();<a name="line.208"></a>
-<span class="sourceLineNo">209</span><a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>    //Make sure that the number of threads is scaled.<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    dynamicallySetCoreSize(countersMapSize);<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>    totalIncrements.increment();<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>    FullyQualifiedRow key = new FullyQualifiedRow(tableName, rowKey, fam, qual);<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>    long currentAmount = ammount;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    // Spin until able to insert the value back without collisions<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    while (true) {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      Long value = countersMap.remove(key);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      if (value == null) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>        // There was nothing there, create a new value<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        value = Long.valueOf(currentAmount);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      } else {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>        value += currentAmount;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>        successfulCoalescings.increment();<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      }<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      // Try to put the value, only if there was none<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      Long oldValue = countersMap.putIfAbsent(key, value);<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      if (oldValue == null) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        // We were able to put it in, we're done<a name="line.232"></a>
-<span class="sourceLineNo">233</span>        break;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      // Someone else was able to put a value in, so let's remember our<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      // current value (plus what we picked up) and retry to add it in<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      currentAmount = value;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    }<a name="line.238"></a>
+<span class="sourceLineNo">196</span>    MBeans.register("thrift", "Thrift", this);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  }<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>  public boolean queueIncrement(TIncrement inc) throws TException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    if (!canQueue()) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      failedIncrements.increment();<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      return false;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    return internalQueueTincrement(inc);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  }<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>  public boolean queueIncrements(List&lt;TIncrement&gt; incs) throws TException {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    if (!canQueue()) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      failedIncrements.increment();<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      return false;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    }<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>    for (TIncrement tinc : incs) {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      internalQueueTincrement(tinc);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>    return true;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  private boolean internalQueueTincrement(TIncrement inc) throws TException {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    byte[][] famAndQf = CellUtil.parseColumn(inc.getColumn());<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>    if (famAndQf.length != 2) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      return false;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    }<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>    return internalQueueIncrement(inc.getTable(), inc.getRow(), famAndQf[0], famAndQf[1],<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      inc.getAmmount());<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>  private boolean internalQueueIncrement(byte[] tableName, byte[] rowKey, byte[] fam,<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      byte[] qual, long ammount) throws TException {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    int countersMapSize = countersMap.size();<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    //Make sure that the number of threads is scaled.<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    dynamicallySetCoreSize(countersMapSize);<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>    totalIncrements.increment();<a name="line.238"></a>
 <span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>    // We limit the size of the queue simply because all we need is a<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    // notification that something needs to be incremented. No need<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    // for millions of callables that mean the same thing.<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    if (pool.getQueue().size() &lt;= 1000) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      // queue it up<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      Callable&lt;Integer&gt; callable = createIncCallable();<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      pool.submit(callable);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    }<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>    return true;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  public boolean canQueue() {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    return countersMap.size() &lt; maxQueueSize;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>  private Callable&lt;Integer&gt; createIncCallable() {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    return new Callable&lt;Integer&gt;() {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      @Override<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      public Integer call() throws Exception {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        int failures = 0;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        Set&lt;FullyQualifiedRow&gt; keys = countersMap.keySet();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        for (FullyQualifiedRow row : keys) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>          Long counter = countersMap.remove(row);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>          if (counter == null) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>            continue;<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>          Table table = null;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>          try {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>            table = handler.getTable(row.getTable());<a name="line.269"></a>
-<span class="sourceLineNo">270</span>            if (failures &gt; 2) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>              throw new IOException("Auto-Fail rest of ICVs");<a name="line.271"></a>
-<span class="sourceLineNo">272</span>            }<a name="line.272"></a>
-<span class="sourceLineNo">273</span>            table.incrementColumnValue(row.getRowKey(), row.getFamily(), row.getQualifier(),<a name="line.273"></a>
-<span class="sourceLineNo">274</span>              counter);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>          } catch (IOException e) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>            // log failure of increment<a name="line.276"></a>
-<span class="sourceLineNo">277</span>            failures++;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>            LOG.error("FAILED_ICV: " + Bytes.toString(row.getTable()) + ", "<a name="line.278"></a>
-<span class="sourceLineNo">279</span>                + Bytes.toStringBinary(row.getRowKey()) + ", "<a name="line.279"></a>
-<span class="sourceLineNo">280</span>                + Bytes.toStringBinary(row.getFamily()) + ", "<a name="line.280"></a>
-<span class="sourceLineNo">281</span>                + Bytes.toStringBinary(row.getQualifier()) + ", " + counter, e);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          } finally{<a name="line.282"></a>
-<span class="sourceLineNo">283</span>            if(table != null){<a name="line.283"></a>
-<span class="sourceLineNo">284</span>              table.close();<a name="line.284"></a>
-<span class="sourceLineNo">285</span>            }<a name="line.285"></a>
-<span class="sourceLineNo">286</span>          }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        }<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        return failures;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      }<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    };<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  /**<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * This method samples the incoming requests and, if selected, will check if<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * the corePoolSize should be changed.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * @param countersMapSize<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   */<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  private void dynamicallySetCoreSize(int countersMapSize) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    // Here we are using countersMapSize as a random number, meaning this<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    // could be a Random object<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    if (countersMapSize % 10 != 0) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      return;<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    double currentRatio = (double) countersMapSize / (double) maxQueueSize;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    int newValue = 1;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    if (currentRatio &lt; 0.1) {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      // it's 1<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    } else if (currentRatio &lt; 0.3) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      newValue = 2;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    } else if (currentRatio &lt; 0.5) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      newValue = 4;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    } else if (currentRatio &lt; 0.7) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      newValue = 8;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    } else if (currentRatio &lt; 0.9) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      newValue = 14;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    } else {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      newValue = 22;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    if (pool.getCorePoolSize() != newValue) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      pool.setCorePoolSize(newValue);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    }<a name="line.321"></a>
-<span class="sourceLineNo">322</span>  }<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>  // MBean get/set methods<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public int getQueueSize() {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    return pool.getQueue().size();<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  }<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  public int getMaxQueueSize() {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    return this.maxQueueSize;<a name="line.329"></a>
-<span class="sourceLineNo">330</span>  }<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  public void setMaxQueueSize(int newSize) {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    this.maxQueueSize = newSize;<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>  public long getPoolCompletedTaskCount() {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    return pool.getCompletedTaskCount();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  public long getPoolTaskCount() {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    return pool.getTaskCount();<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  public int getPoolLargestPoolSize() {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    return pool.getLargestPoolSize();<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  public int getCorePoolSize() {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    return pool.getCorePoolSize();<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  public void setCorePoolSize(int newCoreSize) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    pool.setCorePoolSize(newCoreSize);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  }<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  public int getMaxPoolSize() {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    return pool.getMaximumPoolSize();<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  }<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public void setMaxPoolSize(int newMaxSize) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    pool.setMaximumPoolSize(newMaxSize);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  public long getFailedIncrements() {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    return failedIncrements.sum();<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  }<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>  public long getSuccessfulCoalescings() {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    return successfulCoalescings.sum();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  public long getTotalIncrements() {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    return totalIncrements.sum();<a name="line.365"></a>
+<span class="sourceLineNo">240</span>    FullyQualifiedRow key = new FullyQualifiedRow(tableName, rowKey, fam, qual);<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>    long currentAmount = ammount;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    // Spin until able to insert the value back without collisions<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    while (true) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      Long value = countersMap.remove(key);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      if (value == null) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        // There was nothing there, create a new value<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        value = Long.valueOf(currentAmount);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      } else {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        value += currentAmount;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        successfulCoalescings.increment();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      }<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      // Try to put the value, only if there was none<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      Long oldValue = countersMap.putIfAbsent(key, value);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      if (oldValue == null) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        // We were able to put it in, we're done<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        break;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      }<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      // Someone else was able to put a value in, so let's remember our<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      // current value (plus what we picked up) and retry to add it in<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      currentAmount = value;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>    // We limit the size of the queue simply because all we need is a<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    // notification that something needs to be incremented. No need<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    // for millions of callables that mean the same thing.<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    if (pool.getQueue().size() &lt;= 1000) {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      // queue it up<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      Callable&lt;Integer&gt; callable = createIncCallable();<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      pool.submit(callable);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    }<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    return true;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public boolean canQueue() {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    return countersMap.size() &lt; maxQueueSize;<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  private Callable&lt;Integer&gt; createIncCallable() {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    return new Callable&lt;Integer&gt;() {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      @Override<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      public Integer call() throws Exception {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>        int failures = 0;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        Set&lt;FullyQualifiedRow&gt; keys = countersMap.keySet();<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        for (FullyQualifiedRow row : keys) {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          Long counter = countersMap.remove(row);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          if (counter == null) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>            continue;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>          }<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          Table table = null;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          try {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            table = handler.getTable(row.getTable());<a name="line.293"></a>
+<span class="sourceLineNo">294</span>            if (failures &gt; 2) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>              throw new IOException("Auto-Fail rest of ICVs");<a name="line.295"></a>
+<span class="sourceLineNo">296</span>            }<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            table.incrementColumnValue(row.getRowKey(), row.getFamily(), row.getQualifier(),<a name="line.297"></a>
+<span class="sourceLineNo">298</span>              counter);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          } catch (IOException e) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>            // log failure of increment<a name="line.300"></a>
+<span class="sourceLineNo">301</span>            failures++;<a name="line.301"></a>
+<span class="sourceLineNo">302</span>            LOG.error("FAILED_ICV: " + Bytes.toString(row.getTable()) + ", "<a name="line.302"></a>
+<span class="sourceLineNo">303</span>                + Bytes.toStringBinary(row.getRowKey()) + ", "<a name="line.303"></a>
+<span class="sourceLineNo">304</span>                + Bytes.toStringBinary(row.getFamily()) + ", "<a name="line.304"></a>
+<span class="sourceLineNo">305</span>                + Bytes.toStringBinary(row.getQualifier()) + ", " + counter, e);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          } finally{<a name="line.306"></a>
+<span class="sourceLineNo">307</span>            if(table != null){<a name="line.307"></a>
+<span class="sourceLineNo">308</span>              table.close();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>            }<a name="line.309"></a>
+<span class="sourceLineNo">310</span>          }<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        return failures;<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      }<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    };<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  }<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span>  /**<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * This method samples the incoming requests and, if selected, will check if<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * the corePoolSize should be changed.<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   * @param countersMapSize the size of the counters map<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   */<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  private void dynamicallySetCoreSize(int countersMapSize) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    // Here we are using countersMapSize as a random number, meaning this<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    // could be a Random object<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    if (countersMapSize % 10 != 0) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      return;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    }<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    double currentRatio = (double) countersMapSize / (double) maxQueueSize;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    int newValue;<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>    if (currentRatio &lt; 0.1) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      newValue = 1;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    } else if (currentRatio &lt; 0.3) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      newValue = 2;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    } else if (currentRatio &lt; 0.5) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      newValue = 4;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    } else if (currentRatio &lt; 0.7) {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      newValue = 8;<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    } else if (currentRatio &lt; 0.9) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      newValue = 14;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    } else {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      newValue = 22;<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
+<span class="sourceLineNo">344</span><a name="line.344"></a>
+<span class="sourceLineNo">345</span>    if (pool.getCorePoolSize() != newValue) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      pool.setCorePoolSize(newValue);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  // MBean get/set methods<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  public int getQueueSize() {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    return pool.getQueue().size();<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span>  public int getMaxQueueSize() {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    return this.maxQueueSize;<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  public void setMaxQueueSize(int newSize) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    this.maxQueueSize = newSize;<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  }<a name="line.359"></a>
+<span class="sourceLineNo">360</span><a name="line.360"></a>
+<span class="sourceLineNo">361</span>  public long getPoolCompletedTaskCount() {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    return pool.getCompletedTaskCount();<a name="line.362"></a>
+<span class="sourceLineNo">363</span>  }<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  public long getPoolTaskCount() {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    return pool.getTaskCount();<a name="line.365"></a>
 <span class="sourceLineNo">366</span>  }<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>  public long getCountersMapSize() {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    return countersMap.size();<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>}<a name="line.372"></a>
+<span class="sourceLineNo">367</span>  public int getPoolLargestPoolSize() {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    return pool.getLargestPoolSize();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  }<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  public int getCorePoolSize() {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    return pool.getCorePoolSize();<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  public void setCorePoolSize(int newCoreSize) {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    pool.setCorePoolSize(newCoreSize);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  }<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  public int getMaxPoolSize() {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    return pool.getMaximumPoolSize();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  }<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  public void setMaxPoolSize(int newMaxSize) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    pool.setMaximumPoolSize(newMaxSize);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  public long getFailedIncrements() {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    return failedIncrements.sum();<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  public long getSuccessfulCoalescings() {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    return successfulCoalescings.sum();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>  }<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span>  public long getTotalIncrements() {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    return totalIncrements.sum();<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span>  public long getCountersMapSize() {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    return countersMap.size();<a name="line.395"></a>
+<span class="sourceLineNo">396</span>  }<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>}<a name="line.398"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.Args.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.Args.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.Args.html
index 6e1a98f..38d5cae 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.Args.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.Args.html
@@ -266,7 +266,7 @@
 <span class="sourceLineNo">258</span>    serverTransport_.interrupt();<a name="line.258"></a>
 <span class="sourceLineNo">259</span>  }<a name="line.259"></a>
 <span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>  private class ClientConnnection implements Runnable {<a name="line.261"></a>
+<span class="sourceLineNo">261</span>  private final class ClientConnnection implements Runnable {<a name="line.261"></a>
 <span class="sourceLineNo">262</span><a name="line.262"></a>
 <span class="sourceLineNo">263</span>    private TTransport client;<a name="line.263"></a>
 <span class="sourceLineNo">264</span><a name="line.264"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.ClientConnnection.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.ClientConnnection.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.ClientConnnection.html
index 6e1a98f..38d5cae 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.ClientConnnection.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.ClientConnnection.html
@@ -266,7 +266,7 @@
 <span class="sourceLineNo">258</span>    serverTransport_.interrupt();<a name="line.258"></a>
 <span class="sourceLineNo">259</span>  }<a name="line.259"></a>
 <span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>  private class ClientConnnection implements Runnable {<a name="line.261"></a>
+<span class="sourceLineNo">261</span>  private final class ClientConnnection implements Runnable {<a name="line.261"></a>
 <span class="sourceLineNo">262</span><a name="line.262"></a>
 <span class="sourceLineNo">263</span>    private TTransport client;<a name="line.263"></a>
 <span class="sourceLineNo">264</span><a name="line.264"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.html
index 6e1a98f..38d5cae 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.html
@@ -266,7 +266,7 @@
 <span class="sourceLineNo">258</span>    serverTransport_.interrupt();<a name="line.258"></a>
 <span class="sourceLineNo">259</span>  }<a name="line.259"></a>
 <span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>  private class ClientConnnection implements Runnable {<a name="line.261"></a>
+<span class="sourceLineNo">261</span>  private final class ClientConnnection implements Runnable {<a name="line.261"></a>
 <span class="sourceLineNo">262</span><a name="line.262"></a>
 <span class="sourceLineNo">263</span>    private TTransport client;<a name="line.263"></a>
 <span class="sourceLineNo">264</span><a name="line.264"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html
index f015bd3..7a1ace9 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html
@@ -72,99 +72,101 @@
 <span class="sourceLineNo">064</span><a name="line.64"></a>
 <span class="sourceLineNo">065</span><a name="line.65"></a>
 <span class="sourceLineNo">066</span>  public ThriftMetrics(Configuration conf, ThriftServerType t) {<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    slowResponseTime = conf.getLong( SLOW_RESPONSE_NANO_SEC, DEFAULT_SLOW_RESPONSE_NANO_SEC);<a name="line.67"></a>
+<span class="sourceLineNo">067</span>    slowResponseTime = conf.getLong(SLOW_RESPONSE_NANO_SEC, DEFAULT_SLOW_RESPONSE_NANO_SEC);<a name="line.67"></a>
 <span class="sourceLineNo">068</span><a name="line.68"></a>
 <span class="sourceLineNo">069</span>    if (t == ThriftServerType.ONE) {<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      source = CompatibilitySingletonFactory.getInstance(MetricsThriftServerSourceFactory.class).createThriftOneSource();<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    } else if (t == ThriftServerType.TWO) {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      source = CompatibilitySingletonFactory.getInstance(MetricsThriftServerSourceFactory.class).createThriftTwoSource();<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    }<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  }<a name="line.75"></a>
+<span class="sourceLineNo">070</span>      source = CompatibilitySingletonFactory.getInstance(MetricsThriftServerSourceFactory.class)<a name="line.70"></a>
+<span class="sourceLineNo">071</span>              .createThriftOneSource();<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    } else if (t == ThriftServerType.TWO) {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      source = CompatibilitySingletonFactory.getInstance(MetricsThriftServerSourceFactory.class)<a name="line.73"></a>
+<span class="sourceLineNo">074</span>              .createThriftTwoSource();<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    }<a name="line.75"></a>
 <span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span>  public void incTimeInQueue(long time) {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    source.incTimeInQueue(time);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public void setCallQueueLen(int len) {<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    source.setCallQueueLen(len);<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  }<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>  public void incNumRowKeysInBatchGet(int diff) {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    source.incNumRowKeysInBatchGet(diff);<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  }<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  public void incNumRowKeysInBatchMutate(int diff) {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    source.incNumRowKeysInBatchMutate(diff);<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  }<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  public void incMethodTime(String name, long time) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    source.incMethodTime(name, time);<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    // inc general processTime<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    source.incCall(time);<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    if (time &gt; slowResponseTime) {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      source.incSlowCall(time);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  }<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>  public void incActiveWorkerCount() {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    source.incActiveWorkerCount();<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  }<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public void decActiveWorkerCount() {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    source.decActiveWorkerCount();<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>  /**<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * Increment the count for a specific exception type.  This is called for each exception type<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * that is returned to the thrift handler.<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * @param rawThrowable type of exception<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   */<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  public void exception(Throwable rawThrowable) {<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    source.exception();<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>    Throwable throwable = unwrap(rawThrowable);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    /**<a name="line.119"></a>
-<span class="sourceLineNo">120</span>     * Keep some metrics for commonly seen exceptions<a name="line.120"></a>
-<span class="sourceLineNo">121</span>     *<a name="line.121"></a>
-<span class="sourceLineNo">122</span>     * Try and  put the most common types first.<a name="line.122"></a>
-<span class="sourceLineNo">123</span>     * Place child types before the parent type that they extend.<a name="line.123"></a>
-<span class="sourceLineNo">124</span>     *<a name="line.124"></a>
-<span class="sourceLineNo">125</span>     * If this gets much larger we might have to go to a hashmap<a name="line.125"></a>
-<span class="sourceLineNo">126</span>     */<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    if (throwable != null) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      if (throwable instanceof OutOfOrderScannerNextException) {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        source.outOfOrderException();<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      } else if (throwable instanceof RegionTooBusyException) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>        source.tooBusyException();<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      } else if (throwable instanceof UnknownScannerException) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>        source.unknownScannerException();<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      } else if (throwable instanceof ScannerResetException) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        source.scannerResetException();<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      } else if (throwable instanceof RegionMovedException) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>        source.movedRegionException();<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      } else if (throwable instanceof NotServingRegionException) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>        source.notServingRegionException();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      } else if (throwable instanceof FailedSanityCheckException) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>        source.failedSanityException();<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      } else if (throwable instanceof MultiActionResultTooLarge) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        source.multiActionTooLargeException();<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      } else if (throwable instanceof CallQueueTooBigException) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>        source.callQueueTooBigException();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      }<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    }<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private static Throwable unwrap(Throwable t) {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    if (t == null) {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      return t;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    }<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    if (t instanceof TIOError || t instanceof IOError) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      t = t.getCause();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    }<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    return ClientExceptionsUtil.findException(t);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
-<span class="sourceLineNo">159</span>}<a name="line.159"></a>
+<span class="sourceLineNo">077</span>  }<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>  public void incTimeInQueue(long time) {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    source.incTimeInQueue(time);<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  }<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>  public void setCallQueueLen(int len) {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    source.setCallQueueLen(len);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  }<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>  public void incNumRowKeysInBatchGet(int diff) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    source.incNumRowKeysInBatchGet(diff);<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  }<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public void incNumRowKeysInBatchMutate(int diff) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    source.incNumRowKeysInBatchMutate(diff);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  }<a name="line.93"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
+<span class="sourceLineNo">095</span>  public void incMethodTime(String name, long time) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    source.incMethodTime(name, time);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    // inc general processTime<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    source.incCall(time);<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    if (time &gt; slowResponseTime) {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      source.incSlowCall(time);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    }<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  }<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>  public void incActiveWorkerCount() {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    source.incActiveWorkerCount();<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  }<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>  public void decActiveWorkerCount() {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    source.decActiveWorkerCount();<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  }<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>  /**<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   * Increment the count for a specific exception type.  This is called for each exception type<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * that is returned to the thrift handler.<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   * @param rawThrowable type of exception<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   */<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  public void exception(Throwable rawThrowable) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    source.exception();<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>    Throwable throwable = unwrap(rawThrowable);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    /**<a name="line.121"></a>
+<span class="sourceLineNo">122</span>     * Keep some metrics for commonly seen exceptions<a name="line.122"></a>
+<span class="sourceLineNo">123</span>     *<a name="line.123"></a>
+<span class="sourceLineNo">124</span>     * Try and  put the most common types first.<a name="line.124"></a>
+<span class="sourceLineNo">125</span>     * Place child types before the parent type that they extend.<a name="line.125"></a>
+<span class="sourceLineNo">126</span>     *<a name="line.126"></a>
+<span class="sourceLineNo">127</span>     * If this gets much larger we might have to go to a hashmap<a name="line.127"></a>
+<span class="sourceLineNo">128</span>     */<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    if (throwable != null) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      if (throwable instanceof OutOfOrderScannerNextException) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>        source.outOfOrderException();<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      } else if (throwable instanceof RegionTooBusyException) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>        source.tooBusyException();<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      } else if (throwable instanceof UnknownScannerException) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>        source.unknownScannerException();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      } else if (throwable instanceof ScannerResetException) {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        source.scannerResetException();<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      } else if (throwable instanceof RegionMovedException) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        source.movedRegionException();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      } else if (throwable instanceof NotServingRegionException) {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        source.notServingRegionException();<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      } else if (throwable instanceof FailedSanityCheckException) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        source.failedSanityException();<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      } else if (throwable instanceof MultiActionResultTooLarge) {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        source.multiActionTooLargeException();<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      } else if (throwable instanceof CallQueueTooBigException) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        source.callQueueTooBigException();<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    }<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  private static Throwable unwrap(Throwable t) {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    if (t == null) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      return t;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    if (t instanceof TIOError || t instanceof IOError) {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      t = t.getCause();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    return ClientExceptionsUtil.findException(t);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
+<span class="sourceLineNo">161</span>}<a name="line.161"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html
index f015bd3..7a1ace9 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftMetrics.html
@@ -72,99 +72,101 @@
 <span class="sourceLineNo">064</span><a name="line.64"></a>
 <span class="sourceLineNo">065</span><a name="line.65"></a>
 <span class="sourceLineNo">066</span>  public ThriftMetrics(Configuration conf, ThriftServerType t) {<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    slowResponseTime = conf.getLong( SLOW_RESPONSE_NANO_SEC, DEFAULT_SLOW_RESPONSE_NANO_SEC);<a name="line.67"></a>
+<span class="sourceLineNo">067</span>    slowResponseTime = conf.getLong(SLOW_RESPONSE_NANO_SEC, DEFAULT_SLOW_RESPONSE_NANO_SEC);<a name="line.67"></a>
 <span class="sourceLineNo">068</span><a name="line.68"></a>
 <span class="sourceLineNo">069</span>    if (t == ThriftServerType.ONE) {<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      source = CompatibilitySingletonFactory.getInstance(MetricsThriftServerSourceFactory.class).createThriftOneSource();<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    } else if (t == ThriftServerType.TWO) {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      source = CompatibilitySingletonFactory.getInstance(MetricsThriftServerSourceFactory.class).createThriftTwoSource();<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    }<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  }<a name="line.75"></a>
+<span class="sourceLineNo">070</span>      source = CompatibilitySingletonFactory.getInstance(MetricsThriftServerSourceFactory.class)<a name="line.70"></a>
+<span class="sourceLineNo">071</span>              .createThriftOneSource();<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    } else if (t == ThriftServerType.TWO) {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      source = CompatibilitySingletonFactory.getInstance(MetricsThriftServerSourceFactory.class)<a name="line.73"></a>
+<span class="sourceLineNo">074</span>              .createThriftTwoSource();<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    }<a name="line.75"></a>
 <span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span>  public void incTimeInQueue(long time) {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    source.incTimeInQueue(time);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public void setCallQueueLen(int len) {<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    source.setCallQueueLen(len);<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  }<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>  public void incNumRowKeysInBatchGet(int diff) {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    source.incNumRowKeysInBatchGet(diff);<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  }<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  public void incNumRowKeysInBatchMutate(int diff) {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    source.incNumRowKeysInBatchMutate(diff);<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  }<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  public void incMethodTime(String name, long time) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    source.incMethodTime(name, time);<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    // inc general processTime<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    source.incCall(time);<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    if (time &gt; slowResponseTime) {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      source.incSlowCall(time);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  }<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>  public void incActiveWorkerCount() {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    source.incActiveWorkerCount();<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  }<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public void decActiveWorkerCount() {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    source.decActiveWorkerCount();<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>  /**<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * Increment the count for a specific exception type.  This is called for each exception type<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * that is returned to the thrift handler.<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * @param rawThrowable type of exception<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   */<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  public void exception(Throwable rawThrowable) {<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    source.exception();<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>    Throwable throwable = unwrap(rawThrowable);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    /**<a name="line.119"></a>
-<span class="sourceLineNo">120</span>     * Keep some metrics for commonly seen exceptions<a name="line.120"></a>
-<span class="sourceLineNo">121</span>     *<a name="line.121"></a>
-<span class="sourceLineNo">122</span>     * Try and  put the most common types first.<a name="line.122"></a>
-<span class="sourceLineNo">123</span>     * Place child types before the parent type that they extend.<a name="line.123"></a>
-<span class="sourceLineNo">124</span>     *<a name="line.124"></a>
-<span class="sourceLineNo">125</span>     * If this gets much larger we might have to go to a hashmap<a name="line.125"></a>
-<span class="sourceLineNo">126</span>     */<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    if (throwable != null) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      if (throwable instanceof OutOfOrderScannerNextException) {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        source.outOfOrderException();<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      } else if (throwable instanceof RegionTooBusyException) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>        source.tooBusyException();<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      } else if (throwable instanceof UnknownScannerException) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>        source.unknownScannerException();<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      } else if (throwable instanceof ScannerResetException) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        source.scannerResetException();<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      } else if (throwable instanceof RegionMovedException) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>        source.movedRegionException();<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      } else if (throwable instanceof NotServingRegionException) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>        source.notServingRegionException();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      } else if (throwable instanceof FailedSanityCheckException) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>        source.failedSanityException();<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      } else if (throwable instanceof MultiActionResultTooLarge) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        source.multiActionTooLargeException();<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      } else if (throwable instanceof CallQueueTooBigException) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>        source.callQueueTooBigException();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      }<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    }<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private static Throwable unwrap(Throwable t) {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    if (t == null) {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      return t;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    }<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    if (t instanceof TIOError || t instanceof IOError) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      t = t.getCause();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    }<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    return ClientExceptionsUtil.findException(t);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
-<span class="sourceLineNo">159</span>}<a name="line.159"></a>
+<span class="sourceLineNo">077</span>  }<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>  public void incTimeInQueue(long time) {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    source.incTimeInQueue(time);<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  }<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>  public void setCallQueueLen(int len) {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    source.setCallQueueLen(len);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  }<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>  public void incNumRowKeysInBatchGet(int diff) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    source.incNumRowKeysInBatchGet(diff);<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  }<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public void incNumRowKeysInBatchMutate(int diff) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    source.incNumRowKeysInBatchMutate(diff);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  }<a name="line.93"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
+<span class="sourceLineNo">095</span>  public void incMethodTime(String name, long time) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    source.incMethodTime(name, time);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    // inc general processTime<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    source.incCall(time);<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    if (time &gt; slowResponseTime) {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      source.incSlowCall(time);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    }<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  }<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>  public void incActiveWorkerCount() {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    source.incActiveWorkerCount();<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  }<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>  public void decActiveWorkerCount() {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    source.decActiveWorkerCount();<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  }<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>  /**<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   * Increment the count for a specific exception type.  This is called for each exception type<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * that is returned to the thrift handler.<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   * @param rawThrowable type of exception<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   */<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  public void exception(Throwable rawThrowable) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    source.exception();<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>    Throwable throwable = unwrap(rawThrowable);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    /**<a name="line.121"></a>
+<span class="sourceLineNo">122</span>     * Keep some metrics for commonly seen exceptions<a name="line.122"></a>
+<span class="sourceLineNo">123</span>     *<a name="line.123"></a>
+<span class="sourceLineNo">124</span>     * Try and  put the most common types first.<a name="line.124"></a>
+<span class="sourceLineNo">125</span>     * Place child types before the parent type that they extend.<a name="line.125"></a>
+<span class="sourceLineNo">126</span>     *<a name="line.126"></a>
+<span class="sourceLineNo">127</span>     * If this gets much larger we might have to go to a hashmap<a name="line.127"></a>
+<span class="sourceLineNo">128</span>     */<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    if (throwable != null) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      if (throwable instanceof OutOfOrderScannerNextException) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>        source.outOfOrderException();<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      } else if (throwable instanceof RegionTooBusyException) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>        source.tooBusyException();<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      } else if (throwable instanceof UnknownScannerException) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>        source.unknownScannerException();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      } else if (throwable instanceof ScannerResetException) {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        source.scannerResetException();<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      } else if (throwable instanceof RegionMovedException) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        source.movedRegionException();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      } else if (throwable instanceof NotServingRegionException) {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        source.notServingRegionException();<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      } else if (throwable instanceof FailedSanityCheckException) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        source.failedSanityException();<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      } else if (throwable instanceof MultiActionResultTooLarge) {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        source.multiActionTooLargeException();<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      } else if (throwable instanceof CallQueueTooBigException) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        source.callQueueTooBigException();<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    }<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  private static Throwable unwrap(Throwable t) {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    if (t == null) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      return t;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    if (t instanceof TIOError || t instanceof IOError) {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      t = t.getCause();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    return ClientExceptionsUtil.findException(t);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
+<span class="sourceLineNo">161</span>}<a name="line.161"></a>
 
 
 


[26/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerStateTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerStateTracker.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerStateTracker.html
index 398262a..7630132 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerStateTracker.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerStateTracker.html
@@ -39,16 +39,16 @@
 <span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.client.replication.ReplicationPeerConfigUtil;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.32"></a>
 <span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.zookeeper.ZKNodeTracker;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.zookeeper.KeeperException;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.zookeeper.KeeperException.NodeExistsException;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.slf4j.Logger;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.slf4j.LoggerFactory;<a name="line.43"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.zookeeper.ZKNodeTracker;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.zookeeper.KeeperException;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.slf4j.Logger;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.slf4j.LoggerFactory;<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<a name="line.43"></a>
 <span class="sourceLineNo">044</span><a name="line.44"></a>
 <span class="sourceLineNo">045</span>@InterfaceAudience.Private<a name="line.45"></a>
 <span class="sourceLineNo">046</span>public class ReplicationPeerZKImpl extends ReplicationStateZKBase<a name="line.46"></a>
@@ -85,246 +85,241 @@
 <span class="sourceLineNo">077</span>   * start a state tracker to check whether this peer is enabled or not<a name="line.77"></a>
 <span class="sourceLineNo">078</span>   *<a name="line.78"></a>
 <span class="sourceLineNo">079</span>   * @param peerStateNode path to zk node which stores peer state<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   * @throws KeeperException<a name="line.80"></a>
+<span class="sourceLineNo">080</span>   * @throws KeeperException if creating the znode fails<a name="line.80"></a>
 <span class="sourceLineNo">081</span>   */<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  public void startStateTracker(String peerStateNode)<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      throws KeeperException {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    ensurePeerEnabled(peerStateNode);<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    this.peerStateTracker = new PeerStateTracker(peerStateNode, zookeeper, this);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    this.peerStateTracker.start();<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    try {<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      this.readPeerStateZnode();<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    } catch (DeserializationException e) {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      throw ZKUtil.convert(e);<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    }<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  }<a name="line.92"></a>
-<span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>  private void readPeerStateZnode() throws DeserializationException {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    this.peerState =<a name="line.95"></a>
-<span class="sourceLineNo">096</span>        isStateEnabled(this.peerStateTracker.getData(false))<a name="line.96"></a>
-<span class="sourceLineNo">097</span>          ? PeerState.ENABLED<a name="line.97"></a>
-<span class="sourceLineNo">098</span>          : PeerState.DISABLED;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  }<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>  /**<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * start a table-cfs tracker to listen the (table, cf-list) map change<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * @param peerConfigNode path to zk node which stores table-cfs<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @throws KeeperException<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public void startPeerConfigTracker(String peerConfigNode)<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    throws KeeperException {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    this.peerConfigTracker = new PeerConfigTracker(peerConfigNode, zookeeper,<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        this);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    this.peerConfigTracker.start();<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    this.readPeerConfig();<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  }<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private ReplicationPeerConfig readPeerConfig() {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    try {<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      byte[] data = peerConfigTracker.getData(false);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      if (data != null) {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>        this.peerConfig = ReplicationPeerConfigUtil.parsePeerFrom(data);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      }<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    } catch (DeserializationException e) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      LOG.error("", e);<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    }<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    return this.peerConfig;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  @Override<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public PeerState getPeerState() {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    return peerState;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  }<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span>  /**<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   * Get the identifier of this peer<a name="line.132"></a>
-<span class="sourceLineNo">133</span>   * @return string representation of the id (short)<a name="line.133"></a>
-<span class="sourceLineNo">134</span>   */<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  @Override<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  public String getId() {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    return id;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span>  /**<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * Get the peer config object<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   * @return the ReplicationPeerConfig for this peer<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   */<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  @Override<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public ReplicationPeerConfig getPeerConfig() {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    return peerConfig;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  }<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>  /**<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * Get the configuration object required to communicate with this peer<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * @return configuration object<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  @Override<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  public Configuration getConfiguration() {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    return conf;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  }<a name="line.156"></a>
-<span class="sourceLineNo">157</span><a name="line.157"></a>
-<span class="sourceLineNo">158</span>  /**<a name="line.158"></a>
-<span class="sourceLineNo">159</span>   * Get replicable (table, cf-list) map of this peer<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   * @return the replicable (table, cf-list) map<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   */<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  @Override<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  public Map&lt;TableName, List&lt;String&gt;&gt; getTableCFs() {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    this.tableCFs = peerConfig.getTableCFsMap();<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    return this.tableCFs;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  }<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span>  /**<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * Get replicable namespace set of this peer<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * @return the replicable namespaces set<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   */<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  @Override<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  public Set&lt;String&gt; getNamespaces() {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    return this.peerConfig.getNamespaces();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  }<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>  @Override<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  public long getPeerBandwidth() {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    return this.peerConfig.getBandwidth();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  }<a name="line.180"></a>
-<span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>  @Override<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  public void trackPeerConfigChanges(ReplicationPeerConfigListener listener) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    if (this.peerConfigTracker != null){<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      this.peerConfigTracker.setListener(listener);<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  }<a name="line.187"></a>
-<span class="sourceLineNo">188</span><a name="line.188"></a>
-<span class="sourceLineNo">189</span>  @Override<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  public void abort(String why, Throwable e) {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    LOG.error(HBaseMarkers.FATAL, "The ReplicationPeer corresponding to peer " +<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        peerConfig + " was aborted for the following reason(s):" + why, e);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>  }<a name="line.193"></a>
-<span class="sourceLineNo">194</span><a name="line.194"></a>
-<span class="sourceLineNo">195</span>  @Override<a name="line.195"></a>
-<span class="sourceLineNo">196</span>  public boolean isAborted() {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    // Currently the replication peer is never "Aborted", we just log when the<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    // abort method is called.<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    return false;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  }<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>  @Override<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  public void close() throws IOException {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    // TODO: stop zkw?<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  }<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>  /**<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   * Parse the raw data from ZK to get a peer's state<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   * @param bytes raw ZK data<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   * @return True if the passed in &lt;code&gt;bytes&lt;/code&gt; are those of a pb serialized ENABLED state.<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   * @throws DeserializationException<a name="line.211"></a>
-<span class="sourceLineNo">212</span>   */<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  public static boolean isStateEnabled(final byte[] bytes) throws DeserializationException {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    ReplicationProtos.ReplicationState.State state = parseStateFrom(bytes);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    return ReplicationProtos.ReplicationState.State.ENABLED == state;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  }<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>  /**<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @param bytes Content of a state znode.<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   * @return State parsed from the passed bytes.<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * @throws DeserializationException<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   */<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  private static ReplicationProtos.ReplicationState.State parseStateFrom(final byte[] bytes)<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      throws DeserializationException {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    ProtobufUtil.expectPBMagicPrefix(bytes);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    int pblen = ProtobufUtil.lengthOfPBMagic();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    ReplicationProtos.ReplicationState.Builder builder =<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        ReplicationProtos.ReplicationState.newBuilder();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    ReplicationProtos.ReplicationState state;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    try {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      ProtobufUtil.mergeFrom(builder, bytes, pblen, bytes.length - pblen);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      state = builder.build();<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      return state.getState();<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    } catch (IOException e) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      throw new DeserializationException(e);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>  /**<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   * Utility method to ensure an ENABLED znode is in place; if not present, we create it.<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * @param path Path to znode to check<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   * @return True if we created the znode.<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * @throws NodeExistsException<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   * @throws KeeperException<a name="line.244"></a>
-<span class="sourceLineNo">245</span>   */<a name="line.245"></a>
-<span class="sourceLineNo">246</span>  private boolean ensurePeerEnabled(final String path)<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      throws NodeExistsException, KeeperException {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    if (ZKUtil.checkExists(zookeeper, path) == -1) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      // There is a race b/w PeerWatcher and ReplicationZookeeper#add method to create the<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      // peer-state znode. This happens while adding a peer.<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      // The peer state data is set as "ENABLED" by default.<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      ZKUtil.createNodeIfNotExistsAndWatch(zookeeper, path,<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        ReplicationStateZKBase.ENABLED_ZNODE_BYTES);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      return true;<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    return false;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  }<a name="line.257"></a>
+<span class="sourceLineNo">082</span>  public void startStateTracker(String peerStateNode) throws KeeperException {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    ensurePeerEnabled(peerStateNode);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    this.peerStateTracker = new PeerStateTracker(peerStateNode, zookeeper, this);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    this.peerStateTracker.start();<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    try {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      this.readPeerStateZnode();<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    } catch (DeserializationException e) {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      throw ZKUtil.convert(e);<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  }<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>  private void readPeerStateZnode() throws DeserializationException {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    this.peerState =<a name="line.94"></a>
+<span class="sourceLineNo">095</span>        isStateEnabled(this.peerStateTracker.getData(false))<a name="line.95"></a>
+<span class="sourceLineNo">096</span>          ? PeerState.ENABLED<a name="line.96"></a>
+<span class="sourceLineNo">097</span>          : PeerState.DISABLED;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  }<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span>  /**<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * start a table-cfs tracker to listen the (table, cf-list) map change<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * @param peerConfigNode path to zk node which stores table-cfs<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   */<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  public void startPeerConfigTracker(String peerConfigNode) throws KeeperException {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    this.peerConfigTracker = new PeerConfigTracker(peerConfigNode, zookeeper,<a name="line.105"></a>
+<span class="sourceLineNo">106</span>        this);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    this.peerConfigTracker.start();<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    this.readPeerConfig();<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  }<a name="line.109"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private ReplicationPeerConfig readPeerConfig() {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    try {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      byte[] data = peerConfigTracker.getData(false);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      if (data != null) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>        this.peerConfig = ReplicationPeerConfigUtil.parsePeerFrom(data);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      }<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    } catch (DeserializationException e) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      LOG.error("", e);<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    }<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    return this.peerConfig;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
+<span class="sourceLineNo">122</span><a name="line.122"></a>
+<span class="sourceLineNo">123</span>  @Override<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  public PeerState getPeerState() {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    return peerState;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  /**<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   * Get the identifier of this peer<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * @return string representation of the id (short)<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  @Override<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  public String getId() {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    return id;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  }<a name="line.135"></a>
+<span class="sourceLineNo">136</span><a name="line.136"></a>
+<span class="sourceLineNo">137</span>  /**<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   * Get the peer config object<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * @return the ReplicationPeerConfig for this peer<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   */<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  @Override<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  public ReplicationPeerConfig getPeerConfig() {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    return peerConfig;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  }<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  /**<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * Get the configuration object required to communicate with this peer<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * @return configuration object<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   */<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  @Override<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  public Configuration getConfiguration() {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    return conf;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  }<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  /**<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   * Get replicable (table, cf-list) map of this peer<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   * @return the replicable (table, cf-list) map<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   */<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  @Override<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  public Map&lt;TableName, List&lt;String&gt;&gt; getTableCFs() {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    this.tableCFs = peerConfig.getTableCFsMap();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    return this.tableCFs;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  /**<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * Get replicable namespace set of this peer<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * @return the replicable namespaces set<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   */<a name="line.168"></a>
+<span class="sourceLineNo">169</span>  @Override<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  public Set&lt;String&gt; getNamespaces() {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    return this.peerConfig.getNamespaces();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>  @Override<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  public long getPeerBandwidth() {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    return this.peerConfig.getBandwidth();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  }<a name="line.177"></a>
+<span class="sourceLineNo">178</span><a name="line.178"></a>
+<span class="sourceLineNo">179</span>  @Override<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  public void trackPeerConfigChanges(ReplicationPeerConfigListener listener) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    if (this.peerConfigTracker != null){<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      this.peerConfigTracker.setListener(listener);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    }<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  @Override<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  public void abort(String why, Throwable e) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    LOG.error(HBaseMarkers.FATAL, "The ReplicationPeer corresponding to peer " +<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        peerConfig + " was aborted for the following reason(s):" + why, e);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  }<a name="line.190"></a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span>  @Override<a name="line.192"></a>
+<span class="sourceLineNo">193</span>  public boolean isAborted() {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    // Currently the replication peer is never "Aborted", we just log when the<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    // abort method is called.<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    return false;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  }<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>  @Override<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  public void close() throws IOException {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    // TODO: stop zkw?<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  }<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>  /**<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   * Parse the raw data from ZK to get a peer's state<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   * @param bytes raw ZK data<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * @return True if the passed in &lt;code&gt;bytes&lt;/code&gt; are those of a pb serialized ENABLED state.<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   * @throws DeserializationException if parsing the state fails<a name="line.208"></a>
+<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  public static boolean isStateEnabled(final byte[] bytes) throws DeserializationException {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    ReplicationProtos.ReplicationState.State state = parseStateFrom(bytes);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    return ReplicationProtos.ReplicationState.State.ENABLED == state;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
+<span class="sourceLineNo">214</span><a name="line.214"></a>
+<span class="sourceLineNo">215</span>  /**<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   * @param bytes Content of a state znode.<a name="line.216"></a>
+<span class="sourceLineNo">217</span>   * @return State parsed from the passed bytes.<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * @throws DeserializationException if a ProtoBuf operation fails<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   */<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  private static ReplicationProtos.ReplicationState.State parseStateFrom(final byte[] bytes)<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      throws DeserializationException {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    ProtobufUtil.expectPBMagicPrefix(bytes);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    int pblen = ProtobufUtil.lengthOfPBMagic();<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    ReplicationProtos.ReplicationState.Builder builder =<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        ReplicationProtos.ReplicationState.newBuilder();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    ReplicationProtos.ReplicationState state;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    try {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      ProtobufUtil.mergeFrom(builder, bytes, pblen, bytes.length - pblen);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      state = builder.build();<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      return state.getState();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    } catch (IOException e) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      throw new DeserializationException(e);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>  /**<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   * Utility method to ensure an ENABLED znode is in place; if not present, we create it.<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   * @param path Path to znode to check<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   * @return True if we created the znode.<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   * @throws KeeperException if creating the znode fails<a name="line.240"></a>
+<span class="sourceLineNo">241</span>   */<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  private boolean ensurePeerEnabled(final String path) throws KeeperException {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    if (ZKUtil.checkExists(zookeeper, path) == -1) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      // There is a race b/w PeerWatcher and ReplicationZookeeper#add method to create the<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      // peer-state znode. This happens while adding a peer.<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      // The peer state data is set as "ENABLED" by default.<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      ZKUtil.createNodeIfNotExistsAndWatch(zookeeper, path,<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        ReplicationStateZKBase.ENABLED_ZNODE_BYTES);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      return true;<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    return false;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  /**<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * Tracker for state of this peer<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
+<span class="sourceLineNo">257</span>  public class PeerStateTracker extends ZKNodeTracker {<a name="line.257"></a>
 <span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>  /**<a name="line.259"></a>
-<span class="sourceLineNo">260</span>   * Tracker for state of this peer<a name="line.260"></a>
-<span class="sourceLineNo">261</span>   */<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  public class PeerStateTracker extends ZKNodeTracker {<a name="line.262"></a>
+<span class="sourceLineNo">259</span>    public PeerStateTracker(String peerStateZNode, ZKWatcher watcher,<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        Abortable abortable) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      super(watcher, peerStateZNode, abortable);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
 <span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>    public PeerStateTracker(String peerStateZNode, ZKWatcher watcher,<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        Abortable abortable) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      super(watcher, peerStateZNode, abortable);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    @Override<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    public synchronized void nodeDataChanged(String path) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      if (path.equals(node)) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        super.nodeDataChanged(path);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        try {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>          readPeerStateZnode();<a name="line.274"></a>
-<span class="sourceLineNo">275</span>        } catch (DeserializationException e) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>          LOG.warn("Failed deserializing the content of " + path, e);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>        }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      }<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    }<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
+<span class="sourceLineNo">264</span>    @Override<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    public synchronized void nodeDataChanged(String path) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      if (path.equals(node)) {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        super.nodeDataChanged(path);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        try {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>          readPeerStateZnode();<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        } catch (DeserializationException e) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>          LOG.warn("Failed deserializing the content of " + path, e);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>  /**<a name="line.277"></a>
+<span class="sourceLineNo">278</span>   * Tracker for PeerConfigNode of this peer<a name="line.278"></a>
+<span class="sourceLineNo">279</span>   */<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  public class PeerConfigTracker extends ZKNodeTracker {<a name="line.280"></a>
 <span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>  /**<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * Tracker for PeerConfigNode of this peer<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   */<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  public class PeerConfigTracker extends ZKNodeTracker {<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span>    ReplicationPeerConfigListener listener;<a name="line.287"></a>
+<span class="sourceLineNo">282</span>    ReplicationPeerConfigListener listener;<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>    public PeerConfigTracker(String peerConfigNode, ZKWatcher watcher,<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        Abortable abortable) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      super(watcher, peerConfigNode, abortable);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    }<a name="line.287"></a>
 <span class="sourceLineNo">288</span><a name="line.288"></a>
-<span class="sourceLineNo">289</span>    public PeerConfigTracker(String peerConfigNode, ZKWatcher watcher,<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        Abortable abortable) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      super(watcher, peerConfigNode, abortable);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>    public synchronized void setListener(ReplicationPeerConfigListener listener){<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      this.listener = listener;<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>    @Override<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    public synchronized void nodeCreated(String path) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      if (path.equals(node)) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        super.nodeCreated(path);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        ReplicationPeerConfig config = readPeerConfig();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        if (listener != null){<a name="line.303"></a>
-<span class="sourceLineNo">304</span>          listener.peerConfigUpdated(config);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>    @Override<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    public synchronized void nodeDataChanged(String path) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      //superclass calls nodeCreated<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      if (path.equals(node)) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        super.nodeDataChanged(path);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    }<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span>}<a name="line.319"></a>
+<span class="sourceLineNo">289</span>    public synchronized void setListener(ReplicationPeerConfigListener listener){<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      this.listener = listener;<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>    @Override<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    public synchronized void nodeCreated(String path) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      if (path.equals(node)) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        super.nodeCreated(path);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        ReplicationPeerConfig config = readPeerConfig();<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        if (listener != null){<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          listener.peerConfigUpdated(config);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        }<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    }<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>    @Override<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    public synchronized void nodeDataChanged(String path) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      //superclass calls nodeCreated<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      if (path.equals(node)) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        super.nodeDataChanged(path);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
+<span class="sourceLineNo">314</span>}<a name="line.314"></a>
 
 
 


[29/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html
index 14547d6..4bfed08 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html
@@ -137,7 +137,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.1976">ThriftServerRunner.IOErrorWithCause</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.1982">ThriftServerRunner.IOErrorWithCause</a>
 extends org.apache.hadoop.hbase.thrift.generated.IOError</pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -273,7 +273,7 @@ extends org.apache.hadoop.hbase.thrift.generated.IOError</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>cause</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html#line.1977">cause</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html#line.1983">cause</a></pre>
 </li>
 </ul>
 </li>
@@ -290,7 +290,7 @@ extends org.apache.hadoop.hbase.thrift.generated.IOError</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IOErrorWithCause</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html#line.1978">IOErrorWithCause</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;cause)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html#line.1984">IOErrorWithCause</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;cause)</pre>
 </li>
 </ul>
 </li>
@@ -307,7 +307,7 @@ extends org.apache.hadoop.hbase.thrift.generated.IOError</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getCause</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html#line.1983">getCause</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html#line.1989">getCause</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getCause--" title="class or interface in java.lang">getCause</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a></code></dd>
@@ -320,7 +320,7 @@ extends org.apache.hadoop.hbase.thrift.generated.IOError</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>equals</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html#line.1988">equals</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;other)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html#line.1994">equals</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;other)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code>equals</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.thrift.generated.IOError</code></dd>
@@ -333,7 +333,7 @@ extends org.apache.hadoop.hbase.thrift.generated.IOError</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>hashCode</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html#line.2002">hashCode</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html#line.2008">hashCode</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code>hashCode</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.thrift.generated.IOError</code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html
index 2fc39e9..4d0f777 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.225">ThriftServerRunner.ImplType</a>
+<pre>static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.226">ThriftServerRunner.ImplType</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">Enum</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a>&gt;</pre>
 <div class="block">An enum of server implementation selections</div>
 </li>
@@ -281,7 +281,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>HS_HA</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.226">HS_HA</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.227">HS_HA</a></pre>
 </li>
 </ul>
 <a name="NONBLOCKING">
@@ -290,7 +290,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>NONBLOCKING</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.227">NONBLOCKING</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.228">NONBLOCKING</a></pre>
 </li>
 </ul>
 <a name="THREAD_POOL">
@@ -299,7 +299,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>THREAD_POOL</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.228">THREAD_POOL</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.229">THREAD_POOL</a></pre>
 </li>
 </ul>
 <a name="THREADED_SELECTOR">
@@ -308,7 +308,7 @@ the order they are declared.</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>THREADED_SELECTOR</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.229">THREADED_SELECTOR</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.230">THREADED_SELECTOR</a></pre>
 </li>
 </ul>
 </li>
@@ -325,7 +325,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.232">DEFAULT</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.233">DEFAULT</a></pre>
 </li>
 </ul>
 <a name="option">
@@ -334,7 +334,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>option</h4>
-<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.234">option</a></pre>
+<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.235">option</a></pre>
 </li>
 </ul>
 <a name="isAlwaysFramed">
@@ -343,7 +343,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>isAlwaysFramed</h4>
-<pre>final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.235">isAlwaysFramed</a></pre>
+<pre>final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.236">isAlwaysFramed</a></pre>
 </li>
 </ul>
 <a name="serverClass">
@@ -352,7 +352,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>serverClass</h4>
-<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends org.apache.thrift.server.TServer&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.236">serverClass</a></pre>
+<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends org.apache.thrift.server.TServer&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.237">serverClass</a></pre>
 </li>
 </ul>
 <a name="canSpecifyBindIP">
@@ -361,7 +361,7 @@ the order they are declared.</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>canSpecifyBindIP</h4>
-<pre>final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.237">canSpecifyBindIP</a></pre>
+<pre>final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.238">canSpecifyBindIP</a></pre>
 </li>
 </ul>
 </li>
@@ -378,7 +378,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>values</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.225">values</a>()</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.226">values</a>()</pre>
 <div class="block">Returns an array containing the constants of this enum type, in
 the order they are declared.  This method may be used to iterate
 over the constants as follows:
@@ -398,7 +398,7 @@ for (ThriftServerRunner.ImplType c : ThriftServerRunner.ImplType.values())
 <ul class="blockList">
 <li class="blockList">
 <h4>valueOf</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.225">valueOf</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.226">valueOf</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
 <div class="block">Returns the enum constant of this type with the specified name.
 The string must match <i>exactly</i> an identifier used to declare an
 enum constant in this type.  (Extraneous whitespace characters are 
@@ -420,7 +420,7 @@ not permitted.)</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.252">toString</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.253">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">Enum</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a>&gt;</code></dd>
@@ -436,7 +436,7 @@ not permitted.)</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>getDescription</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.256">getDescription</a>()</pre>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.257">getDescription</a>()</pre>
 </li>
 </ul>
 <a name="createOptionGroup--">
@@ -445,7 +445,7 @@ not permitted.)</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>createOptionGroup</h4>
-<pre>static&nbsp;org.apache.commons.cli.OptionGroup&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.268">createOptionGroup</a>()</pre>
+<pre>static&nbsp;org.apache.commons.cli.OptionGroup&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.269">createOptionGroup</a>()</pre>
 </li>
 </ul>
 <a name="getServerImpl-org.apache.hadoop.conf.Configuration-">
@@ -454,7 +454,7 @@ not permitted.)</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerImpl</h4>
-<pre>static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.276">getServerImpl</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.277">getServerImpl</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 <a name="setServerImpl-org.apache.commons.cli.CommandLine-org.apache.hadoop.conf.Configuration-">
@@ -463,7 +463,7 @@ not permitted.)</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>setServerImpl</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.286">setServerImpl</a>(org.apache.commons.cli.CommandLine&nbsp;cmd,
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.287">setServerImpl</a>(org.apache.commons.cli.CommandLine&nbsp;cmd,
                           org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
@@ -473,7 +473,7 @@ not permitted.)</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>simpleClassName</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.306">simpleClassName</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.307">simpleClassName</a>()</pre>
 </li>
 </ul>
 <a name="serversThatCannotSpecifyBindIP--">
@@ -482,7 +482,7 @@ not permitted.)</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>serversThatCannotSpecifyBindIP</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.310">serversThatCannotSpecifyBindIP</a>()</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.311">serversThatCannotSpecifyBindIP</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html
index e2c83b5..aebdad1 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>protected static class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.692">ThriftServerRunner.ResultScannerWrapper</a>
+<pre>protected static class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.694">ThriftServerRunner.ResultScannerWrapper</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -210,7 +210,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>scanner</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html#line.694">scanner</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html#line.696">scanner</a></pre>
 </li>
 </ul>
 <a name="sortColumns">
@@ -219,7 +219,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>sortColumns</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html#line.695">sortColumns</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html#line.697">sortColumns</a></pre>
 </li>
 </ul>
 </li>
@@ -236,7 +236,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ResultScannerWrapper</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html#line.696">ResultScannerWrapper</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a>&nbsp;resultScanner,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html#line.698">ResultScannerWrapper</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a>&nbsp;resultScanner,
                             boolean&nbsp;sortResultColumns)</pre>
 </li>
 </ul>
@@ -254,7 +254,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanner</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html#line.702">getScanner</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html#line.704">getScanner</a>()</pre>
 </li>
 </ul>
 <a name="isColumnSorted--">
@@ -263,7 +263,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isColumnSorted</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html#line.706">isColumnSorted</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html#line.708">isColumnSorted</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html
index 2b965bb..601b921 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":10,"i2":10,"i3":9,"i4":9,"i5":10,"i6":10,"i7":10,"i8":10};
+var methods = {"i0":9,"i1":10,"i2":10,"i3":9,"i4":10,"i5":9,"i6":10,"i7":10,"i8":10,"i9":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -396,24 +396,28 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#getIOError-java.lang.Throwable-">getIOError</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;throwable)</code>&nbsp;</td>
 </tr>
 <tr id="i4" class="altColor">
+<td class="colFirst"><code>private org.apache.thrift.protocol.TProtocolFactory</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#getProtocolFactory--">getProtocolFactory</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#registerFilters-org.apache.hadoop.conf.Configuration-">registerFilters</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#run--">run</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#setupHTTPServer--">setupHTTPServer</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#setupServer--">setupServer</a></span>()</code>
 <div class="block">Setting up the thrift TServer</div>
 </td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#shutdown--">shutdown</a></span>()</code>&nbsp;</td>
 </tr>
@@ -532,7 +536,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>PORT_CONF_KEY</h4>
-<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.165">PORT_CONF_KEY</a></pre>
+<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.166">PORT_CONF_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.PORT_CONF_KEY">Constant Field Values</a></dd>
@@ -545,7 +549,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>COALESCE_INC_KEY</h4>
-<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.166">COALESCE_INC_KEY</a></pre>
+<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.167">COALESCE_INC_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.COALESCE_INC_KEY">Constant Field Values</a></dd>
@@ -558,7 +562,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>USE_HTTP_CONF_KEY</h4>
-<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.167">USE_HTTP_CONF_KEY</a></pre>
+<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.168">USE_HTTP_CONF_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.USE_HTTP_CONF_KEY">Constant Field Values</a></dd>
@@ -571,7 +575,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>HTTP_MIN_THREADS</h4>
-<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.168">HTTP_MIN_THREADS</a></pre>
+<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.169">HTTP_MIN_THREADS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.HTTP_MIN_THREADS">Constant Field Values</a></dd>
@@ -584,7 +588,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>HTTP_MAX_THREADS</h4>
-<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.169">HTTP_MAX_THREADS</a></pre>
+<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.170">HTTP_MAX_THREADS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.HTTP_MAX_THREADS">Constant Field Values</a></dd>
@@ -597,7 +601,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>THRIFT_SSL_ENABLED</h4>
-<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.171">THRIFT_SSL_ENABLED</a></pre>
+<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.172">THRIFT_SSL_ENABLED</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SSL_ENABLED">Constant Field Values</a></dd>
@@ -610,7 +614,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>THRIFT_SSL_KEYSTORE_STORE</h4>
-<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.172">THRIFT_SSL_KEYSTORE_STORE</a></pre>
+<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.173">THRIFT_SSL_KEYSTORE_STORE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SSL_KEYSTORE_STORE">Constant Field Values</a></dd>
@@ -623,7 +627,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>THRIFT_SSL_KEYSTORE_PASSWORD</h4>
-<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.173">THRIFT_SSL_KEYSTORE_PASSWORD</a></pre>
+<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.174">THRIFT_SSL_KEYSTORE_PASSWORD</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SSL_KEYSTORE_PASSWORD">Constant Field Values</a></dd>
@@ -636,7 +640,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>THRIFT_SSL_KEYSTORE_KEYPASSWORD</h4>
-<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.174">THRIFT_SSL_KEYSTORE_KEYPASSWORD</a></pre>
+<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.175">THRIFT_SSL_KEYSTORE_KEYPASSWORD</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SSL_KEYSTORE_KEYPASSWORD">Constant Field Values</a></dd>
@@ -649,7 +653,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>THRIFT_SSL_EXCLUDE_CIPHER_SUITES</h4>
-<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.175">THRIFT_SSL_EXCLUDE_CIPHER_SUITES</a></pre>
+<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.176">THRIFT_SSL_EXCLUDE_CIPHER_SUITES</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SSL_EXCLUDE_CIPHER_SUITES">Constant Field Values</a></dd>
@@ -662,7 +666,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>THRIFT_SSL_INCLUDE_CIPHER_SUITES</h4>
-<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.176">THRIFT_SSL_INCLUDE_CIPHER_SUITES</a></pre>
+<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.177">THRIFT_SSL_INCLUDE_CIPHER_SUITES</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SSL_INCLUDE_CIPHER_SUITES">Constant Field Values</a></dd>
@@ -675,7 +679,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>THRIFT_SSL_EXCLUDE_PROTOCOLS</h4>
-<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.177">THRIFT_SSL_EXCLUDE_PROTOCOLS</a></pre>
+<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.178">THRIFT_SSL_EXCLUDE_PROTOCOLS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SSL_EXCLUDE_PROTOCOLS">Constant Field Values</a></dd>
@@ -688,7 +692,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>THRIFT_SSL_INCLUDE_PROTOCOLS</h4>
-<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.178">THRIFT_SSL_INCLUDE_PROTOCOLS</a></pre>
+<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.179">THRIFT_SSL_INCLUDE_PROTOCOLS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SSL_INCLUDE_PROTOCOLS">Constant Field Values</a></dd>
@@ -701,7 +705,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.185">THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.186">THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY</a></pre>
 <div class="block">Amount of time in milliseconds before a server thread will timeout
  waiting for client to send data on a connected socket. Currently,
  applies only to TBoundedThreadPoolServer</div>
@@ -717,7 +721,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.187">THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.188">THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT">Constant Field Values</a></dd>
@@ -730,7 +734,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>THRIFT_QOP_KEY</h4>
-<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.199">THRIFT_QOP_KEY</a></pre>
+<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.200">THRIFT_QOP_KEY</a></pre>
 <div class="block">Thrift quality of protection configuration key. Valid values can be:
  auth-conf: authentication, integrity and confidentiality checking
  auth-int: authentication and integrity checking
@@ -750,7 +754,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>BACKLOG_CONF_KEY</h4>
-<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.200">BACKLOG_CONF_KEY</a></pre>
+<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.201">BACKLOG_CONF_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.BACKLOG_CONF_KEY">Constant Field Values</a></dd>
@@ -763,7 +767,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_BIND_ADDR</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.202">DEFAULT_BIND_ADDR</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.203">DEFAULT_BIND_ADDR</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.DEFAULT_BIND_ADDR">Constant Field Values</a></dd>
@@ -776,7 +780,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_LISTEN_PORT</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.203">DEFAULT_LISTEN_PORT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.204">DEFAULT_LISTEN_PORT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.DEFAULT_LISTEN_PORT">Constant Field Values</a></dd>
@@ -789,7 +793,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>HREGION_VERSION</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.204">HREGION_VERSION</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.205">HREGION_VERSION</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.HREGION_VERSION">Constant Field Values</a></dd>
@@ -802,7 +806,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>THRIFT_SUPPORT_PROXYUSER</h4>
-<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.205">THRIFT_SUPPORT_PROXYUSER</a></pre>
+<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.206">THRIFT_SUPPORT_PROXYUSER</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SUPPORT_PROXYUSER">Constant Field Values</a></dd>
@@ -815,7 +819,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>listenPort</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.206">listenPort</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.207">listenPort</a></pre>
 </li>
 </ul>
 <a name="conf">
@@ -824,7 +828,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>conf</h4>
-<pre>private&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.208">conf</a></pre>
+<pre>private&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.209">conf</a></pre>
 </li>
 </ul>
 <a name="tserver">
@@ -833,7 +837,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>tserver</h4>
-<pre>volatile&nbsp;org.apache.thrift.server.TServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.209">tserver</a></pre>
+<pre>volatile&nbsp;org.apache.thrift.server.TServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.210">tserver</a></pre>
 </li>
 </ul>
 <a name="httpServer">
@@ -842,7 +846,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>httpServer</h4>
-<pre>volatile&nbsp;org.eclipse.jetty.server.Server <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.210">httpServer</a></pre>
+<pre>volatile&nbsp;org.eclipse.jetty.server.Server <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.211">httpServer</a></pre>
 </li>
 </ul>
 <a name="handler">
@@ -851,7 +855,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>handler</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.thrift.generated.Hbase.Iface <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.211">handler</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.thrift.generated.Hbase.Iface <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.212">handler</a></pre>
 </li>
 </ul>
 <a name="metrics">
@@ -860,7 +864,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>metrics</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.212">metrics</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.213">metrics</a></pre>
 </li>
 </ul>
 <a name="hbaseHandler">
@@ -869,7 +873,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>hbaseHandler</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.213">hbaseHandler</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.214">hbaseHandler</a></pre>
 </li>
 </ul>
 <a name="realUser">
@@ -878,7 +882,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>realUser</h4>
-<pre>private final&nbsp;org.apache.hadoop.security.UserGroupInformation <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.214">realUser</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.security.UserGroupInformation <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.215">realUser</a></pre>
 </li>
 </ul>
 <a name="qop">
@@ -887,7 +891,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>qop</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security">SaslUtil.QualityOfProtection</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.216">qop</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security">SaslUtil.QualityOfProtection</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.217">qop</a></pre>
 </li>
 </ul>
 <a name="host">
@@ -896,7 +900,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>host</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.217">host</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.218">host</a></pre>
 </li>
 </ul>
 <a name="securityEnabled">
@@ -905,7 +909,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>securityEnabled</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.219">securityEnabled</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.220">securityEnabled</a></pre>
 </li>
 </ul>
 <a name="doAsEnabled">
@@ -914,7 +918,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>doAsEnabled</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.220">doAsEnabled</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.221">doAsEnabled</a></pre>
 </li>
 </ul>
 <a name="pauseMonitor">
@@ -923,7 +927,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>pauseMonitor</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/JvmPauseMonitor.html" title="class in org.apache.hadoop.hbase.util">JvmPauseMonitor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.222">pauseMonitor</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/JvmPauseMonitor.html" title="class in org.apache.hadoop.hbase.util">JvmPauseMonitor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.223">pauseMonitor</a></pre>
 </li>
 </ul>
 </li>
@@ -940,7 +944,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ThriftServerRunner</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.322">ThriftServerRunner</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.323">ThriftServerRunner</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
                    throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -962,7 +966,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.374">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.376">run</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>
@@ -975,7 +979,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.399">shutdown</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.401">shutdown</a>()</pre>
 </li>
 </ul>
 <a name="setupHTTPServer--">
@@ -984,7 +988,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>setupHTTPServer</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.418">setupHTTPServer</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.420">setupHTTPServer</a>()
                       throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -998,7 +1002,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>setupServer</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.509">setupServer</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.512">setupServer</a>()
                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Setting up the thrift TServer</div>
 <dl>
@@ -1007,13 +1011,22 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 </dl>
 </li>
 </ul>
+<a name="getProtocolFactory--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getProtocolFactory</h4>
+<pre>private&nbsp;org.apache.thrift.protocol.TProtocolFactory&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.663">getProtocolFactory</a>()</pre>
+</li>
+</ul>
 <a name="createExecutor-java.util.concurrent.BlockingQueue-int-int-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>createExecutor</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.675">createExecutor</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>&gt;&nbsp;callQueue,
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.677">createExecutor</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>&gt;&nbsp;callQueue,
                                int&nbsp;minWorkers,
                                int&nbsp;maxWorkers)</pre>
 </li>
@@ -1024,7 +1037,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getBindAddress</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/net/InetAddress.html?is-external=true" title="class or interface in java.net">InetAddress</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.686">getBindAddress</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/net/InetAddress.html?is-external=true" title="class or interface in java.net">InetAddress</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.688">getBindAddress</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
                             throws <a href="http://docs.oracle.com/javase/8/docs/api/java/net/UnknownHostException.html?is-external=true" title="class or interface in java.net">UnknownHostException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1038,7 +1051,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getIOError</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.thrift.generated.IOError&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.1941">getIOError</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;throwable)</pre>
+<pre>private static&nbsp;org.apache.hadoop.hbase.thrift.generated.IOError&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.1947">getIOError</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;throwable)</pre>
 </li>
 </ul>
 <a name="addAttributes-org.apache.hadoop.hbase.client.OperationWithAttributes-java.util.Map-">
@@ -1047,7 +1060,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>addAttributes</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.1950">addAttributes</a>(<a href="../../../../../org/apache/hadoop/hbase/client/OperationWithAttributes.html" title="class in org.apache.hadoop.hbase.client">OperationWithAttributes</a>&nbsp;op,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.1956">addAttributes</a>(<a href="../../../../../org/apache/hadoop/hbase/client/OperationWithAttributes.html" title="class in org.apache.hadoop.hbase.client">OperationWithAttributes</a>&nbsp;op,
                                   <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;attributes)</pre>
 <div class="block">Adds all the attributes into the Operation object</div>
 </li>
@@ -1058,7 +1071,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>registerFilters</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.1962">registerFilters</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.1968">registerFilters</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/thrift/ThriftUtilities.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftUtilities.html b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftUtilities.html
index 7e22ffd..6fa36d2 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftUtilities.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftUtilities.html
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.49">ThriftUtilities</a>
+public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.49">ThriftUtilities</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -127,10 +127,12 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
 <caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
-<th class="colOne" scope="col">Constructor and Description</th>
+<th class="colFirst" scope="col">Modifier</th>
+<th class="colLast" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftUtilities.html#ThriftUtilities--">ThriftUtilities</a></span>()</code>&nbsp;</td>
+<td class="colFirst"><code>private </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftUtilities.html#ThriftUtilities--">ThriftUtilities</a></span>()</code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -234,7 +236,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ThriftUtilities</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.49">ThriftUtilities</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.50">ThriftUtilities</a>()</pre>
 </li>
 </ul>
 </li>
@@ -251,7 +253,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>colDescFromThrift</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HColumnDescriptor.html" title="class in org.apache.hadoop.hbase">HColumnDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.60">colDescFromThrift</a>(org.apache.hadoop.hbase.thrift.generated.ColumnDescriptor&nbsp;in)
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HColumnDescriptor.html" title="class in org.apache.hadoop.hbase">HColumnDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.61">colDescFromThrift</a>(org.apache.hadoop.hbase.thrift.generated.ColumnDescriptor&nbsp;in)
                                            throws org.apache.hadoop.hbase.thrift.generated.IllegalArgument</pre>
 <div class="block">This utility method creates a new Hbase HColumnDescriptor object based on a
  Thrift ColumnDescriptor "struct".</div>
@@ -261,7 +263,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>HColumnDescriptor</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.hadoop.hbase.thrift.generated.IllegalArgument</code></dd>
+<dd><code>org.apache.hadoop.hbase.thrift.generated.IllegalArgument</code> - if the column name is empty</dd>
 </dl>
 </li>
 </ul>
@@ -271,7 +273,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>colDescFromHbase</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.thrift.generated.ColumnDescriptor&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.89">colDescFromHbase</a>(<a href="../../../../../org/apache/hadoop/hbase/HColumnDescriptor.html" title="class in org.apache.hadoop.hbase">HColumnDescriptor</a>&nbsp;in)</pre>
+<pre>public static&nbsp;org.apache.hadoop.hbase.thrift.generated.ColumnDescriptor&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.90">colDescFromHbase</a>(<a href="../../../../../org/apache/hadoop/hbase/HColumnDescriptor.html" title="class in org.apache.hadoop.hbase">HColumnDescriptor</a>&nbsp;in)</pre>
 <div class="block">This utility method creates a new Thrift ColumnDescriptor "struct" based on
  an Hbase HColumnDescriptor object.</div>
 <dl>
@@ -288,7 +290,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>cellFromHBase</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TCell&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.109">cellFromHBase</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;in)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TCell&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.110">cellFromHBase</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;in)</pre>
 <div class="block">This utility method creates a list of Thrift TCell "struct" based on
  an Hbase Cell object. The empty list is returned if the input is null.</div>
 <dl>
@@ -305,7 +307,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>cellFromHBase</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TCell&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.123">cellFromHBase</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>[]&nbsp;in)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TCell&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.124">cellFromHBase</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>[]&nbsp;in)</pre>
 <div class="block">This utility method creates a list of Thrift TCell "struct" based on
  an Hbase Cell array. The empty list is returned if the input is null.</div>
 <dl>
@@ -322,7 +324,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>rowResultFromHBase</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.151">rowResultFromHBase</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>[]&nbsp;in,
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.152">rowResultFromHBase</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>[]&nbsp;in,
                                                                                            boolean&nbsp;sortColumns)</pre>
 <div class="block">This utility method creates a list of Thrift TRowResult "struct" based on
  an Hbase RowResult object. The empty list is returned if the input is
@@ -346,7 +348,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>rowResultFromHBase</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.190">rowResultFromHBase</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>[]&nbsp;in)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.195">rowResultFromHBase</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>[]&nbsp;in)</pre>
 <div class="block">This utility method creates a list of Thrift TRowResult "struct" based on
  an array of Hbase RowResult objects. The empty list is returned if the input is
  null.</div>
@@ -364,7 +366,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>rowResultFromHBase</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.194">rowResultFromHBase</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;in)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift.generated.TRowResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.199">rowResultFromHBase</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;in)</pre>
 </li>
 </ul>
 <a name="incrementFromThrift-org.apache.hadoop.hbase.thrift.generated.TIncrement-">
@@ -373,7 +375,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>incrementFromThrift</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Increment.html" title="class in org.apache.hadoop.hbase.client">Increment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.204">incrementFromThrift</a>(org.apache.hadoop.hbase.thrift.generated.TIncrement&nbsp;tincrement)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Increment.html" title="class in org.apache.hadoop.hbase.client">Increment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.209">incrementFromThrift</a>(org.apache.hadoop.hbase.thrift.generated.TIncrement&nbsp;tincrement)</pre>
 <div class="block">From a <code>TIncrement</code> create an <a href="../../../../../org/apache/hadoop/hbase/client/Increment.html" title="class in org.apache.hadoop.hbase.client"><code>Increment</code></a>.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -389,7 +391,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>appendFromThrift</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Append.html" title="class in org.apache.hadoop.hbase.client">Append</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.217">appendFromThrift</a>(org.apache.hadoop.hbase.thrift.generated.TAppend&nbsp;tappend)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Append.html" title="class in org.apache.hadoop.hbase.client">Append</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftUtilities.html#line.226">appendFromThrift</a>(org.apache.hadoop.hbase.thrift.generated.TAppend&nbsp;tappend)</pre>
 <div class="block">From a <code>TAppend</code> create an <a href="../../../../../org/apache/hadoop/hbase/client/Append.html" title="class in org.apache.hadoop.hbase.client"><code>Append</code></a>.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftMetrics.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftMetrics.html b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftMetrics.html
index 629fcb2..cd6d2bc 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftMetrics.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftMetrics.html
@@ -223,6 +223,22 @@ service.</div>
               <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a>&nbsp;metrics)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>private org.apache.thrift.server.TServer</code></td>
+<td class="colLast"><span class="typeNameLabel">ThriftServer.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#getServer-int-int-int-int-int-boolean-boolean-boolean-org.apache.hadoop.hbase.thrift.ThriftMetrics-org.apache.thrift.protocol.TProtocolFactory-org.apache.thrift.TProcessor-org.apache.thrift.transport.TTransportFactory-java.net.InetSocketAddress-">getServer</a></span>(int&nbsp;workerThreads,
+         int&nbsp;selectorThreads,
+         int&nbsp;maxCallQueueSize,
+         int&nbsp;readTimeout,
+         int&nbsp;backlog,
+         boolean&nbsp;nonblocking,
+         boolean&nbsp;hsha,
+         boolean&nbsp;selector,
+         <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a>&nbsp;metrics,
+         org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
+         org.apache.thrift.TProcessor&nbsp;processor,
+         org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
+         <a href="http://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>&nbsp;inetSocketAddress)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>private static org.apache.thrift.server.TServer</code></td>
 <td class="colLast"><span class="typeNameLabel">ThriftServer.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#getTHsHaServer-org.apache.thrift.protocol.TProtocolFactory-org.apache.thrift.TProcessor-org.apache.thrift.transport.TTransportFactory-int-int-java.net.InetSocketAddress-org.apache.hadoop.hbase.thrift.ThriftMetrics-">getTHsHaServer</a></span>(org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
               org.apache.thrift.TProcessor&nbsp;processor,
@@ -232,7 +248,7 @@ service.</div>
               <a href="http://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>&nbsp;inetSocketAddress,
               <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a>&nbsp;metrics)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static org.apache.thrift.server.TServer</code></td>
 <td class="colLast"><span class="typeNameLabel">ThriftServer.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#getTThreadedSelectorServer-org.apache.thrift.protocol.TProtocolFactory-org.apache.thrift.TProcessor-org.apache.thrift.transport.TTransportFactory-int-int-int-java.net.InetSocketAddress-org.apache.hadoop.hbase.thrift.ThriftMetrics-">getTThreadedSelectorServer</a></span>(org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
                           org.apache.thrift.TProcessor&nbsp;processor,
@@ -243,7 +259,7 @@ service.</div>
                           <a href="http://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>&nbsp;inetSocketAddress,
                           <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a>&nbsp;metrics)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static org.apache.thrift.server.TServer</code></td>
 <td class="colLast"><span class="typeNameLabel">ThriftServer.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#getTThreadPoolServer-org.apache.thrift.protocol.TProtocolFactory-org.apache.thrift.TProcessor-org.apache.thrift.transport.TTransportFactory-int-java.net.InetSocketAddress-int-int-org.apache.hadoop.hbase.thrift.ThriftMetrics-">getTThreadPoolServer</a></span>(org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
                     org.apache.thrift.TProcessor&nbsp;processor,
@@ -254,7 +270,7 @@ service.</div>
                     int&nbsp;clientTimeout,
                     <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a>&nbsp;metrics)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</code></td>
 <td class="colLast"><span class="typeNameLabel">ThriftHBaseServiceHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#newInstance-org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface-org.apache.hadoop.hbase.thrift.ThriftMetrics-">newInstance</a></span>(org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface&nbsp;handler,
            <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a>&nbsp;metrics)</code>&nbsp;</td>


[13/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html
index 7dd656e..fdaaf42 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html
@@ -169,1851 +169,1857 @@
 <span class="sourceLineNo">161</span>  static final String BIND_CONF_KEY = "hbase.regionserver.thrift.ipaddress";<a name="line.161"></a>
 <span class="sourceLineNo">162</span>  static final String COMPACT_CONF_KEY = "hbase.regionserver.thrift.compact";<a name="line.162"></a>
 <span class="sourceLineNo">163</span>  static final String FRAMED_CONF_KEY = "hbase.regionserver.thrift.framed";<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  static final String MAX_FRAME_SIZE_CONF_KEY = "hbase.regionserver.thrift.framed.max_frame_size_in_mb";<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  static final String PORT_CONF_KEY = "hbase.regionserver.thrift.port";<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  static final String COALESCE_INC_KEY = "hbase.regionserver.thrift.coalesceIncrement";<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  static final String USE_HTTP_CONF_KEY = "hbase.regionserver.thrift.http";<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  static final String HTTP_MIN_THREADS = "hbase.thrift.http_threads.min";<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  static final String HTTP_MAX_THREADS = "hbase.thrift.http_threads.max";<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>  static final String THRIFT_SSL_ENABLED = "hbase.thrift.ssl.enabled";<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  static final String THRIFT_SSL_KEYSTORE_STORE = "hbase.thrift.ssl.keystore.store";<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  static final String THRIFT_SSL_KEYSTORE_PASSWORD = "hbase.thrift.ssl.keystore.password";<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  static final String THRIFT_SSL_KEYSTORE_KEYPASSWORD = "hbase.thrift.ssl.keystore.keypassword";<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  static final String THRIFT_SSL_EXCLUDE_CIPHER_SUITES = "hbase.thrift.ssl.exclude.cipher.suites";<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  static final String THRIFT_SSL_INCLUDE_CIPHER_SUITES = "hbase.thrift.ssl.include.cipher.suites";<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  static final String THRIFT_SSL_EXCLUDE_PROTOCOLS = "hbase.thrift.ssl.exclude.protocols";<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  static final String THRIFT_SSL_INCLUDE_PROTOCOLS = "hbase.thrift.ssl.include.protocols";<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>  /**<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   * Amount of time in milliseconds before a server thread will timeout<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   * waiting for client to send data on a connected socket. Currently,<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * applies only to TBoundedThreadPoolServer<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   */<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  public static final String THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY =<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    "hbase.thrift.server.socket.read.timeout";<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public static final int THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT = 60000;<a name="line.187"></a>
-<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">164</span>  static final String MAX_FRAME_SIZE_CONF_KEY =<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          "hbase.regionserver.thrift.framed.max_frame_size_in_mb";<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  static final String PORT_CONF_KEY = "hbase.regionserver.thrift.port";<a name="line.166"></a>
+<span class="sourceLineNo">167</span>  static final String COALESCE_INC_KEY = "hbase.regionserver.thrift.coalesceIncrement";<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  static final String USE_HTTP_CONF_KEY = "hbase.regionserver.thrift.http";<a name="line.168"></a>
+<span class="sourceLineNo">169</span>  static final String HTTP_MIN_THREADS = "hbase.thrift.http_threads.min";<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  static final String HTTP_MAX_THREADS = "hbase.thrift.http_threads.max";<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  static final String THRIFT_SSL_ENABLED = "hbase.thrift.ssl.enabled";<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  static final String THRIFT_SSL_KEYSTORE_STORE = "hbase.thrift.ssl.keystore.store";<a name="line.173"></a>
+<span class="sourceLineNo">174</span>  static final String THRIFT_SSL_KEYSTORE_PASSWORD = "hbase.thrift.ssl.keystore.password";<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  static final String THRIFT_SSL_KEYSTORE_KEYPASSWORD = "hbase.thrift.ssl.keystore.keypassword";<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  static final String THRIFT_SSL_EXCLUDE_CIPHER_SUITES = "hbase.thrift.ssl.exclude.cipher.suites";<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  static final String THRIFT_SSL_INCLUDE_CIPHER_SUITES = "hbase.thrift.ssl.include.cipher.suites";<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  static final String THRIFT_SSL_EXCLUDE_PROTOCOLS = "hbase.thrift.ssl.exclude.protocols";<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  static final String THRIFT_SSL_INCLUDE_PROTOCOLS = "hbase.thrift.ssl.include.protocols";<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  /**<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   * Amount of time in milliseconds before a server thread will timeout<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * waiting for client to send data on a connected socket. Currently,<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * applies only to TBoundedThreadPoolServer<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   */<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public static final String THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY =<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    "hbase.thrift.server.socket.read.timeout";<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  public static final int THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT = 60000;<a name="line.188"></a>
 <span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>  /**<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * Thrift quality of protection configuration key. Valid values can be:<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * auth-conf: authentication, integrity and confidentiality checking<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * auth-int: authentication and integrity checking<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * auth: authentication only<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   *<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * This is used to authenticate the callers and support impersonation.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * The thrift server and the HBase cluster must run in secure mode.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  static final String THRIFT_QOP_KEY = "hbase.thrift.security.qop";<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  static final String BACKLOG_CONF_KEY = "hbase.regionserver.thrift.backlog";<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>  private static final String DEFAULT_BIND_ADDR = "0.0.0.0";<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  public static final int DEFAULT_LISTEN_PORT = 9090;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  public static final int HREGION_VERSION = 1;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  static final String THRIFT_SUPPORT_PROXYUSER = "hbase.thrift.support.proxyuser";<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  private final int listenPort;<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>  private Configuration conf;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  volatile TServer tserver;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  volatile Server httpServer;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>  private final Hbase.Iface handler;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  private final ThriftMetrics metrics;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private final HBaseHandler hbaseHandler;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  private final UserGroupInformation realUser;<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  private SaslUtil.QualityOfProtection qop;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  private String host;<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>  private final boolean securityEnabled;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  private final boolean doAsEnabled;<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>  private final JvmPauseMonitor pauseMonitor;<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  /** An enum of server implementation selections */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  enum ImplType {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    HS_HA("hsha", true, THsHaServer.class, true),<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    NONBLOCKING("nonblocking", true, TNonblockingServer.class, true),<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    THREAD_POOL("threadpool", false, TBoundedThreadPoolServer.class, true),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    THREADED_SELECTOR(<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        "threadedselector", true, TThreadedSelectorServer.class, true);<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>    public static final ImplType DEFAULT = THREAD_POOL;<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>    final String option;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    final boolean isAlwaysFramed;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    final Class&lt;? extends TServer&gt; serverClass;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    final boolean canSpecifyBindIP;<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    ImplType(String option, boolean isAlwaysFramed,<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        Class&lt;? extends TServer&gt; serverClass, boolean canSpecifyBindIP) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      this.option = option;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      this.isAlwaysFramed = isAlwaysFramed;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      this.serverClass = serverClass;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      this.canSpecifyBindIP = canSpecifyBindIP;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>    /**<a name="line.247"></a>
-<span class="sourceLineNo">248</span>     * @return &lt;code&gt;-option&lt;/code&gt; so we can get the list of options from<a name="line.248"></a>
-<span class="sourceLineNo">249</span>     *         {@link #values()}<a name="line.249"></a>
-<span class="sourceLineNo">250</span>     */<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    @Override<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    public String toString() {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      return "-" + option;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    String getDescription() {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      StringBuilder sb = new StringBuilder("Use the " +<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          serverClass.getSimpleName());<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      if (isAlwaysFramed) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        sb.append(" This implies the framed transport.");<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      if (this == DEFAULT) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        sb.append("This is the default.");<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      return sb.toString();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>    static OptionGroup createOptionGroup() {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      OptionGroup group = new OptionGroup();<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      for (ImplType t : values()) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        group.addOption(new Option(t.option, t.getDescription()));<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      }<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      return group;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>    static ImplType getServerImpl(Configuration conf) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      String confType = conf.get(SERVER_TYPE_CONF_KEY, THREAD_POOL.option);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      for (ImplType t : values()) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        if (confType.equals(t.option)) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          return t;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>        }<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      }<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      throw new AssertionError("Unknown server ImplType.option:" + confType);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    static void setServerImpl(CommandLine cmd, Configuration conf) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      ImplType chosenType = null;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      int numChosen = 0;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      for (ImplType t : values()) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        if (cmd.hasOption(t.option)) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          chosenType = t;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          ++numChosen;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        }<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      }<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      if (numChosen &lt; 1) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        LOG.info("Using default thrift server type");<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        chosenType = DEFAULT;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      } else if (numChosen &gt; 1) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        throw new AssertionError("Exactly one option out of " +<a name="line.299"></a>
-<span class="sourceLineNo">300</span>          Arrays.toString(values()) + " has to be specified");<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      LOG.info("Using thrift server type " + chosenType.option);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      conf.set(SERVER_TYPE_CONF_KEY, chosenType.option);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
-<span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span>    public String simpleClassName() {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      return serverClass.getSimpleName();<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    }<a name="line.308"></a>
-<span class="sourceLineNo">309</span><a name="line.309"></a>
-<span class="sourceLineNo">310</span>    public static List&lt;String&gt; serversThatCannotSpecifyBindIP() {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      List&lt;String&gt; l = new ArrayList&lt;&gt;();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      for (ImplType t : values()) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        if (!t.canSpecifyBindIP) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>          l.add(t.simpleClassName());<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      return l;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>  public ThriftServerRunner(Configuration conf) throws IOException {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    UserProvider userProvider = UserProvider.instantiate(conf);<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    // login the server principal (if using secure Hadoop)<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    securityEnabled = userProvider.isHadoopSecurityEnabled()<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      &amp;&amp; userProvider.isHBaseSecurityEnabled();<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    if (securityEnabled) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      host = Strings.domainNamePointerToHostName(DNS.getDefaultHost(<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        conf.get("hbase.thrift.dns.interface", "default"),<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        conf.get("hbase.thrift.dns.nameserver", "default")));<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      userProvider.login("hbase.thrift.keytab.file",<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        "hbase.thrift.kerberos.principal", host);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    }<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    this.conf = HBaseConfiguration.create(conf);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    this.listenPort = conf.getInt(PORT_CONF_KEY, DEFAULT_LISTEN_PORT);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    this.metrics = new ThriftMetrics(conf, ThriftMetrics.ThriftServerType.ONE);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    this.pauseMonitor = new JvmPauseMonitor(conf, this.metrics.getSource());<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    this.hbaseHandler = new HBaseHandler(conf, userProvider);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    this.hbaseHandler.initMetrics(metrics);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    this.handler = HbaseHandlerMetricsProxy.newInstance(<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      hbaseHandler, metrics, conf);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    this.realUser = userProvider.getCurrent().getUGI();<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    String strQop = conf.get(THRIFT_QOP_KEY);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    if (strQop != null) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      this.qop = SaslUtil.getQop(strQop);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    doAsEnabled = conf.getBoolean(THRIFT_SUPPORT_PROXYUSER, false);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    if (doAsEnabled) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      if (!conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        LOG.warn("Fail to enable the doAs feature. hbase.regionserver.thrift.http is not configured ");<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      }<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    if (qop != null) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      if (qop != QualityOfProtection.AUTHENTICATION &amp;&amp;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>          qop != QualityOfProtection.INTEGRITY &amp;&amp;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          qop != QualityOfProtection.PRIVACY) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        throw new IOException(String.format("Invalide %s: It must be one of %s, %s, or %s.",<a name="line.357"></a>
-<span class="sourceLineNo">358</span>                              THRIFT_QOP_KEY,<a name="line.358"></a>
-<span class="sourceLineNo">359</span>                              QualityOfProtection.AUTHENTICATION.name(),<a name="line.359"></a>
-<span class="sourceLineNo">360</span>                              QualityOfProtection.INTEGRITY.name(),<a name="line.360"></a>
-<span class="sourceLineNo">361</span>                              QualityOfProtection.PRIVACY.name()));<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      if (!securityEnabled) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        throw new IOException("Thrift server must"<a name="line.364"></a>
-<span class="sourceLineNo">365</span>          + " run in secure mode to support authentication");<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    }<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  /*<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * Runs the Thrift server<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   */<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  @Override<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  public void run() {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    realUser.doAs(new PrivilegedAction&lt;Object&gt;() {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      @Override<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      public Object run() {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>        try {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>          pauseMonitor.start();<a name="line.379"></a>
-<span class="sourceLineNo">380</span>          if (conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>            setupHTTPServer();<a name="line.381"></a>
-<span class="sourceLineNo">382</span>            httpServer.start();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>            httpServer.join();<a name="line.383"></a>
-<span class="sourceLineNo">384</span>          } else {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>            setupServer();<a name="line.385"></a>
-<span class="sourceLineNo">386</span>            tserver.serve();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>          }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        } catch (Exception e) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          LOG.error(HBaseMarkers.FATAL, "Cannot run ThriftServer", e);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>          // Crash the process if the ThriftServer is not running<a name="line.390"></a>
-<span class="sourceLineNo">391</span>          System.exit(-1);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        }<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        return null;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      }<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    });<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>  }<a name="line.397"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  /**<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * Thrift quality of protection configuration key. Valid values can be:<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * auth-conf: authentication, integrity and confidentiality checking<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * auth-int: authentication and integrity checking<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * auth: authentication only<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   *<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * This is used to authenticate the callers and support impersonation.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * The thrift server and the HBase cluster must run in secure mode.<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   */<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  static final String THRIFT_QOP_KEY = "hbase.thrift.security.qop";<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  static final String BACKLOG_CONF_KEY = "hbase.regionserver.thrift.backlog";<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>  private static final String DEFAULT_BIND_ADDR = "0.0.0.0";<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  public static final int DEFAULT_LISTEN_PORT = 9090;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  public static final int HREGION_VERSION = 1;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>  static final String THRIFT_SUPPORT_PROXYUSER = "hbase.thrift.support.proxyuser";<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  private final int listenPort;<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>  private Configuration conf;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  volatile TServer tserver;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>  volatile Server httpServer;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  private final Hbase.Iface handler;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  private final ThriftMetrics metrics;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  private final HBaseHandler hbaseHandler;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  private final UserGroupInformation realUser;<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>  private SaslUtil.QualityOfProtection qop;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  private String host;<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  private final boolean securityEnabled;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  private final boolean doAsEnabled;<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  private final JvmPauseMonitor pauseMonitor;<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>  /** An enum of server implementation selections */<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  enum ImplType {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    HS_HA("hsha", true, THsHaServer.class, true),<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    NONBLOCKING("nonblocking", true, TNonblockingServer.class, true),<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    THREAD_POOL("threadpool", false, TBoundedThreadPoolServer.class, true),<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    THREADED_SELECTOR(<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        "threadedselector", true, TThreadedSelectorServer.class, true);<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>    public static final ImplType DEFAULT = THREAD_POOL;<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    final String option;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    final boolean isAlwaysFramed;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    final Class&lt;? extends TServer&gt; serverClass;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    final boolean canSpecifyBindIP;<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>    ImplType(String option, boolean isAlwaysFramed,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        Class&lt;? extends TServer&gt; serverClass, boolean canSpecifyBindIP) {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      this.option = option;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      this.isAlwaysFramed = isAlwaysFramed;<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      this.serverClass = serverClass;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      this.canSpecifyBindIP = canSpecifyBindIP;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    }<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>    /**<a name="line.248"></a>
+<span class="sourceLineNo">249</span>     * @return &lt;code&gt;-option&lt;/code&gt; so we can get the list of options from<a name="line.249"></a>
+<span class="sourceLineNo">250</span>     *         {@link #values()}<a name="line.250"></a>
+<span class="sourceLineNo">251</span>     */<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    @Override<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    public String toString() {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      return "-" + option;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>    String getDescription() {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      StringBuilder sb = new StringBuilder("Use the " +<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          serverClass.getSimpleName());<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      if (isAlwaysFramed) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        sb.append(" This implies the framed transport.");<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      }<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      if (this == DEFAULT) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        sb.append("This is the default.");<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      return sb.toString();<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>    static OptionGroup createOptionGroup() {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      OptionGroup group = new OptionGroup();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      for (ImplType t : values()) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        group.addOption(new Option(t.option, t.getDescription()));<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      return group;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>    static ImplType getServerImpl(Configuration conf) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      String confType = conf.get(SERVER_TYPE_CONF_KEY, THREAD_POOL.option);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      for (ImplType t : values()) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        if (confType.equals(t.option)) {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>          return t;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      }<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      throw new AssertionError("Unknown server ImplType.option:" + confType);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    static void setServerImpl(CommandLine cmd, Configuration conf) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      ImplType chosenType = null;<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      int numChosen = 0;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      for (ImplType t : values()) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        if (cmd.hasOption(t.option)) {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          chosenType = t;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>          ++numChosen;<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        }<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      }<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      if (numChosen &lt; 1) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        LOG.info("Using default thrift server type");<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        chosenType = DEFAULT;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      } else if (numChosen &gt; 1) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        throw new AssertionError("Exactly one option out of " +<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          Arrays.toString(values()) + " has to be specified");<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      LOG.info("Using thrift server type " + chosenType.option);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      conf.set(SERVER_TYPE_CONF_KEY, chosenType.option);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span>    public String simpleClassName() {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      return serverClass.getSimpleName();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>    public static List&lt;String&gt; serversThatCannotSpecifyBindIP() {<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      List&lt;String&gt; l = new ArrayList&lt;&gt;();<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      for (ImplType t : values()) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        if (!t.canSpecifyBindIP) {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>          l.add(t.simpleClassName());<a name="line.315"></a>
+<span class="sourceLineNo">316</span>        }<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      return l;<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public ThriftServerRunner(Configuration conf) throws IOException {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    UserProvider userProvider = UserProvider.instantiate(conf);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // login the server principal (if using secure Hadoop)<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    securityEnabled = userProvider.isHadoopSecurityEnabled()<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      &amp;&amp; userProvider.isHBaseSecurityEnabled();<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    if (securityEnabled) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      host = Strings.domainNamePointerToHostName(DNS.getDefaultHost(<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        conf.get("hbase.thrift.dns.interface", "default"),<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        conf.get("hbase.thrift.dns.nameserver", "default")));<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      userProvider.login("hbase.thrift.keytab.file",<a name="line.332"></a>
+<span class="sourceLineNo">333</span>        "hbase.thrift.kerberos.principal", host);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    }<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    this.conf = HBaseConfiguration.create(conf);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    this.listenPort = conf.getInt(PORT_CONF_KEY, DEFAULT_LISTEN_PORT);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    this.metrics = new ThriftMetrics(conf, ThriftMetrics.ThriftServerType.ONE);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    this.pauseMonitor = new JvmPauseMonitor(conf, this.metrics.getSource());<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    this.hbaseHandler = new HBaseHandler(conf, userProvider);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    this.hbaseHandler.initMetrics(metrics);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    this.handler = HbaseHandlerMetricsProxy.newInstance(<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      hbaseHandler, metrics, conf);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    this.realUser = userProvider.getCurrent().getUGI();<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    String strQop = conf.get(THRIFT_QOP_KEY);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    if (strQop != null) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      this.qop = SaslUtil.getQop(strQop);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    doAsEnabled = conf.getBoolean(THRIFT_SUPPORT_PROXYUSER, false);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    if (doAsEnabled) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      if (!conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        LOG.warn("Fail to enable the doAs feature. hbase.regionserver.thrift.http is not " +<a name="line.351"></a>
+<span class="sourceLineNo">352</span>                "configured ");<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      }<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    }<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    if (qop != null) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      if (qop != QualityOfProtection.AUTHENTICATION &amp;&amp;<a name="line.356"></a>
+<span class="sourceLineNo">357</span>          qop != QualityOfProtection.INTEGRITY &amp;&amp;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>          qop != QualityOfProtection.PRIVACY) {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>        throw new IOException(String.format("Invalide %s: It must be one of %s, %s, or %s.",<a name="line.359"></a>
+<span class="sourceLineNo">360</span>                              THRIFT_QOP_KEY,<a name="line.360"></a>
+<span class="sourceLineNo">361</span>                              QualityOfProtection.AUTHENTICATION.name(),<a name="line.361"></a>
+<span class="sourceLineNo">362</span>                              QualityOfProtection.INTEGRITY.name(),<a name="line.362"></a>
+<span class="sourceLineNo">363</span>                              QualityOfProtection.PRIVACY.name()));<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      if (!securityEnabled) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>        throw new IOException("Thrift server must"<a name="line.366"></a>
+<span class="sourceLineNo">367</span>          + " run in secure mode to support authentication");<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    }<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  /*<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * Runs the Thrift server<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   */<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  @Override<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  public void run() {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    realUser.doAs(new PrivilegedAction&lt;Object&gt;() {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      @Override<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      public Object run() {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        try {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>          pauseMonitor.start();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>          if (conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>            setupHTTPServer();<a name="line.383"></a>
+<span class="sourceLineNo">384</span>            httpServer.start();<a name="line.384"></a>
+<span class="sourceLineNo">385</span>            httpServer.join();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>          } else {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>            setupServer();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>            tserver.serve();<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          }<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        } catch (Exception e) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>          LOG.error(HBaseMarkers.FATAL, "Cannot run ThriftServer", e);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          // Crash the process if the ThriftServer is not running<a name="line.392"></a>
+<span class="sourceLineNo">393</span>          System.exit(-1);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        }<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        return null;<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      }<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    });<a name="line.397"></a>
 <span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  public void shutdown() {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    if (pauseMonitor != null) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      pauseMonitor.stop();<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    if (tserver != null) {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      tserver.stop();<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      tserver = null;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    }<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    if (httpServer != null) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      try {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        httpServer.stop();<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        httpServer = null;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      } catch (Exception e) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        LOG.error("Problem encountered in shutting down HTTP server " + e.getCause());<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      httpServer = null;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    }<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  }<a name="line.416"></a>
-<span class="sourceLineNo">417</span><a name="line.417"></a>
-<span class="sourceLineNo">418</span>  private void setupHTTPServer() throws IOException {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    TProcessor processor = new Hbase.Processor&lt;&gt;(handler);<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    TServlet thriftHttpServlet = new ThriftHttpServlet(processor, protocolFactory, realUser,<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        conf, hbaseHandler, securityEnabled, doAsEnabled);<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>    // Set the default max thread number to 100 to limit<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    // the number of concurrent requests so that Thrfit HTTP server doesn't OOM easily.<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    // Jetty set the default max thread number to 250, if we don't set it.<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    //<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    // Our default min thread number 2 is the same as that used by Jetty.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    int minThreads = conf.getInt(HTTP_MIN_THREADS, 2);<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    int maxThreads = conf.getInt(HTTP_MAX_THREADS, 100);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    QueuedThreadPool threadPool = new QueuedThreadPool(maxThreads);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    threadPool.setMinThreads(minThreads);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    httpServer = new Server(threadPool);<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>    // Context handler<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    ServletContextHandler ctxHandler = new ServletContextHandler(httpServer, "/", ServletContextHandler.SESSIONS);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    ctxHandler.addServlet(new ServletHolder(thriftHttpServlet), "/*");<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>    // set up Jetty and run the embedded server<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    HttpConfiguration httpConfig = new HttpConfiguration();<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    httpConfig.setSecureScheme("https");<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    httpConfig.setSecurePort(listenPort);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    httpConfig.setHeaderCacheSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    httpConfig.setRequestHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    httpConfig.setResponseHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    httpConfig.setSendServerVersion(false);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    httpConfig.setSendDateHeader(false);<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>    ServerConnector serverConnector;<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    if(conf.getBoolean(THRIFT_SSL_ENABLED, false)) {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      HttpConfiguration httpsConfig = new HttpConfiguration(httpConfig);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      httpsConfig.addCustomizer(new SecureRequestCustomizer());<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>      SslContextFactory sslCtxFactory = new SslContextFactory();<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      String keystore = conf.get(THRIFT_SSL_KEYSTORE_STORE);<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      String password = HBaseConfiguration.getPassword(conf,<a name="line.456"></a>
-<span class="sourceLineNo">457</span>          THRIFT_SSL_KEYSTORE_PASSWORD, null);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      String keyPassword = HBaseConfiguration.getPassword(conf,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>          THRIFT_SSL_KEYSTORE_KEYPASSWORD, password);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      sslCtxFactory.setKeyStorePath(keystore);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      sslCtxFactory.setKeyStorePassword(password);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      sslCtxFactory.setKeyManagerPassword(keyPassword);<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span>      String[] excludeCiphers = conf.getStrings(<a name="line.464"></a>
-<span class="sourceLineNo">465</span>          THRIFT_SSL_EXCLUDE_CIPHER_SUITES, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      if (excludeCiphers.length != 0) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>        sslCtxFactory.setExcludeCipherSuites(excludeCiphers);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      }<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      String[] includeCiphers = conf.getStrings(<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          THRIFT_SSL_INCLUDE_CIPHER_SUITES, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      if (includeCiphers.length != 0) {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>        sslCtxFactory.setIncludeCipherSuites(includeCiphers);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>      // Disable SSLv3 by default due to "Poodle" Vulnerability - CVE-2014-3566<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      String[] excludeProtocols = conf.getStrings(<a name="line.476"></a>
-<span class="sourceLineNo">477</span>          THRIFT_SSL_EXCLUDE_PROTOCOLS, "SSLv3");<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      if (excludeProtocols.length != 0) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        sslCtxFactory.setExcludeProtocols(excludeProtocols);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      }<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      String[] includeProtocols = conf.getStrings(<a name="line.481"></a>
-<span class="sourceLineNo">482</span>          THRIFT_SSL_INCLUDE_PROTOCOLS, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      if (includeProtocols.length != 0) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>        sslCtxFactory.setIncludeProtocols(includeProtocols);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      }<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>      serverConnector = new ServerConnector(httpServer,<a name="line.487"></a>
-<span class="sourceLineNo">488</span>          new SslConnectionFactory(sslCtxFactory, HttpVersion.HTTP_1_1.toString()),<a name="line.488"></a>
-<span class="sourceLineNo">489</span>          new HttpConnectionFactory(httpsConfig));<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    } else {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      serverConnector = new ServerConnector(httpServer, new HttpConnectionFactory(httpConfig));<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    serverConnector.setPort(listenPort);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    String host = getBindAddress(conf).getHostAddress();<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    serverConnector.setHost(host);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    httpServer.addConnector(serverConnector);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    httpServer.setStopAtShutdown(true);<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    if (doAsEnabled) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      ProxyUsers.refreshSuperUserGroupsConfiguration(conf);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    }<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>    LOG.info("Starting Thrift HTTP Server on " + Integer.toString(listenPort));<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  }<a name="line.504"></a>
+<span class="sourceLineNo">399</span>  }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>  public void shutdown() {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    if (pauseMonitor != null) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      pauseMonitor.stop();<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    }<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    if (tserver != null) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      tserver.stop();<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      tserver = null;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    if (httpServer != null) {<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      try {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        httpServer.stop();<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        httpServer = null;<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      } catch (Exception e) {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        LOG.error("Problem encountered in shutting down HTTP server " + e.getCause());<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      }<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      httpServer = null;<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>  }<a name="line.418"></a>
+<span class="sourceLineNo">419</span><a name="line.419"></a>
+<span class="sourceLineNo">420</span>  private void setupHTTPServer() throws IOException {<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    TProcessor processor = new Hbase.Processor&lt;&gt;(handler);<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    TServlet thriftHttpServlet = new ThriftHttpServlet(processor, protocolFactory, realUser,<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        conf, hbaseHandler, securityEnabled, doAsEnabled);<a name="line.424"></a>
+<span class="sourceLineNo">425</span><a name="line.425"></a>
+<span class="sourceLineNo">426</span>    // Set the default max thread number to 100 to limit<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    // the number of concurrent requests so that Thrfit HTTP server doesn't OOM easily.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    // Jetty set the default max thread number to 250, if we don't set it.<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    //<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    // Our default min thread number 2 is the same as that used by Jetty.<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    int minThreads = conf.getInt(HTTP_MIN_THREADS, 2);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    int maxThreads = conf.getInt(HTTP_MAX_THREADS, 100);<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    QueuedThreadPool threadPool = new QueuedThreadPool(maxThreads);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    threadPool.setMinThreads(minThreads);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    httpServer = new Server(threadPool);<a name="line.435"></a>
+<span class="sourceLineNo">436</span><a name="line.436"></a>
+<span class="sourceLineNo">437</span>    // Context handler<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    ServletContextHandler ctxHandler = new ServletContextHandler(httpServer, "/",<a name="line.438"></a>
+<span class="sourceLineNo">439</span>            ServletContextHandler.SESSIONS);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    ctxHandler.addServlet(new ServletHolder(thriftHttpServlet), "/*");<a name="line.440"></a>
+<span class="sourceLineNo">441</span><a name="line.441"></a>
+<span class="sourceLineNo">442</span>    // set up Jetty and run the embedded server<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    HttpConfiguration httpConfig = new HttpConfiguration();<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    httpConfig.setSecureScheme("https");<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    httpConfig.setSecurePort(listenPort);<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    httpConfig.setHeaderCacheSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    httpConfig.setRequestHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    httpConfig.setResponseHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    httpConfig.setSendServerVersion(false);<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    httpConfig.setSendDateHeader(false);<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    ServerConnector serverConnector;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    if(conf.getBoolean(THRIFT_SSL_ENABLED, false)) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      HttpConfiguration httpsConfig = new HttpConfiguration(httpConfig);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      httpsConfig.addCustomizer(new SecureRequestCustomizer());<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>      SslContextFactory sslCtxFactory = new SslContextFactory();<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      String keystore = conf.get(THRIFT_SSL_KEYSTORE_STORE);<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      String password = HBaseConfiguration.getPassword(conf,<a name="line.459"></a>
+<span class="sourceLineNo">460</span>          THRIFT_SSL_KEYSTORE_PASSWORD, null);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      String keyPassword = HBaseConfiguration.getPassword(conf,<a name="line.461"></a>
+<span class="sourceLineNo">462</span>          THRIFT_SSL_KEYSTORE_KEYPASSWORD, password);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      sslCtxFactory.setKeyStorePath(keystore);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      sslCtxFactory.setKeyStorePassword(password);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      sslCtxFactory.setKeyManagerPassword(keyPassword);<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>      String[] excludeCiphers = conf.getStrings(<a name="line.467"></a>
+<span class="sourceLineNo">468</span>          THRIFT_SSL_EXCLUDE_CIPHER_SUITES, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      if (excludeCiphers.length != 0) {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>        sslCtxFactory.setExcludeCipherSuites(excludeCiphers);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      }<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      String[] includeCiphers = conf.getStrings(<a name="line.472"></a>
+<span class="sourceLineNo">473</span>          THRIFT_SSL_INCLUDE_CIPHER_SUITES, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      if (includeCiphers.length != 0) {<a name="line.474"></a>
+<span class="sourceLineNo">475</span>        sslCtxFactory.setIncludeCipherSuites(includeCiphers);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      }<a name="line.476"></a>
+<span class="sourceLineNo">477</span><a name="line.477"></a>
+<span class="sourceLineNo">478</span>      // Disable SSLv3 by default due to "Poodle" Vulnerability - CVE-2014-3566<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      String[] excludeProtocols = conf.getStrings(<a name="line.479"></a>
+<span class="sourceLineNo">480</span>          THRIFT_SSL_EXCLUDE_PROTOCOLS, "SSLv3");<a name="line.480"></a>
+<span class="sourceLineNo">481</span>      if (excludeProtocols.length != 0) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>        sslCtxFactory.setExcludeProtocols(excludeProtocols);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      }<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      String[] includeProtocols = conf.getStrings(<a name="line.484"></a>
+<span class="sourceLineNo">485</span>          THRIFT_SSL_INCLUDE_PROTOCOLS, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      if (includeProtocols.length != 0) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>        sslCtxFactory.setIncludeProtocols(includeProtocols);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      }<a name="line.488"></a>
+<span class="sourceLineNo">489</span><a name="line.489"></a>
+<span class="sourceLineNo">490</span>      serverConnector = new ServerConnector(httpServer,<a name="line.490"></a>
+<span class="sourceLineNo">491</span>          new SslConnectionFactory(sslCtxFactory, HttpVersion.HTTP_1_1.toString()),<a name="line.491"></a>
+<span class="sourceLineNo">492</span>          new HttpConnectionFactory(httpsConfig));<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    } else {<a name="line.493"></a>
+<span class="sourceLineNo">494</span>      serverConnector = new ServerConnector(httpServer, new HttpConnectionFactory(httpConfig));<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    }<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    serverConnector.setPort(listenPort);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    String host = getBindAddress(conf).getHostAddress();<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    serverConnector.setHost(host);<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    httpServer.addConnector(serverConnector);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    httpServer.setStopAtShutdown(true);<a name="line.500"></a>
+<span class="sourceLineNo">501</span><a name="line.501"></a>
+<span class="sourceLineNo">502</span>    if (doAsEnabled) {<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      ProxyUsers.refreshSuperUserGroupsConfiguration(conf);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    }<a name="line.504"></a>
 <span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>  /**<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * Setting up the thrift TServer<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   */<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  private void setupServer() throws Exception {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    // Construct correct ProtocolFactory<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    TProtocolFactory protocolFactory;<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    if (conf.getBoolean(COMPACT_CONF_KEY, false)) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      LOG.debug("Using compact protocol");<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      protocolFactory = new TCompactProtocol.Factory();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    } else {<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      LOG.debug("Using binary protocol");<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      protocolFactory = new TBinaryProtocol.Factory();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    }<a name="line.518"></a>
+<span class="sourceLineNo">506</span>    LOG.info("Starting Thrift HTTP Server on " + Integer.toString(listenPort));<a name="line.506"></a>
+<span class="sourceLineNo">507</span>  }<a name="line.507"></a>
+<span class="sourceLineNo">508</span><a name="line.508"></a>
+<span class="sourceLineNo">509</span>  /**<a name="line.509"></a>
+<span class="sourceLineNo">510</span>   * Setting up the thrift TServer<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
+<span class="sourceLineNo">512</span>  private void setupServer() throws Exception {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    // Construct correct ProtocolFactory<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    TProtocolFactory protocolFactory = getProtocolFactory();<a name="line.514"></a>
+<span class="sourceLineNo">515</span><a name="line.515"></a>
+<span class="sourceLineNo">516</span>    final TProcessor p = new Hbase.Processor&lt;&gt;(handler);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    ImplType implType = ImplType.getServerImpl(conf);<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    TProcessor processor = p;<a name="line.518"></a>
 <span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>    final TProcessor p = new Hbase.Processor&lt;&gt;(handler);<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    ImplType implType = ImplType.getServerImpl(conf);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    TProcessor processor = p;<a name="line.522"></a>
-<span class="sourceLineNo">523</span><a name="line.523"></a>
-<span class="sourceLineNo">524</span>    // Construct correct TransportFactory<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    TTransportFactory transportFactory;<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    if (conf.getBoolean(FRAMED_CONF_KEY, false) || implType.isAlwaysFramed) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      if (qop != null) {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>        throw new RuntimeException("Thrift server authentication"<a name="line.528"></a>
-<span class="sourceLineNo">529</span>          + " doesn't work with framed transport yet");<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      }<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      transportFactory = new TFramedTransport.Factory(<a name="line.531"></a>
-<span class="sourceLineNo">532</span>          conf.getInt(MAX_FRAME_SIZE_CONF_KEY, 2)  * 1024 * 1024);<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      LOG.debug("Using framed transport");<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    } else if (qop == null) {<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      transportFactory = new TTransportFactory();<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    } else {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      // Extract the name from the principal<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      String name = SecurityUtil.getUserFromPrincipal(<a name="line.538"></a>
-<span class="sourceLineNo">539</span>        conf.get("hbase.thrift.kerberos.principal"));<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      Map&lt;String, String&gt; saslProperties = SaslUtil.initSaslProperties(qop.name());<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      TSaslServerTransport.Factory saslFactory = new TSaslServerTransport.Factory();<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      saslFactory.addServerDefinition("GSSAPI", name, host, saslProperties,<a name="line.542"></a>
-<span class="sourceLineNo">543</span>        new SaslGssCallbackHandler() {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>          @Override<a name="line.544"></a>
-<span class="sourceLineNo">545</span>          public void handle(Callback[] callbacks)<a name="line.545"></a>
-<span class="sourceLineNo">546</span>              throws UnsupportedCallbackException {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>            AuthorizeCallback ac = null;<a name="line.547"></a>
-<span class="sourceLineNo">548</span>            for (Callback callback : callbacks) {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>              if (callback instanceof AuthorizeCallback) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>                ac = (AuthorizeCallback) callback;<a name="line.550"></a>
-<span class="sourceLineNo">551</span>              } else {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>                throw new UnsupportedCallbackException(callback,<a name="line.552"></a>
-<span class="sourceLineNo">553</span>                    "Unrecognized SASL GSSAPI Callback");<a name="line.553"></a>
-<span class="sourceLineNo">554</span>              }<a name="line.554"></a>
-<span class="sourceLineNo">555</span>            }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>            if (ac != null) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>              String authid = ac.getAuthenticationID();<a name="line.557"></a>
-<span class="sourceLineNo">558</span>              String authzid = ac.getAuthorizationID();<a name="line.558"></a>
-<span class="sourceLineNo">559</span>              if (!authid.equals(authzid)) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>                ac.setAuthorized(false);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>              } else {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>                ac.setAuthorized(true);<a name="line.562"></a>
-<span class="sourceLineNo">563</span>                String userName = SecurityUtil.getUserFromPrincipal(authzid);<a name="line.563"></a>
-<span class="sourceLineNo">564</span>                LOG.info("Effective user: " + userName);<a name="line.564"></a>
-<span class="sourceLineNo">565</span>                ac.setAuthorizedID(userName);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>              }<a name="line.566"></a>
-<span class="sourceLineNo">567</span>            }<a name="line.567"></a>
-<span class="sourceLineNo">568</span>          }<a name="line.568"></a>
-<span class="sourceLineNo">569</span>        });<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      transportFactory = saslFactory;<a name="line.570"></a>
-<span class="sourceLineNo">571</span><a name="line.571"></a>
-<span class="sourceLineNo">572</span>      // Create a processor wrapper, to get the caller<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      processor = new TProcessor() {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>        @Override<a name="line.574"></a>
-<span class="sourceLineNo">575</span>        public boolean process(TProtocol inProt,<a name="line.575"></a>
-<span class="sourceLineNo">576</span>            TProtocol outProt) throws TException {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>          TSaslServerTransport saslServerTransport =<a name="line.577"></a>
-<span class="sourceLineNo">578</span>            (TSaslServerTransport)inProt.getTransport();<a name="line.578"></a>
-<span class="sourceLineNo">579</span>          SaslServer saslServer = saslServerTransport.getSaslServer();<a name="line.579"></a>
-<span class="sourceLineNo">580</span>          String principal = saslServer.getAuthorizationID();<a name="line.580"></a>
-<span class="sourceLineNo">581</span>          hbaseHandler.setEffectiveUser(principal);<a name="line.581"></a>
-<span class="sourceLineNo">582</span>          return p.process(inProt, outProt);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>        }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>      };<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    }<a name="line.585"></a>
-<span class="sourceLineNo">586</span><a name="line.586"></a>
-<span class="sourceLineNo">587</span>    if (conf.get(BIND_CONF_KEY) != null &amp;&amp; !implType.canSpecifyBindIP) {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      LOG.error("Server types " + Joiner.on(", ").join(<a name="line.588"></a>
-<span class="sourceLineNo">589</span>          ImplType.serversThatCannotSpecifyBindIP()) + " don't support IP " +<a name="line.589"></a>
-<span class="sourceLineNo">590</span>          "address binding at the moment. See " +<a name="line.590"></a>
-<span class="sourceLineNo">591</span>          "https://issues.apache.org/jira/browse/HBASE-2155 for details.");<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      throw new RuntimeException(<a name="line.592"></a>
-<span class="sourceLineNo">593</span>          "-" + BIND_CONF_KEY + " not supported with " + implType);<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    }<a name="line.594"></a>
-<span class="sourceLineNo">595</span><a name="line.595"></a>
-<span class="sourceLineNo">596</span>    // Thrift's implementation uses '0' as a placeholder for 'use the default.'<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    int backlog = conf.getInt(BACKLOG_CONF_KEY, 0);<a name="line.597"></a>
-<span class="sourceLineNo">598</span><a name="line.598"></a>
-<span class="sourceLineNo">599</span>    if (implType == ImplType.HS_HA || implType == ImplType.NONBLOCKING ||<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        implType == ImplType.THREADED_SELECTOR) {<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      InetAddress listenAddress = getBindAddress(conf);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      TNonblockingServerTransport serverTransport = new TNonblockingServerSocket(<a name="line.602"></a>
-<span class="sourceLineNo">603</span>          new InetSocketAddress(listenAddress, listenPort));<a name="line.603"></a>
-<span class="sourceLineNo">604</span><a name="line.604"></a>
-<span class="sourceLineNo">605</span>      if (implType == ImplType.NONBLOCKING) {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>        TNonblockingServer.Args serverArgs =<a name="line.606"></a>
-<span class="sourceLineNo">607</span>            new TNonblockingServer.Args(serverTransport);<a name="line.607"></a>
-<span class="sourceLineNo">608</span>        serverArgs.processor(processor)<a name="line.608"></a>
-<span class="sourceLineNo">609</span>                  .transportFactory(transportFactory)<a name="line.609"></a>
-<span class="sourceLineNo">610</span>                  .protocolFactory(protocolFactory);<a name="line.610"></a>
-<span class="sourceLineNo">611</span>        tserver = new TNonblockingServer(serverArgs);<a name="line.611"></a>
-<span class="sourceLineNo">612</span>      } else if (implType == ImplType.HS_HA) {<a name="line.612"></a>
-<span class="sourceLineNo">613</span>        THsHaServer.Args serverArgs = new THsHaServer.Args(serverTransport);<a name="line.613"></a>
-<span class="sourceLineNo">614</span>        CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        ExecutorService executorService = createExecutor(<a name="line.615"></a>
-<span class="sourceLineNo">616</span>            callQueue, serverArgs.getMaxWorkerThreads(), serverArgs.getMaxWorkerThreads());<a name="line.616"></a>
-<span class="sourceLineNo">617</span>        serverArgs.executorService(executorService)<a name="line.617"></a>
-<span class="sourceLineNo">618</span>                  .processor(processor)<a name="line.618"></a>
-<span class="sourceLineNo">619</span>                  .transportFactory(transportFactory)<a name="line.619"></a>
-<span class="sourceLineNo">620</span>                  .protocolFactory(protocolFactory);<a name="line.620"></a>
-<span class="sourceLineNo">621</span>        tserver = new THsHaServer(serverArgs);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      } else { // THREADED_SELECTOR<a name="line.622"></a>
-<span class="sourceLineNo">623</span>        TThreadedSelectorServer.Args serverArgs =<a name="line.623"></a>
-<span class="sourceLineNo">624</span>            new HThreadedSelectorServerArgs(serverTransport, conf);<a name="line.624"></a>
-<span class="sourceLineNo">625</span>        CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>        ExecutorService executorService = createExecutor(<a name="line.626"></a>
-<span class="sourceLineNo">627</span>            callQueue, serverArgs.getWorkerThreads(), serverArgs.getWorkerThreads());<a name="line.627"></a>
-<span class="sourceLineNo">628</span>        serverArgs.executorService(executorService)<a name="line.628"></a>
-<span class="sourceLineNo">629</span>                  .processor(processor)<a name="line.629"></a>
-<span class="sourceLineNo">630</span>                  .transportFactory(transportFactory)<a name="line.630"></a>
-<span class="sourceLineNo">631</span>                  .protocolFactory(protocolFactory);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>        tserver = new TThreadedSelectorServer(serverArgs);<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      }<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      LOG.info("starting HBase " + implType.simpleClassName() +<a name="line.634"></a>
-<span class="sourceLineNo">635</span>          " server on " + Integer.toString(listenPort));<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    } else if (implType == ImplType.THREAD_POOL) {<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      // Thread pool server. Get the IP address to bind to.<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      InetAddress listenAddress = getBindAddress(conf);<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      int readTimeout = conf.getInt(THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY,<a name="line.639"></a>
-<span class="sourceLineNo">640</span>          THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT);<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      TServerTransport serverTransport = new TServerSocket(<a name="line.641"></a>
-<span class="sourceLineNo">642</span>          new TServerSocket.ServerSocketTransportArgs().<a name="line.642"></a>
-<span class="sourceLineNo">643</span>              bindAddr(new InetSocketAddress(listenAddress, listenPort)).<a name="line.643"></a>
-<span class="sourceLineNo">644</span>              backlog(backlog).<a name="line.644"></a>
-<span class="sourceLineNo">645</span>              clientTimeout(readTimeout));<a name="line.645"></a>
-<span class="sourceLineNo">646</span><a name="line.646"></a>
-<span class="sourceLineNo">647</span>      TBoundedThreadPoolServer.Args serverArgs =<a name="line.647"></a>
-<span class="sourceLineNo">648</span>          new TBoundedThreadPoolServer.Args(serverTransport, conf);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      serverArgs.processor(processor)<a name="line.649"></a>
-<span class="sourceLineNo">650</span>                .transportFactory(transportFactory)<a name="line.650"></a>
-<span class="sourceLineNo">651</span>                .protocolFactory(protocolFactory);<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      LOG.info("starting " + ImplType.THREAD_POOL.simpleClassName() + " on "<a name="line.652"></a>
-<span class="sourceLineNo">653</span>          + listenAddress + ":" + Integer.toString(listenPort)<a name="line.653"></a>
-<span class="sourceLineNo">654</span>          + " with readTimeout " + readTimeout + "ms; " + serverArgs);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      TBoundedThreadPoolServer tserver =<a name="line.655"></a>
-<span class="sourceLineNo">656</span>          new TBoundedThreadPoolServer(serverArgs, metrics);<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      this.tserver = tserver;<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    } else {<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      throw new AssertionError("Unsupported Thrift server implementation: " +<a name="line.659"></a>
-<span class="sourceLineNo">660</span>          implType.simpleClassName());<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    }<a name="line.661"></a>
+<span class="sourceLineNo">520</span>    // Construct correct TransportFactory<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    TTransportFactory transportFactory;<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    if (conf.getBoolean(FRAMED_CONF_KEY, false) || implType.isAlwaysFramed) {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>      if (qop != null) {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>        throw new RuntimeException("Thrift server authentication"<a name="line.524"></a>
+<span class="sourceLineNo">525</span>          + " doesn't work with framed transport yet");<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      }<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      transportFactory = new TFramedTransport.Factory(<a name="line.527"></a>
+<span class="sourceLineNo">528</span>          conf.getInt(MAX_FRAME_SIZE_CONF_KEY, 2)  * 1024 * 1024);<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      LOG.debug("Using framed transport");<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    } else if (qop == null) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>      transportFactory = new TTransportFactory();<a name="line.531"></a>
+<span class="sourceLineNo">532</span>    } else {<a name="line.532"></a>
+<span class="sourceLineNo">533</span>      // Extract the name from the principal<a name="line.533"></a>
+<span class="sourceLineNo">534</span>      String name = SecurityUtil.getUserFromPrincipal(<a name="line.534"></a>
+<span class="sourceLineNo">535</span>        conf.get("hbase.thrift.kerberos.principal"));<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      Map&lt;String, String&gt; saslProperties = SaslUtil.initSaslProperties(qop.name());<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      TSaslServerTransport.Factory saslFactory = new TSaslServerTransport.Factory();<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      saslFactory.addServerDefinition("GSSAPI", name, host, saslProperties,<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        new SaslGssCallbackHandler() {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>          @Override<a name="line.540"></a>
+<span class="sourceLineNo">541</span>          public void handle(Callback[] call

<TRUNCATED>

[28/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftServer.html b/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftServer.html
index e4ffd88..4fc2571 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftServer.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftServer.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":10};
+var methods = {"i0":9,"i1":10,"i2":9,"i3":10,"i4":10,"i5":10,"i6":9,"i7":10,"i8":10,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9,"i15":9,"i16":9,"i17":9,"i18":9,"i19":10,"i20":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -122,8 +122,8 @@ var activeTableTab = "activeTableTab";
 public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.97">ThriftServer</a>
 extends org.apache.hadoop.conf.Configured
 implements org.apache.hadoop.util.Tool</pre>
-<div class="block">ThriftServer - this class starts up a Thrift server which implements the HBase API specified in the
- HbaseClient.thrift IDL file.</div>
+<div class="block">ThriftServer - this class starts up a Thrift server which implements the HBase API specified in
+ the HbaseClient.thrift IDL file.</div>
 </li>
 </ul>
 </div>
@@ -213,16 +213,57 @@ implements org.apache.hadoop.util.Tool</pre>
           int&nbsp;listenPort)</code>&nbsp;</td>
 </tr>
 <tr id="i1" class="rowColor">
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#checkArguments-org.apache.commons.cli.CommandLine-">checkArguments</a></span>(org.apache.commons.cli.CommandLine&nbsp;cmd)</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
 <td class="colFirst"><code>private static <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#createExecutor-int-int-org.apache.hadoop.hbase.thrift.ThriftMetrics-">createExecutor</a></span>(int&nbsp;workerThreads,
               int&nbsp;maxCallQueueSize,
               <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a>&nbsp;metrics)</code>&nbsp;</td>
 </tr>
-<tr id="i2" class="altColor">
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#getBindAddress-org.apache.hadoop.conf.Configuration-org.apache.commons.cli.CommandLine-">getBindAddress</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+              org.apache.commons.cli.CommandLine&nbsp;cmd)</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#getImplType-boolean-boolean-boolean-">getImplType</a></span>(boolean&nbsp;nonblocking,
+           boolean&nbsp;hsha,
+           boolean&nbsp;selector)</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>private int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#getListenPort-org.apache.hadoop.conf.Configuration-org.apache.commons.cli.CommandLine-">getListenPort</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+             org.apache.commons.cli.CommandLine&nbsp;cmd)</code>&nbsp;</td>
+</tr>
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>private static org.apache.commons.cli.Options</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#getOptions--">getOptions</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>private int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#getReadTimeout-org.apache.hadoop.conf.Configuration-org.apache.commons.cli.CommandLine-">getReadTimeout</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+              org.apache.commons.cli.CommandLine&nbsp;cmd)</code>&nbsp;</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>private org.apache.thrift.server.TServer</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#getServer-int-int-int-int-int-boolean-boolean-boolean-org.apache.hadoop.hbase.thrift.ThriftMetrics-org.apache.thrift.protocol.TProtocolFactory-org.apache.thrift.TProcessor-org.apache.thrift.transport.TTransportFactory-java.net.InetSocketAddress-">getServer</a></span>(int&nbsp;workerThreads,
+         int&nbsp;selectorThreads,
+         int&nbsp;maxCallQueueSize,
+         int&nbsp;readTimeout,
+         int&nbsp;backlog,
+         boolean&nbsp;nonblocking,
+         boolean&nbsp;hsha,
+         boolean&nbsp;selector,
+         <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a>&nbsp;metrics,
+         org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
+         org.apache.thrift.TProcessor&nbsp;processor,
+         org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
+         <a href="http://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>&nbsp;inetSocketAddress)</code>&nbsp;</td>
+</tr>
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>private static org.apache.thrift.server.TServer</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#getTHsHaServer-org.apache.thrift.protocol.TProtocolFactory-org.apache.thrift.TProcessor-org.apache.thrift.transport.TTransportFactory-int-int-java.net.InetSocketAddress-org.apache.hadoop.hbase.thrift.ThriftMetrics-">getTHsHaServer</a></span>(org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
               org.apache.thrift.TProcessor&nbsp;processor,
@@ -232,18 +273,18 @@ implements org.apache.hadoop.util.Tool</pre>
               <a href="http://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>&nbsp;inetSocketAddress,
               <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a>&nbsp;metrics)</code>&nbsp;</td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>private static org.apache.thrift.server.TServer</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#getTNonBlockingServer-org.apache.thrift.protocol.TProtocolFactory-org.apache.thrift.TProcessor-org.apache.thrift.transport.TTransportFactory-java.net.InetSocketAddress-">getTNonBlockingServer</a></span>(org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
                      org.apache.thrift.TProcessor&nbsp;processor,
                      org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
                      <a href="http://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>&nbsp;inetSocketAddress)</code>&nbsp;</td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>private static org.apache.thrift.protocol.TProtocolFactory</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#getTProtocolFactory-boolean-">getTProtocolFactory</a></span>(boolean&nbsp;isCompact)</code>&nbsp;</td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>private static org.apache.thrift.server.TServer</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#getTThreadedSelectorServer-org.apache.thrift.protocol.TProtocolFactory-org.apache.thrift.TProcessor-org.apache.thrift.transport.TTransportFactory-int-int-int-java.net.InetSocketAddress-org.apache.hadoop.hbase.thrift.ThriftMetrics-">getTThreadedSelectorServer</a></span>(org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
                           org.apache.thrift.TProcessor&nbsp;processor,
@@ -254,7 +295,7 @@ implements org.apache.hadoop.util.Tool</pre>
                           <a href="http://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>&nbsp;inetSocketAddress,
                           <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a>&nbsp;metrics)</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>private static org.apache.thrift.server.TServer</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#getTThreadPoolServer-org.apache.thrift.protocol.TProtocolFactory-org.apache.thrift.TProcessor-org.apache.thrift.transport.TTransportFactory-int-java.net.InetSocketAddress-int-int-org.apache.hadoop.hbase.thrift.ThriftMetrics-">getTThreadPoolServer</a></span>(org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
                     org.apache.thrift.TProcessor&nbsp;processor,
@@ -265,7 +306,7 @@ implements org.apache.hadoop.util.Tool</pre>
                     int&nbsp;clientTimeout,
                     <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a>&nbsp;metrics)</code>&nbsp;</td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>private static org.apache.thrift.transport.TTransportFactory</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#getTTransportFactory-org.apache.hadoop.hbase.security.SaslUtil.QualityOfProtection-java.lang.String-java.lang.String-boolean-int-">getTTransportFactory</a></span>(<a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security">SaslUtil.QualityOfProtection</a>&nbsp;qop,
                     <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
@@ -273,32 +314,36 @@ implements org.apache.hadoop.util.Tool</pre>
                     boolean&nbsp;framed,
                     int&nbsp;frameSize)</code>&nbsp;</td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#main-java.lang.String:A-">main</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</code>
 <div class="block">Start up the Thrift2 server.</div>
 </td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>private static org.apache.commons.cli.CommandLine</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#parseArguments-org.apache.hadoop.conf.Configuration-org.apache.commons.cli.Options-java.lang.String:A-">parseArguments</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
               org.apache.commons.cli.Options&nbsp;options,
               <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#printUsage--">printUsage</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>protected static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#registerFilters-org.apache.hadoop.conf.Configuration-">registerFilters</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
 <div class="block">Adds the option to pre-load filters at startup.</div>
 </td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#run-java.lang.String:A-">run</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</code>&nbsp;</td>
 </tr>
+<tr id="i20" class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#startInfoServer-org.apache.hadoop.conf.Configuration-">startInfoServer</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
+</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.conf.Configured">
@@ -481,7 +526,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>parseArguments</h4>
-<pre>private static&nbsp;org.apache.commons.cli.CommandLine&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.167">parseArguments</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>private static&nbsp;org.apache.commons.cli.CommandLine&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.170">parseArguments</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                                  org.apache.commons.cli.Options&nbsp;options,
                                                                  <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
                                                           throws org.apache.commons.cli.ParseException,
@@ -499,7 +544,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTProtocolFactory</h4>
-<pre>private static&nbsp;org.apache.thrift.protocol.TProtocolFactory&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.173">getTProtocolFactory</a>(boolean&nbsp;isCompact)</pre>
+<pre>private static&nbsp;org.apache.thrift.protocol.TProtocolFactory&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.176">getTProtocolFactory</a>(boolean&nbsp;isCompact)</pre>
 </li>
 </ul>
 <a name="getTTransportFactory-org.apache.hadoop.hbase.security.SaslUtil.QualityOfProtection-java.lang.String-java.lang.String-boolean-int-">
@@ -508,7 +553,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTTransportFactory</h4>
-<pre>private static&nbsp;org.apache.thrift.transport.TTransportFactory&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.183">getTTransportFactory</a>(<a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security">SaslUtil.QualityOfProtection</a>&nbsp;qop,
+<pre>private static&nbsp;org.apache.thrift.transport.TTransportFactory&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.186">getTTransportFactory</a>(<a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security">SaslUtil.QualityOfProtection</a>&nbsp;qop,
                                                                                   <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                                                                   <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;host,
                                                                                   boolean&nbsp;framed,
@@ -521,7 +566,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>bindToPort</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.233">bindToPort</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bindValue,
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.236">bindToPort</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bindValue,
                                             int&nbsp;listenPort)
                                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/net/UnknownHostException.html?is-external=true" title="class or interface in java.net">UnknownHostException</a></pre>
 <dl>
@@ -536,7 +581,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTNonBlockingServer</h4>
-<pre>private static&nbsp;org.apache.thrift.server.TServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.246">getTNonBlockingServer</a>(org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
+<pre>private static&nbsp;org.apache.thrift.server.TServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.249">getTNonBlockingServer</a>(org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
                                                                       org.apache.thrift.TProcessor&nbsp;processor,
                                                                       org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
                                                                       <a href="http://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>&nbsp;inetSocketAddress)
@@ -553,7 +598,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTHsHaServer</h4>
-<pre>private static&nbsp;org.apache.thrift.server.TServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.257">getTHsHaServer</a>(org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
+<pre>private static&nbsp;org.apache.thrift.server.TServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.261">getTHsHaServer</a>(org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
                                                                org.apache.thrift.TProcessor&nbsp;processor,
                                                                org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
                                                                int&nbsp;workerThreads,
@@ -573,7 +618,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTThreadedSelectorServer</h4>
-<pre>private static&nbsp;org.apache.thrift.server.TServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.278">getTThreadedSelectorServer</a>(org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
+<pre>private static&nbsp;org.apache.thrift.server.TServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.282">getTThreadedSelectorServer</a>(org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
                                                                            org.apache.thrift.TProcessor&nbsp;processor,
                                                                            org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
                                                                            int&nbsp;workerThreads,
@@ -594,7 +639,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>createExecutor</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.302">createExecutor</a>(int&nbsp;workerThreads,
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.306">createExecutor</a>(int&nbsp;workerThreads,
                                               int&nbsp;maxCallQueueSize,
                                               <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a>&nbsp;metrics)</pre>
 </li>
@@ -605,7 +650,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTThreadPoolServer</h4>
-<pre>private static&nbsp;org.apache.thrift.server.TServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.320">getTThreadPoolServer</a>(org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
+<pre>private static&nbsp;org.apache.thrift.server.TServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.324">getTThreadPoolServer</a>(org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
                                                                      org.apache.thrift.TProcessor&nbsp;processor,
                                                                      org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
                                                                      int&nbsp;workerThreads,
@@ -626,7 +671,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>registerFilters</h4>
-<pre>protected static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.354">registerFilters</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>protected static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.358">registerFilters</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Adds the option to pre-load filters at startup.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -640,7 +685,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.371">main</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.375">main</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
                  throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Start up the Thrift2 server.</div>
 <dl>
@@ -652,10 +697,10 @@ implements org.apache.hadoop.util.Tool</pre>
 <a name="run-java.lang.String:A-">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.379">run</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.383">run</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
         throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -665,6 +710,96 @@ implements org.apache.hadoop.util.Tool</pre>
 </dl>
 </li>
 </ul>
+<a name="getImplType-boolean-boolean-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getImplType</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.534">getImplType</a>(boolean&nbsp;nonblocking,
+                           boolean&nbsp;hsha,
+                           boolean&nbsp;selector)</pre>
+</li>
+</ul>
+<a name="checkArguments-org.apache.commons.cli.CommandLine-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>checkArguments</h4>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.548">checkArguments</a>(org.apache.commons.cli.CommandLine&nbsp;cmd)</pre>
+</li>
+</ul>
+<a name="getBindAddress-org.apache.hadoop.conf.Configuration-org.apache.commons.cli.CommandLine-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getBindAddress</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.561">getBindAddress</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                              org.apache.commons.cli.CommandLine&nbsp;cmd)</pre>
+</li>
+</ul>
+<a name="getListenPort-org.apache.hadoop.conf.Configuration-org.apache.commons.cli.CommandLine-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getListenPort</h4>
+<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.572">getListenPort</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                          org.apache.commons.cli.CommandLine&nbsp;cmd)</pre>
+</li>
+</ul>
+<a name="getReadTimeout-org.apache.hadoop.conf.Configuration-org.apache.commons.cli.CommandLine-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getReadTimeout</h4>
+<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.586">getReadTimeout</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                           org.apache.commons.cli.CommandLine&nbsp;cmd)</pre>
+</li>
+</ul>
+<a name="startInfoServer-org.apache.hadoop.conf.Configuration-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>startInfoServer</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.601">startInfoServer</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
+                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="getServer-int-int-int-int-int-boolean-boolean-boolean-org.apache.hadoop.hbase.thrift.ThriftMetrics-org.apache.thrift.protocol.TProtocolFactory-org.apache.thrift.TProcessor-org.apache.thrift.transport.TTransportFactory-java.net.InetSocketAddress-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getServer</h4>
+<pre>private&nbsp;org.apache.thrift.server.TServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.613">getServer</a>(int&nbsp;workerThreads,
+                                                   int&nbsp;selectorThreads,
+                                                   int&nbsp;maxCallQueueSize,
+                                                   int&nbsp;readTimeout,
+                                                   int&nbsp;backlog,
+                                                   boolean&nbsp;nonblocking,
+                                                   boolean&nbsp;hsha,
+                                                   boolean&nbsp;selector,
+                                                   <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a>&nbsp;metrics,
+                                                   org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
+                                                   org.apache.thrift.TProcessor&nbsp;processor,
+                                                   org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
+                                                   <a href="http://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>&nbsp;inetSocketAddress)
+                                            throws org.apache.thrift.transport.TTransportException</pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>org.apache.thrift.transport.TTransportException</code></dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html b/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html
index f2c3da3..feabb0e 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.77">ThriftUtilities</a>
+public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.77">ThriftUtilities</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -417,7 +417,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>deletesFromThrift</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.353">deletesFromThrift</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift2.generated.TDelete&gt;&nbsp;in)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.355">deletesFromThrift</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift2.generated.TDelete&gt;&nbsp;in)</pre>
 <div class="block">Converts multiple <code>TDelete</code>s (Thrift) into a list of <a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client"><code>Delete</code></a>s (HBase).</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -435,7 +435,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteFromHBase</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.thrift2.generated.TDelete&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.361">deleteFromHBase</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&nbsp;in)</pre>
+<pre>public static&nbsp;org.apache.hadoop.hbase.thrift2.generated.TDelete&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.363">deleteFromHBase</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&nbsp;in)</pre>
 </li>
 </ul>
 <a name="rowMutationsFromThrift-org.apache.hadoop.hbase.thrift2.generated.TRowMutations-">
@@ -444,7 +444,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>rowMutationsFromThrift</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client">RowMutations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.402">rowMutationsFromThrift</a>(org.apache.hadoop.hbase.thrift2.generated.TRowMutations&nbsp;in)
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client">RowMutations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.404">rowMutationsFromThrift</a>(org.apache.hadoop.hbase.thrift2.generated.TRowMutations&nbsp;in)
                                            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Creates a <a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client"><code>RowMutations</code></a> (HBase) from a <code>TRowMutations</code> (Thrift)</div>
 <dl>
@@ -463,7 +463,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>scanFromThrift</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.416">scanFromThrift</a>(org.apache.hadoop.hbase.thrift2.generated.TScan&nbsp;in)
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.418">scanFromThrift</a>(org.apache.hadoop.hbase.thrift2.generated.TScan&nbsp;in)
                            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -477,7 +477,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>incrementFromThrift</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Increment.html" title="class in org.apache.hadoop.hbase.client">Increment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.491">incrementFromThrift</a>(org.apache.hadoop.hbase.thrift2.generated.TIncrement&nbsp;in)
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Increment.html" title="class in org.apache.hadoop.hbase.client">Increment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.496">incrementFromThrift</a>(org.apache.hadoop.hbase.thrift2.generated.TIncrement&nbsp;in)
                                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -491,7 +491,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>appendFromThrift</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Append.html" title="class in org.apache.hadoop.hbase.client">Append</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.512">appendFromThrift</a>(org.apache.hadoop.hbase.thrift2.generated.TAppend&nbsp;append)
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Append.html" title="class in org.apache.hadoop.hbase.client">Append</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.517">appendFromThrift</a>(org.apache.hadoop.hbase.thrift2.generated.TAppend&nbsp;append)
                                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -505,7 +505,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>regionLocationFromHBase</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.thrift2.generated.THRegionLocation&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.533">regionLocationFromHBase</a>(<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;hrl)</pre>
+<pre>public static&nbsp;org.apache.hadoop.hbase.thrift2.generated.THRegionLocation&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.538">regionLocationFromHBase</a>(<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;hrl)</pre>
 </li>
 </ul>
 <a name="regionLocationsFromHBase-java.util.List-">
@@ -514,7 +514,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>regionLocationsFromHBase</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift2.generated.THRegionLocation&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.558">regionLocationsFromHBase</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt;&nbsp;locations)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.thrift2.generated.THRegionLocation&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.563">regionLocationsFromHBase</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt;&nbsp;locations)</pre>
 </li>
 </ul>
 <a name="addAttributes-org.apache.hadoop.hbase.client.OperationWithAttributes-java.util.Map-">
@@ -523,7 +523,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>addAttributes</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.569">addAttributes</a>(<a href="../../../../../org/apache/hadoop/hbase/client/OperationWithAttributes.html" title="class in org.apache.hadoop.hbase.client">OperationWithAttributes</a>&nbsp;op,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.574">addAttributes</a>(<a href="../../../../../org/apache/hadoop/hbase/client/OperationWithAttributes.html" title="class in org.apache.hadoop.hbase.client">OperationWithAttributes</a>&nbsp;op,
                                   <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;&nbsp;attributes)</pre>
 <div class="block">Adds all the attributes into the Operation object</div>
 </li>
@@ -534,7 +534,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>durabilityFromThrift</h4>
-<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.581">durabilityFromThrift</a>(org.apache.hadoop.hbase.thrift2.generated.TDurability&nbsp;tDurability)</pre>
+<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.586">durabilityFromThrift</a>(org.apache.hadoop.hbase.thrift2.generated.TDurability&nbsp;tDurability)</pre>
 </li>
 </ul>
 <a name="compareOpFromThrift-org.apache.hadoop.hbase.thrift2.generated.TCompareOp-">
@@ -543,7 +543,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>compareOpFromThrift</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase">CompareOperator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.591">compareOpFromThrift</a>(org.apache.hadoop.hbase.thrift2.generated.TCompareOp&nbsp;tCompareOp)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase">CompareOperator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.596">compareOpFromThrift</a>(org.apache.hadoop.hbase.thrift2.generated.TCompareOp&nbsp;tCompareOp)</pre>
 </li>
 </ul>
 <a name="readTypeFromThrift-org.apache.hadoop.hbase.thrift2.generated.TReadType-">
@@ -552,7 +552,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>readTypeFromThrift</h4>
-<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.604">readTypeFromThrift</a>(org.apache.hadoop.hbase.thrift2.generated.TReadType&nbsp;tReadType)</pre>
+<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#line.609">readTypeFromThrift</a>(org.apache.hadoop.hbase.thrift2.generated.TReadType&nbsp;tReadType)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/thrift2/package-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift2/package-summary.html b/devapidocs/org/apache/hadoop/hbase/thrift2/package-summary.html
index f0a0851..5cea1b7 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift2/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift2/package-summary.html
@@ -105,8 +105,8 @@ service.</div>
 <tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftServer</a></td>
 <td class="colLast">
-<div class="block">ThriftServer - this class starts up a Thrift server which implements the HBase API specified in the
- HbaseClient.thrift IDL file.</div>
+<div class="block">ThriftServer - this class starts up a Thrift server which implements the HBase API specified in
+ the HbaseClient.thrift IDL file.</div>
 </td>
 </tr>
 <tr class="altColor">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
index 34c79f0..24bd89b 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -535,14 +535,14 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Order</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLock.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLock.ReferenceType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Order</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
index a29ad5c..bfa7220 100644
--- a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -189,8 +189,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/WALFactory.Providers.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">WALFactory.Providers</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/RegionGroupingProvider.Strategies.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">RegionGroupingProvider.Strategies</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/WALFactory.Providers.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">WALFactory.Providers</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
index e12cd58..ccab400 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -16,11 +16,11 @@
 <span class="sourceLineNo">008</span>@InterfaceAudience.Private<a name="line.8"></a>
 <span class="sourceLineNo">009</span>public class Version {<a name="line.9"></a>
 <span class="sourceLineNo">010</span>  public static final String version = "3.0.0-SNAPSHOT";<a name="line.10"></a>
-<span class="sourceLineNo">011</span>  public static final String revision = "ea819d1733d94cd357177ca1070f5c80b0321d03";<a name="line.11"></a>
+<span class="sourceLineNo">011</span>  public static final String revision = "8ae2a2150b517123cde214bb5543557b562c4c01";<a name="line.11"></a>
 <span class="sourceLineNo">012</span>  public static final String user = "jenkins";<a name="line.12"></a>
-<span class="sourceLineNo">013</span>  public static final String date = "Sat Jan  6 14:41:47 UTC 2018";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Sun Jan  7 14:43:00 UTC 2018";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String url = "git://asf920.gq1.ygridcore.net/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a>
-<span class="sourceLineNo">015</span>  public static final String srcChecksum = "297ad4e2821241231a080aac1211b78c";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "8254324d460162e9c8d1041940c3ed82";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationFactory.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationFactory.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationFactory.html
index 929de17..168ce66 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationFactory.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationFactory.html
@@ -27,46 +27,48 @@
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.replication;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import org.apache.commons.lang3.reflect.ConstructorUtils;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.conf.Configuration;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.Abortable;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.Stoppable;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.26"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.conf.Configuration;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.Abortable;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.Stoppable;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.26"></a>
 <span class="sourceLineNo">027</span><a name="line.27"></a>
 <span class="sourceLineNo">028</span>/**<a name="line.28"></a>
 <span class="sourceLineNo">029</span> * A factory class for instantiating replication objects that deal with replication state.<a name="line.29"></a>
 <span class="sourceLineNo">030</span> */<a name="line.30"></a>
 <span class="sourceLineNo">031</span>@InterfaceAudience.Private<a name="line.31"></a>
-<span class="sourceLineNo">032</span>public class ReplicationFactory {<a name="line.32"></a>
-<span class="sourceLineNo">033</span><a name="line.33"></a>
-<span class="sourceLineNo">034</span>  public static ReplicationQueues getReplicationQueues(ReplicationQueuesArguments args)<a name="line.34"></a>
-<span class="sourceLineNo">035</span>      throws Exception {<a name="line.35"></a>
-<span class="sourceLineNo">036</span>    return (ReplicationQueues) ConstructorUtils.invokeConstructor(ReplicationQueuesZKImpl.class,<a name="line.36"></a>
-<span class="sourceLineNo">037</span>      args);<a name="line.37"></a>
-<span class="sourceLineNo">038</span>  }<a name="line.38"></a>
-<span class="sourceLineNo">039</span><a name="line.39"></a>
-<span class="sourceLineNo">040</span>  public static ReplicationQueuesClient<a name="line.40"></a>
-<span class="sourceLineNo">041</span>      getReplicationQueuesClient(ReplicationQueuesClientArguments args) throws Exception {<a name="line.41"></a>
-<span class="sourceLineNo">042</span>    return (ReplicationQueuesClient) ConstructorUtils<a name="line.42"></a>
-<span class="sourceLineNo">043</span>        .invokeConstructor(ReplicationQueuesClientZKImpl.class, args);<a name="line.43"></a>
-<span class="sourceLineNo">044</span>  }<a name="line.44"></a>
-<span class="sourceLineNo">045</span><a name="line.45"></a>
-<span class="sourceLineNo">046</span>  public static ReplicationPeers getReplicationPeers(final ZKWatcher zk, Configuration conf,<a name="line.46"></a>
-<span class="sourceLineNo">047</span>                                                     Abortable abortable) {<a name="line.47"></a>
-<span class="sourceLineNo">048</span>    return getReplicationPeers(zk, conf, null, abortable);<a name="line.48"></a>
-<span class="sourceLineNo">049</span>  }<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>  public static ReplicationPeers getReplicationPeers(final ZKWatcher zk, Configuration conf,<a name="line.51"></a>
-<span class="sourceLineNo">052</span>                                                     final ReplicationQueuesClient queuesClient, Abortable abortable) {<a name="line.52"></a>
-<span class="sourceLineNo">053</span>    return new ReplicationPeersZKImpl(zk, conf, queuesClient, abortable);<a name="line.53"></a>
-<span class="sourceLineNo">054</span>  }<a name="line.54"></a>
-<span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>  public static ReplicationTracker getReplicationTracker(ZKWatcher zookeeper,<a name="line.56"></a>
-<span class="sourceLineNo">057</span>      final ReplicationPeers replicationPeers, Configuration conf, Abortable abortable,<a name="line.57"></a>
-<span class="sourceLineNo">058</span>      Stoppable stopper) {<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    return new ReplicationTrackerZKImpl(zookeeper, replicationPeers, conf, abortable, stopper);<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  }<a name="line.60"></a>
-<span class="sourceLineNo">061</span>}<a name="line.61"></a>
+<span class="sourceLineNo">032</span>public final class ReplicationFactory {<a name="line.32"></a>
+<span class="sourceLineNo">033</span>  private ReplicationFactory() {<a name="line.33"></a>
+<span class="sourceLineNo">034</span>  }<a name="line.34"></a>
+<span class="sourceLineNo">035</span><a name="line.35"></a>
+<span class="sourceLineNo">036</span>  public static ReplicationQueues getReplicationQueues(ReplicationQueuesArguments args)<a name="line.36"></a>
+<span class="sourceLineNo">037</span>      throws Exception {<a name="line.37"></a>
+<span class="sourceLineNo">038</span>    return (ReplicationQueues) ConstructorUtils.invokeConstructor(ReplicationQueuesZKImpl.class,<a name="line.38"></a>
+<span class="sourceLineNo">039</span>      args);<a name="line.39"></a>
+<span class="sourceLineNo">040</span>  }<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>  public static ReplicationQueuesClient<a name="line.42"></a>
+<span class="sourceLineNo">043</span>      getReplicationQueuesClient(ReplicationQueuesClientArguments args) throws Exception {<a name="line.43"></a>
+<span class="sourceLineNo">044</span>    return (ReplicationQueuesClient) ConstructorUtils<a name="line.44"></a>
+<span class="sourceLineNo">045</span>        .invokeConstructor(ReplicationQueuesClientZKImpl.class, args);<a name="line.45"></a>
+<span class="sourceLineNo">046</span>  }<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>  public static ReplicationPeers getReplicationPeers(final ZKWatcher zk, Configuration conf,<a name="line.48"></a>
+<span class="sourceLineNo">049</span>                                                     Abortable abortable) {<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    return getReplicationPeers(zk, conf, null, abortable);<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  }<a name="line.51"></a>
+<span class="sourceLineNo">052</span><a name="line.52"></a>
+<span class="sourceLineNo">053</span>  public static ReplicationPeers getReplicationPeers(final ZKWatcher zk, Configuration conf,<a name="line.53"></a>
+<span class="sourceLineNo">054</span>      final ReplicationQueuesClient queuesClient, Abortable abortable) {<a name="line.54"></a>
+<span class="sourceLineNo">055</span>    return new ReplicationPeersZKImpl(zk, conf, queuesClient, abortable);<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  }<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>  public static ReplicationTracker getReplicationTracker(ZKWatcher zookeeper,<a name="line.58"></a>
+<span class="sourceLineNo">059</span>      final ReplicationPeers replicationPeers, Configuration conf, Abortable abortable,<a name="line.59"></a>
+<span class="sourceLineNo">060</span>      Stoppable stopper) {<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    return new ReplicationTrackerZKImpl(zookeeper, replicationPeers, conf, abortable, stopper);<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  }<a name="line.62"></a>
+<span class="sourceLineNo">063</span>}<a name="line.63"></a>
 
 
 


[23/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html
index d28593c..093754a 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html
@@ -26,56 +26,56 @@
 <span class="sourceLineNo">018</span> */<a name="line.18"></a>
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.replication;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span><a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.util.ArrayList;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.Collections;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.List;<a name="line.24"></a>
-<span class="sourceLineNo">025</span><a name="line.25"></a>
+<span class="sourceLineNo">021</span>import java.util.ArrayList;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.Collections;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.List;<a name="line.23"></a>
+<span class="sourceLineNo">024</span><a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.ServerName;<a name="line.25"></a>
 <span class="sourceLineNo">026</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.26"></a>
 <span class="sourceLineNo">027</span>import org.slf4j.Logger;<a name="line.27"></a>
 <span class="sourceLineNo">028</span>import org.slf4j.LoggerFactory;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.ServerName;<a name="line.29"></a>
-<span class="sourceLineNo">030</span><a name="line.30"></a>
-<span class="sourceLineNo">031</span>/**<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * This class is responsible for the parsing logic for a znode representing a queue.<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * It will extract the peerId if it's recovered as well as the dead region servers<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * that were part of the queue's history.<a name="line.34"></a>
-<span class="sourceLineNo">035</span> */<a name="line.35"></a>
-<span class="sourceLineNo">036</span>@InterfaceAudience.Private<a name="line.36"></a>
-<span class="sourceLineNo">037</span>public class ReplicationQueueInfo {<a name="line.37"></a>
-<span class="sourceLineNo">038</span>  private static final Logger LOG = LoggerFactory.getLogger(ReplicationQueueInfo.class);<a name="line.38"></a>
-<span class="sourceLineNo">039</span><a name="line.39"></a>
-<span class="sourceLineNo">040</span>  private final String peerId;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>  private final String peerClusterZnode;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>  private boolean queueRecovered;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>  // List of all the dead region servers that had this queue (if recovered)<a name="line.43"></a>
-<span class="sourceLineNo">044</span>  private List&lt;ServerName&gt; deadRegionServers = new ArrayList&lt;&gt;();<a name="line.44"></a>
-<span class="sourceLineNo">045</span><a name="line.45"></a>
-<span class="sourceLineNo">046</span>  /**<a name="line.46"></a>
-<span class="sourceLineNo">047</span>   * The passed znode will be either the id of the peer cluster or<a name="line.47"></a>
-<span class="sourceLineNo">048</span>   * the handling story of that queue in the form of id-servername-*<a name="line.48"></a>
-<span class="sourceLineNo">049</span>   */<a name="line.49"></a>
-<span class="sourceLineNo">050</span>  public ReplicationQueueInfo(String znode) {<a name="line.50"></a>
-<span class="sourceLineNo">051</span>    this.peerClusterZnode = znode;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>    String[] parts = znode.split("-", 2);<a name="line.52"></a>
-<span class="sourceLineNo">053</span>    this.queueRecovered = parts.length != 1;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    this.peerId = this.queueRecovered ?<a name="line.54"></a>
-<span class="sourceLineNo">055</span>        parts[0] : peerClusterZnode;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    if (parts.length &gt;= 2) {<a name="line.56"></a>
-<span class="sourceLineNo">057</span>      // extract dead servers<a name="line.57"></a>
-<span class="sourceLineNo">058</span>      extractDeadServersFromZNodeString(parts[1], this.deadRegionServers);<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    }<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  }<a name="line.60"></a>
-<span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>  /**<a name="line.62"></a>
-<span class="sourceLineNo">063</span>   * Parse dead server names from znode string servername can contain "-" such as<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   * "ip-10-46-221-101.ec2.internal", so we need skip some "-" during parsing for the following<a name="line.64"></a>
-<span class="sourceLineNo">065</span>   * cases: 2-ip-10-46-221-101.ec2.internal,52170,1364333181125-&amp;lt;server name&gt;-...<a name="line.65"></a>
-<span class="sourceLineNo">066</span>   */<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private static void<a name="line.67"></a>
-<span class="sourceLineNo">068</span>      extractDeadServersFromZNodeString(String deadServerListStr, List&lt;ServerName&gt; result) {<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>    if(deadServerListStr == null || result == null || deadServerListStr.isEmpty()) return;<a name="line.70"></a>
+<span class="sourceLineNo">029</span><a name="line.29"></a>
+<span class="sourceLineNo">030</span>/**<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * This class is responsible for the parsing logic for a znode representing a queue.<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * It will extract the peerId if it's recovered as well as the dead region servers<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * that were part of the queue's history.<a name="line.33"></a>
+<span class="sourceLineNo">034</span> */<a name="line.34"></a>
+<span class="sourceLineNo">035</span>@InterfaceAudience.Private<a name="line.35"></a>
+<span class="sourceLineNo">036</span>public class ReplicationQueueInfo {<a name="line.36"></a>
+<span class="sourceLineNo">037</span>  private static final Logger LOG = LoggerFactory.getLogger(ReplicationQueueInfo.class);<a name="line.37"></a>
+<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">039</span>  private final String peerId;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>  private final String peerClusterZnode;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  private boolean queueRecovered;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  // List of all the dead region servers that had this queue (if recovered)<a name="line.42"></a>
+<span class="sourceLineNo">043</span>  private List&lt;ServerName&gt; deadRegionServers = new ArrayList&lt;&gt;();<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>  /**<a name="line.45"></a>
+<span class="sourceLineNo">046</span>   * The passed znode will be either the id of the peer cluster or<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   * the handling story of that queue in the form of id-servername-*<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   */<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  public ReplicationQueueInfo(String znode) {<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    this.peerClusterZnode = znode;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>    String[] parts = znode.split("-", 2);<a name="line.51"></a>
+<span class="sourceLineNo">052</span>    this.queueRecovered = parts.length != 1;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    this.peerId = this.queueRecovered ?<a name="line.53"></a>
+<span class="sourceLineNo">054</span>        parts[0] : peerClusterZnode;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>    if (parts.length &gt;= 2) {<a name="line.55"></a>
+<span class="sourceLineNo">056</span>      // extract dead servers<a name="line.56"></a>
+<span class="sourceLineNo">057</span>      extractDeadServersFromZNodeString(parts[1], this.deadRegionServers);<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    }<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  }<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  /**<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   * Parse dead server names from znode string servername can contain "-" such as<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   * "ip-10-46-221-101.ec2.internal", so we need skip some "-" during parsing for the following<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   * cases: 2-ip-10-46-221-101.ec2.internal,52170,1364333181125-&amp;lt;server name&gt;-...<a name="line.64"></a>
+<span class="sourceLineNo">065</span>   */<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  private static void<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      extractDeadServersFromZNodeString(String deadServerListStr, List&lt;ServerName&gt; result) {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    if(deadServerListStr == null || result == null || deadServerListStr.isEmpty()) {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      return;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    }<a name="line.70"></a>
 <span class="sourceLineNo">071</span><a name="line.71"></a>
 <span class="sourceLineNo">072</span>    // valid server name delimiter "-" has to be after "," in a server name<a name="line.72"></a>
 <span class="sourceLineNo">073</span>    int seenCommaCnt = 0;<a name="line.73"></a>
@@ -84,25 +84,25 @@
 <span class="sourceLineNo">076</span><a name="line.76"></a>
 <span class="sourceLineNo">077</span>    for (int i = 0; i &lt; len; i++) {<a name="line.77"></a>
 <span class="sourceLineNo">078</span>      switch (deadServerListStr.charAt(i)) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>      case ',':<a name="line.79"></a>
-<span class="sourceLineNo">080</span>        seenCommaCnt += 1;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>        break;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      case '-':<a name="line.82"></a>
-<span class="sourceLineNo">083</span>        if(seenCommaCnt&gt;=2) {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>          if (i &gt; startIndex) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>            String serverName = deadServerListStr.substring(startIndex, i);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>            if(ServerName.isFullServerName(serverName)){<a name="line.86"></a>
-<span class="sourceLineNo">087</span>              result.add(ServerName.valueOf(serverName));<a name="line.87"></a>
-<span class="sourceLineNo">088</span>            } else {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>              LOG.error("Found invalid server name:" + serverName);<a name="line.89"></a>
-<span class="sourceLineNo">090</span>            }<a name="line.90"></a>
-<span class="sourceLineNo">091</span>            startIndex = i + 1;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>          }<a name="line.92"></a>
-<span class="sourceLineNo">093</span>          seenCommaCnt = 0;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        }<a name="line.94"></a>
-<span class="sourceLineNo">095</span>        break;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      default:<a name="line.96"></a>
-<span class="sourceLineNo">097</span>        break;<a name="line.97"></a>
+<span class="sourceLineNo">079</span>        case ',':<a name="line.79"></a>
+<span class="sourceLineNo">080</span>          seenCommaCnt += 1;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>          break;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>        case '-':<a name="line.82"></a>
+<span class="sourceLineNo">083</span>          if(seenCommaCnt&gt;=2) {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>            if (i &gt; startIndex) {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>              String serverName = deadServerListStr.substring(startIndex, i);<a name="line.85"></a>
+<span class="sourceLineNo">086</span>              if(ServerName.isFullServerName(serverName)){<a name="line.86"></a>
+<span class="sourceLineNo">087</span>                result.add(ServerName.valueOf(serverName));<a name="line.87"></a>
+<span class="sourceLineNo">088</span>              } else {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>                LOG.error("Found invalid server name:" + serverName);<a name="line.89"></a>
+<span class="sourceLineNo">090</span>              }<a name="line.90"></a>
+<span class="sourceLineNo">091</span>              startIndex = i + 1;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>            }<a name="line.92"></a>
+<span class="sourceLineNo">093</span>            seenCommaCnt = 0;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>          }<a name="line.94"></a>
+<span class="sourceLineNo">095</span>          break;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>        default:<a name="line.96"></a>
+<span class="sourceLineNo">097</span>          break;<a name="line.97"></a>
 <span class="sourceLineNo">098</span>      }<a name="line.98"></a>
 <span class="sourceLineNo">099</span>    }<a name="line.99"></a>
 <span class="sourceLineNo">100</span><a name="line.100"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html
index c8faa17..9e2acc3 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueues.html
@@ -30,8 +30,8 @@
 <span class="sourceLineNo">022</span>import java.util.SortedSet;<a name="line.22"></a>
 <span class="sourceLineNo">023</span><a name="line.23"></a>
 <span class="sourceLineNo">024</span>import org.apache.hadoop.fs.Path;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.26"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.26"></a>
 <span class="sourceLineNo">027</span><a name="line.27"></a>
 <span class="sourceLineNo">028</span>/**<a name="line.28"></a>
 <span class="sourceLineNo">029</span> * This provides an interface for maintaining a region server's replication queues. These queues<a name="line.29"></a>
@@ -98,74 +98,75 @@
 <span class="sourceLineNo">090</span><a name="line.90"></a>
 <span class="sourceLineNo">091</span>  /**<a name="line.91"></a>
 <span class="sourceLineNo">092</span>   * Get a list of all queues for this region server.<a name="line.92"></a>
-<span class="sourceLineNo">093</span>   * @return a list of queueIds, an empty list if this region server is dead and has no outstanding queues<a name="line.93"></a>
-<span class="sourceLineNo">094</span>   */<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  List&lt;String&gt; getAllQueues();<a name="line.95"></a>
-<span class="sourceLineNo">096</span><a name="line.96"></a>
-<span class="sourceLineNo">097</span>  /**<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   * Get queueIds from a dead region server, whose queues has not been claimed by other region<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * servers.<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * @return empty if the queue exists but no children, null if the queue does not exist.<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  */<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  List&lt;String&gt; getUnClaimedQueueIds(String regionserver);<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  /**<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * Take ownership for the queue identified by queueId and belongs to a dead region server.<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   * @param regionserver the id of the dead region server<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   * @param queueId the id of the queue<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   * @return the new PeerId and A SortedSet of WALs in its queue, and null if no unclaimed queue.<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   */<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  Pair&lt;String, SortedSet&lt;String&gt;&gt; claimQueue(String regionserver, String queueId);<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>  /**<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * Remove the znode of region server if the queue is empty.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * @param regionserver<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  void removeReplicatorIfQueueIsEmpty(String regionserver);<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  /**<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   * Get a list of all region servers that have outstanding replication queues. These servers could<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * be alive, dead or from a previous run of the cluster.<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   * @return a list of server names<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   */<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  List&lt;String&gt; getListOfReplicators();<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>  /**<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * Checks if the provided znode is the same as this region server's<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * @param regionserver the id of the region server<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   * @return if this is this rs's znode<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   */<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  boolean isThisOurRegionServer(String regionserver);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  /**<a name="line.132"></a>
-<span class="sourceLineNo">133</span>   * Add a peer to hfile reference queue if peer does not exist.<a name="line.133"></a>
-<span class="sourceLineNo">134</span>   * @param peerId peer cluster id to be added<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   * @throws ReplicationException if fails to add a peer id to hfile reference queue<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   */<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  void addPeerToHFileRefs(String peerId) throws ReplicationException;<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  /**<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   * Remove a peer from hfile reference queue.<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * @param peerId peer cluster id to be removed<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   */<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  void removePeerFromHFileRefs(String peerId);<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>  /**<a name="line.145"></a>
-<span class="sourceLineNo">146</span>   * Add new hfile references to the queue.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * @param peerId peer cluster id to which the hfiles need to be replicated<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * @param pairs list of pairs of { HFile location in staging dir, HFile path in region dir which<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   *          will be added in the queue }<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * @throws ReplicationException if fails to add a hfile reference<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   */<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  void addHFileRefs(String peerId, List&lt;Pair&lt;Path, Path&gt;&gt; pairs) throws ReplicationException;<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>  /**<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   * Remove hfile references from the queue.<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   * @param peerId peer cluster id from which this hfile references needs to be removed<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * @param files list of hfile references to be removed<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   */<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  void removeHFileRefs(String peerId, List&lt;String&gt; files);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>}<a name="line.160"></a>
+<span class="sourceLineNo">093</span>   * @return a list of queueIds, an empty list if this region server is dead and has no outstanding<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   *         queues<a name="line.94"></a>
+<span class="sourceLineNo">095</span>   */<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  List&lt;String&gt; getAllQueues();<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>  /**<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   * Get queueIds from a dead region server, whose queues has not been claimed by other region<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * servers.<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * @return empty if the queue exists but no children, null if the queue does not exist.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  */<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  List&lt;String&gt; getUnClaimedQueueIds(String regionserver);<a name="line.103"></a>
+<span class="sourceLineNo">104</span><a name="line.104"></a>
+<span class="sourceLineNo">105</span>  /**<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * Take ownership for the queue identified by queueId and belongs to a dead region server.<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @param regionserver the id of the dead region server<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @param queueId the id of the queue<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   * @return the new PeerId and A SortedSet of WALs in its queue, and null if no unclaimed queue.<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   */<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  Pair&lt;String, SortedSet&lt;String&gt;&gt; claimQueue(String regionserver, String queueId);<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  /**<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * Remove the znode of region server if the queue is empty.<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   * @param regionserver the id of the region server<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   */<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  void removeReplicatorIfQueueIsEmpty(String regionserver);<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span>  /**<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   * Get a list of all region servers that have outstanding replication queues. These servers could<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   * be alive, dead or from a previous run of the cluster.<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * @return a list of server names<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   */<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  List&lt;String&gt; getListOfReplicators();<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>  /**<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   * Checks if the provided znode is the same as this region server's<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   * @param regionserver the id of the region server<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   * @return if this is this rs's znode<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   */<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  boolean isThisOurRegionServer(String regionserver);<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  /**<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   * Add a peer to hfile reference queue if peer does not exist.<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   * @param peerId peer cluster id to be added<a name="line.135"></a>
+<span class="sourceLineNo">136</span>   * @throws ReplicationException if fails to add a peer id to hfile reference queue<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   */<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  void addPeerToHFileRefs(String peerId) throws ReplicationException;<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  /**<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   * Remove a peer from hfile reference queue.<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   * @param peerId peer cluster id to be removed<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   */<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  void removePeerFromHFileRefs(String peerId);<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  /**<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * Add new hfile references to the queue.<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * @param peerId peer cluster id to which the hfiles need to be replicated<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * @param pairs list of pairs of { HFile location in staging dir, HFile path in region dir which<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   *          will be added in the queue }<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * @throws ReplicationException if fails to add a hfile reference<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  void addHFileRefs(String peerId, List&lt;Pair&lt;Path, Path&gt;&gt; pairs) throws ReplicationException;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  /**<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   * Remove hfile references from the queue.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   * @param peerId peer cluster id from which this hfile references needs to be removed<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   * @param files list of hfile references to be removed<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   */<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  void removeHFileRefs(String peerId, List&lt;String&gt; files);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>}<a name="line.161"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClient.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClient.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClient.html
index 9f578c8..0ba9d55 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClient.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClient.html
@@ -75,7 +75,7 @@
 <span class="sourceLineNo">067</span>   * is concurrent queue failover. However, some newly created WALs during the call may<a name="line.67"></a>
 <span class="sourceLineNo">068</span>   * not be included.<a name="line.68"></a>
 <span class="sourceLineNo">069</span>   */<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   Set&lt;String&gt; getAllWALs() throws KeeperException;<a name="line.70"></a>
+<span class="sourceLineNo">070</span>  Set&lt;String&gt; getAllWALs() throws KeeperException;<a name="line.70"></a>
 <span class="sourceLineNo">071</span><a name="line.71"></a>
 <span class="sourceLineNo">072</span>  /**<a name="line.72"></a>
 <span class="sourceLineNo">073</span>   * Get the change version number of replication hfile references node. This can be used as<a name="line.73"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html
index 74fb4be..9f31bb0 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.html
@@ -31,157 +31,158 @@
 <span class="sourceLineNo">023</span><a name="line.23"></a>
 <span class="sourceLineNo">024</span>import org.apache.hadoop.conf.Configuration;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.Abortable;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hbase.thirdparty.com.google.common.collect.Sets;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.zookeeper.KeeperException;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.zookeeper.data.Stat;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.slf4j.Logger;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.slf4j.LoggerFactory;<a name="line.35"></a>
-<span class="sourceLineNo">036</span><a name="line.36"></a>
-<span class="sourceLineNo">037</span>@InterfaceAudience.Private<a name="line.37"></a>
-<span class="sourceLineNo">038</span>public class ReplicationQueuesClientZKImpl extends ReplicationStateZKBase implements<a name="line.38"></a>
-<span class="sourceLineNo">039</span>    ReplicationQueuesClient {<a name="line.39"></a>
-<span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>  Logger LOG = LoggerFactory.getLogger(ReplicationQueuesClientZKImpl.class);<a name="line.41"></a>
-<span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>  public ReplicationQueuesClientZKImpl(ReplicationQueuesClientArguments args) {<a name="line.43"></a>
-<span class="sourceLineNo">044</span>    this(args.getZk(), args.getConf(), args.getAbortable());<a name="line.44"></a>
-<span class="sourceLineNo">045</span>  }<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>  public ReplicationQueuesClientZKImpl(final ZKWatcher zk, Configuration conf,<a name="line.47"></a>
-<span class="sourceLineNo">048</span>                                       Abortable abortable) {<a name="line.48"></a>
-<span class="sourceLineNo">049</span>    super(zk, conf, abortable);<a name="line.49"></a>
-<span class="sourceLineNo">050</span>  }<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>  @Override<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  public void init() throws ReplicationException {<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    try {<a name="line.54"></a>
-<span class="sourceLineNo">055</span>      if (ZKUtil.checkExists(this.zookeeper, this.queuesZNode) &lt; 0) {<a name="line.55"></a>
-<span class="sourceLineNo">056</span>        ZKUtil.createWithParents(this.zookeeper, this.queuesZNode);<a name="line.56"></a>
-<span class="sourceLineNo">057</span>      }<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    } catch (KeeperException e) {<a name="line.58"></a>
-<span class="sourceLineNo">059</span>      throw new ReplicationException("Internal error while initializing a queues client", e);<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    }<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  }<a name="line.61"></a>
-<span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span>  @Override<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  public List&lt;String&gt; getLogsInQueue(String serverName, String queueId) throws KeeperException {<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    String znode = ZNodePaths.joinZNode(this.queuesZNode, serverName);<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    znode = ZNodePaths.joinZNode(znode, queueId);<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    List&lt;String&gt; result = null;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    try {<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      result = ZKUtil.listChildrenNoWatch(this.zookeeper, znode);<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    } catch (KeeperException e) {<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      this.abortable.abort("Failed to get list of wals for queueId=" + queueId<a name="line.71"></a>
-<span class="sourceLineNo">072</span>          + " and serverName=" + serverName, e);<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      throw e;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    }<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    return result;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  }<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  @Override<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  public List&lt;String&gt; getAllQueues(String serverName) throws KeeperException {<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    String znode = ZNodePaths.joinZNode(this.queuesZNode, serverName);<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    List&lt;String&gt; result = null;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    try {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      result = ZKUtil.listChildrenNoWatch(this.zookeeper, znode);<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    } catch (KeeperException e) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      this.abortable.abort("Failed to get list of queues for serverName=" + serverName, e);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      throw e;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    }<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    return result;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  }<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>  @Override<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  public Set&lt;String&gt; getAllWALs() throws KeeperException {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    /**<a name="line.93"></a>
-<span class="sourceLineNo">094</span>     * Load all wals in all replication queues from ZK. This method guarantees to return a<a name="line.94"></a>
-<span class="sourceLineNo">095</span>     * snapshot which contains all WALs in the zookeeper at the start of this call even there<a name="line.95"></a>
-<span class="sourceLineNo">096</span>     * is concurrent queue failover. However, some newly created WALs during the call may<a name="line.96"></a>
-<span class="sourceLineNo">097</span>     * not be included.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>     */<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    for (int retry = 0; ; retry++) {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      int v0 = getQueuesZNodeCversion();<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      List&lt;String&gt; rss = getListOfReplicators();<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      if (rss == null || rss.isEmpty()) {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>        LOG.debug("Didn't find any region server that replicates, won't prevent any deletions.");<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        return ImmutableSet.of();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      }<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      Set&lt;String&gt; wals = Sets.newHashSet();<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      for (String rs : rss) {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>        List&lt;String&gt; listOfPeers = getAllQueues(rs);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        // if rs just died, this will be null<a name="line.109"></a>
-<span class="sourceLineNo">110</span>        if (listOfPeers == null) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>          continue;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>        }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>        for (String id : listOfPeers) {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>          List&lt;String&gt; peersWals = getLogsInQueue(rs, id);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>          if (peersWals != null) {<a name="line.115"></a>
-<span class="sourceLineNo">116</span>            wals.addAll(peersWals);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>          }<a name="line.117"></a>
-<span class="sourceLineNo">118</span>        }<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      }<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      int v1 = getQueuesZNodeCversion();<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      if (v0 == v1) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>        return wals;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      LOG.info(String.format("Replication queue node cversion changed from %d to %d, retry = %d",<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        v0, v1, retry));<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>  public int getQueuesZNodeCversion() throws KeeperException {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    try {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      Stat stat = new Stat();<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      ZKUtil.getDataNoWatch(this.zookeeper, this.queuesZNode, stat);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      return stat.getCversion();<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    } catch (KeeperException e) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      this.abortable.abort("Failed to get stat of replication rs node", e);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      throw e;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    }<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span>  @Override<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  public int getHFileRefsNodeChangeVersion() throws KeeperException {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    Stat stat = new Stat();<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    try {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      ZKUtil.getDataNoWatch(this.zookeeper, this.hfileRefsZNode, stat);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    } catch (KeeperException e) {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      this.abortable.abort("Failed to get stat of replication hfile references node.", e);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      throw e;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    return stat.getCversion();<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>  @Override<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public List&lt;String&gt; getAllPeersFromHFileRefsQueue() throws KeeperException {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    List&lt;String&gt; result = null;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    try {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      result = ZKUtil.listChildrenNoWatch(this.zookeeper, this.hfileRefsZNode);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    } catch (KeeperException e) {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      this.abortable.abort("Failed to get list of all peers in hfile references node.", e);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      throw e;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    return result;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  @Override<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  public List&lt;String&gt; getReplicableHFiles(String peerId) throws KeeperException {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    String znode = ZNodePaths.joinZNode(this.hfileRefsZNode, peerId);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    List&lt;String&gt; result = null;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    try {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      result = ZKUtil.listChildrenNoWatch(this.zookeeper, znode);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    } catch (KeeperException e) {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      this.abortable.abort("Failed to get list of hfile references for peerId=" + peerId, e);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      throw e;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    }<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    return result;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  }<a name="line.175"></a>
-<span class="sourceLineNo">176</span>}<a name="line.176"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.zookeeper.KeeperException;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.zookeeper.data.Stat;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.slf4j.Logger;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.slf4j.LoggerFactory;<a name="line.33"></a>
+<span class="sourceLineNo">034</span><a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hbase.thirdparty.com.google.common.collect.Sets;<a name="line.36"></a>
+<span class="sourceLineNo">037</span><a name="line.37"></a>
+<span class="sourceLineNo">038</span>@InterfaceAudience.Private<a name="line.38"></a>
+<span class="sourceLineNo">039</span>public class ReplicationQueuesClientZKImpl extends ReplicationStateZKBase implements<a name="line.39"></a>
+<span class="sourceLineNo">040</span>    ReplicationQueuesClient {<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>  Logger LOG = LoggerFactory.getLogger(ReplicationQueuesClientZKImpl.class);<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>  public ReplicationQueuesClientZKImpl(ReplicationQueuesClientArguments args) {<a name="line.44"></a>
+<span class="sourceLineNo">045</span>    this(args.getZk(), args.getConf(), args.getAbortable());<a name="line.45"></a>
+<span class="sourceLineNo">046</span>  }<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>  public ReplicationQueuesClientZKImpl(final ZKWatcher zk, Configuration conf,<a name="line.48"></a>
+<span class="sourceLineNo">049</span>                                       Abortable abortable) {<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    super(zk, conf, abortable);<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  }<a name="line.51"></a>
+<span class="sourceLineNo">052</span><a name="line.52"></a>
+<span class="sourceLineNo">053</span>  @Override<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  public void init() throws ReplicationException {<a name="line.54"></a>
+<span class="sourceLineNo">055</span>    try {<a name="line.55"></a>
+<span class="sourceLineNo">056</span>      if (ZKUtil.checkExists(this.zookeeper, this.queuesZNode) &lt; 0) {<a name="line.56"></a>
+<span class="sourceLineNo">057</span>        ZKUtil.createWithParents(this.zookeeper, this.queuesZNode);<a name="line.57"></a>
+<span class="sourceLineNo">058</span>      }<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    } catch (KeeperException e) {<a name="line.59"></a>
+<span class="sourceLineNo">060</span>      throw new ReplicationException("Internal error while initializing a queues client", e);<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    }<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  }<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  @Override<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  public List&lt;String&gt; getLogsInQueue(String serverName, String queueId) throws KeeperException {<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    String znode = ZNodePaths.joinZNode(this.queuesZNode, serverName);<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    znode = ZNodePaths.joinZNode(znode, queueId);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    List&lt;String&gt; result = null;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    try {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      result = ZKUtil.listChildrenNoWatch(this.zookeeper, znode);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    } catch (KeeperException e) {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      this.abortable.abort("Failed to get list of wals for queueId=" + queueId<a name="line.72"></a>
+<span class="sourceLineNo">073</span>          + " and serverName=" + serverName, e);<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      throw e;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    }<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    return result;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  }<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>  @Override<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  public List&lt;String&gt; getAllQueues(String serverName) throws KeeperException {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    String znode = ZNodePaths.joinZNode(this.queuesZNode, serverName);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    List&lt;String&gt; result = null;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    try {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      result = ZKUtil.listChildrenNoWatch(this.zookeeper, znode);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    } catch (KeeperException e) {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      this.abortable.abort("Failed to get list of queues for serverName=" + serverName, e);<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      throw e;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    }<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    return result;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  }<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>  @Override<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  public Set&lt;String&gt; getAllWALs() throws KeeperException {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    /**<a name="line.94"></a>
+<span class="sourceLineNo">095</span>     * Load all wals in all replication queues from ZK. This method guarantees to return a<a name="line.95"></a>
+<span class="sourceLineNo">096</span>     * snapshot which contains all WALs in the zookeeper at the start of this call even there<a name="line.96"></a>
+<span class="sourceLineNo">097</span>     * is concurrent queue failover. However, some newly created WALs during the call may<a name="line.97"></a>
+<span class="sourceLineNo">098</span>     * not be included.<a name="line.98"></a>
+<span class="sourceLineNo">099</span>     */<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    for (int retry = 0; ; retry++) {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      int v0 = getQueuesZNodeCversion();<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      List&lt;String&gt; rss = getListOfReplicators();<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      if (rss == null || rss.isEmpty()) {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>        LOG.debug("Didn't find any region server that replicates, won't prevent any deletions.");<a name="line.104"></a>
+<span class="sourceLineNo">105</span>        return ImmutableSet.of();<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      }<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      Set&lt;String&gt; wals = Sets.newHashSet();<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      for (String rs : rss) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>        List&lt;String&gt; listOfPeers = getAllQueues(rs);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        // if rs just died, this will be null<a name="line.110"></a>
+<span class="sourceLineNo">111</span>        if (listOfPeers == null) {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>          continue;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        }<a name="line.113"></a>
+<span class="sourceLineNo">114</span>        for (String id : listOfPeers) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>          List&lt;String&gt; peersWals = getLogsInQueue(rs, id);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>          if (peersWals != null) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>            wals.addAll(peersWals);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>          }<a name="line.118"></a>
+<span class="sourceLineNo">119</span>        }<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      }<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      int v1 = getQueuesZNodeCversion();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      if (v0 == v1) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        return wals;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      }<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      LOG.info(String.format("Replication queue node cversion changed from %d to %d, retry = %d",<a name="line.125"></a>
+<span class="sourceLineNo">126</span>        v0, v1, retry));<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    }<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  }<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>  public int getQueuesZNodeCversion() throws KeeperException {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    try {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      Stat stat = new Stat();<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      ZKUtil.getDataNoWatch(this.zookeeper, this.queuesZNode, stat);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      return stat.getCversion();<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    } catch (KeeperException e) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      this.abortable.abort("Failed to get stat of replication rs node", e);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      throw e;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    }<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  }<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>  @Override<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  public int getHFileRefsNodeChangeVersion() throws KeeperException {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    Stat stat = new Stat();<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    try {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      ZKUtil.getDataNoWatch(this.zookeeper, this.hfileRefsZNode, stat);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    } catch (KeeperException e) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      this.abortable.abort("Failed to get stat of replication hfile references node.", e);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      throw e;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    }<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    return stat.getCversion();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  }<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>  @Override<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  public List&lt;String&gt; getAllPeersFromHFileRefsQueue() throws KeeperException {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    List&lt;String&gt; result = null;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    try {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      result = ZKUtil.listChildrenNoWatch(this.zookeeper, this.hfileRefsZNode);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    } catch (KeeperException e) {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      this.abortable.abort("Failed to get list of all peers in hfile references node.", e);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      throw e;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    }<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    return result;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  @Override<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  public List&lt;String&gt; getReplicableHFiles(String peerId) throws KeeperException {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    String znode = ZNodePaths.joinZNode(this.hfileRefsZNode, peerId);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    List&lt;String&gt; result = null;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    try {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      result = ZKUtil.listChildrenNoWatch(this.zookeeper, znode);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    } catch (KeeperException e) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      this.abortable.abort("Failed to get list of hfile references for peerId=" + peerId, e);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      throw e;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    }<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    return result;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  }<a name="line.176"></a>
+<span class="sourceLineNo">177</span>}<a name="line.177"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.html
index c15b9ae..0ab5986 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.html
@@ -310,109 +310,110 @@
 <span class="sourceLineNo">302</span>        // add delete op for peer<a name="line.302"></a>
 <span class="sourceLineNo">303</span>        listOfOps.add(ZKUtilOp.deleteNodeFailSilent(oldClusterZnode));<a name="line.303"></a>
 <span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>        if (LOG.isTraceEnabled())<a name="line.305"></a>
+<span class="sourceLineNo">305</span>        if (LOG.isTraceEnabled()) {<a name="line.305"></a>
 <span class="sourceLineNo">306</span>          LOG.trace(" The multi list size is: " + listOfOps.size());<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      ZKUtil.multiOrSequential(this.zookeeper, listOfOps, false);<a name="line.308"></a>
-<span class="sourceLineNo">309</span><a name="line.309"></a>
-<span class="sourceLineNo">310</span>      LOG.info("Atomically moved " + znode + "/" + peerId + "'s WALs to my queue");<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      return new Pair&lt;&gt;(newPeerId, logQueue);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    } catch (KeeperException e) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      // Multi call failed; it looks like some other regionserver took away the logs.<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      LOG.warn("Got exception in copyQueuesFromRSUsingMulti: ", e);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    } catch (InterruptedException e) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      LOG.warn("Got exception in copyQueuesFromRSUsingMulti: ", e);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      Thread.currentThread().interrupt();<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    return null;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>  @Override<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  public void addHFileRefs(String peerId, List&lt;Pair&lt;Path, Path&gt;&gt; pairs)<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      throws ReplicationException {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    String peerZnode = ZNodePaths.joinZNode(this.hfileRefsZNode, peerId);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    boolean debugEnabled = LOG.isDebugEnabled();<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    if (debugEnabled) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      LOG.debug("Adding hfile references " + pairs + " in queue " + peerZnode);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    }<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>    int size = pairs.size();<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    List&lt;ZKUtilOp&gt; listOfOps = new ArrayList&lt;&gt;(size);<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>    for (int i = 0; i &lt; size; i++) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      listOfOps.add(ZKUtilOp.createAndFailSilent(<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        ZNodePaths.joinZNode(peerZnode, pairs.get(i).getSecond().getName()),<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        HConstants.EMPTY_BYTE_ARRAY));<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    if (debugEnabled) {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      LOG.debug(" The multi list size for adding hfile references in zk for node " + peerZnode<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          + " is " + listOfOps.size());<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    }<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    try {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      ZKUtil.multiOrSequential(this.zookeeper, listOfOps, true);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    } catch (KeeperException e) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      throw new ReplicationException("Failed to create hfile reference znode=" + e.getPath(), e);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>  @Override<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  public void removeHFileRefs(String peerId, List&lt;String&gt; files) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    String peerZnode = ZNodePaths.joinZNode(this.hfileRefsZNode, peerId);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    boolean debugEnabled = LOG.isDebugEnabled();<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    if (debugEnabled) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      LOG.debug("Removing hfile references " + files + " from queue " + peerZnode);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    }<a name="line.356"></a>
-<span class="sourceLineNo">357</span><a name="line.357"></a>
-<span class="sourceLineNo">358</span>    int size = files.size();<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    List&lt;ZKUtilOp&gt; listOfOps = new ArrayList&lt;&gt;(size);<a name="line.359"></a>
-<span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>    for (int i = 0; i &lt; size; i++) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      listOfOps.add(ZKUtilOp.deleteNodeFailSilent(ZNodePaths.joinZNode(peerZnode, files.get(i))));<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    }<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    if (debugEnabled) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      LOG.debug(" The multi list size for removing hfile references in zk for node " + peerZnode<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          + " is " + listOfOps.size());<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    }<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    try {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      ZKUtil.multiOrSequential(this.zookeeper, listOfOps, true);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    } catch (KeeperException e) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      LOG.error("Failed to remove hfile reference znode=" + e.getPath(), e);<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    }<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  }<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>  @Override<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  public void addPeerToHFileRefs(String peerId) throws ReplicationException {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    String peerZnode = ZNodePaths.joinZNode(this.hfileRefsZNode, peerId);<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    try {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      if (ZKUtil.checkExists(this.zookeeper, peerZnode) == -1) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        LOG.info("Adding peer " + peerId + " to hfile reference queue.");<a name="line.380"></a>
-<span class="sourceLineNo">381</span>        ZKUtil.createWithParents(this.zookeeper, peerZnode);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      }<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    } catch (KeeperException e) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      throw new ReplicationException("Failed to add peer " + peerId + " to hfile reference queue.",<a name="line.384"></a>
-<span class="sourceLineNo">385</span>          e);<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    }<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  }<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span>  @Override<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  public void removePeerFromHFileRefs(String peerId) {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    final String peerZnode = ZNodePaths.joinZNode(this.hfileRefsZNode, peerId);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    try {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      if (ZKUtil.checkExists(this.zookeeper, peerZnode) == -1) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        if (LOG.isDebugEnabled()) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>          LOG.debug("Peer " + peerZnode + " not found in hfile reference queue.");<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        return;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      } else {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        LOG.info("Removing peer " + peerZnode + " from hfile reference queue.");<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        ZKUtil.deleteNodeRecursively(this.zookeeper, peerZnode);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    } catch (KeeperException e) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      LOG.error("Ignoring the exception to remove peer " + peerId + " from hfile reference queue.",<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        e);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    }<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
-<span class="sourceLineNo">407</span>}<a name="line.407"></a>
+<span class="sourceLineNo">307</span>        }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      }<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      ZKUtil.multiOrSequential(this.zookeeper, listOfOps, false);<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>      LOG.info("Atomically moved " + znode + "/" + peerId + "'s WALs to my queue");<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      return new Pair&lt;&gt;(newPeerId, logQueue);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    } catch (KeeperException e) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      // Multi call failed; it looks like some other regionserver took away the logs.<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      LOG.warn("Got exception in copyQueuesFromRSUsingMulti: ", e);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    } catch (InterruptedException e) {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      LOG.warn("Got exception in copyQueuesFromRSUsingMulti: ", e);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      Thread.currentThread().interrupt();<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    return null;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>  @Override<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  public void addHFileRefs(String peerId, List&lt;Pair&lt;Path, Path&gt;&gt; pairs)<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      throws ReplicationException {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    String peerZnode = ZNodePaths.joinZNode(this.hfileRefsZNode, peerId);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    boolean debugEnabled = LOG.isDebugEnabled();<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    if (debugEnabled) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      LOG.debug("Adding hfile references " + pairs + " in queue " + peerZnode);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>    int size = pairs.size();<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    List&lt;ZKUtilOp&gt; listOfOps = new ArrayList&lt;&gt;(size);<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>    for (int i = 0; i &lt; size; i++) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      listOfOps.add(ZKUtilOp.createAndFailSilent(<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        ZNodePaths.joinZNode(peerZnode, pairs.get(i).getSecond().getName()),<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        HConstants.EMPTY_BYTE_ARRAY));<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    }<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    if (debugEnabled) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      LOG.debug(" The multi list size for adding hfile references in zk for node " + peerZnode<a name="line.341"></a>
+<span class="sourceLineNo">342</span>          + " is " + listOfOps.size());<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    try {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      ZKUtil.multiOrSequential(this.zookeeper, listOfOps, true);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    } catch (KeeperException e) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      throw new ReplicationException("Failed to create hfile reference znode=" + e.getPath(), e);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  }<a name="line.349"></a>
+<span class="sourceLineNo">350</span><a name="line.350"></a>
+<span class="sourceLineNo">351</span>  @Override<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  public void removeHFileRefs(String peerId, List&lt;String&gt; files) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    String peerZnode = ZNodePaths.joinZNode(this.hfileRefsZNode, peerId);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    boolean debugEnabled = LOG.isDebugEnabled();<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    if (debugEnabled) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      LOG.debug("Removing hfile references " + files + " from queue " + peerZnode);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    }<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>    int size = files.size();<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    List&lt;ZKUtilOp&gt; listOfOps = new ArrayList&lt;&gt;(size);<a name="line.360"></a>
+<span class="sourceLineNo">361</span><a name="line.361"></a>
+<span class="sourceLineNo">362</span>    for (int i = 0; i &lt; size; i++) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      listOfOps.add(ZKUtilOp.deleteNodeFailSilent(ZNodePaths.joinZNode(peerZnode, files.get(i))));<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    if (debugEnabled) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      LOG.debug(" The multi list size for removing hfile references in zk for node " + peerZnode<a name="line.366"></a>
+<span class="sourceLineNo">367</span>          + " is " + listOfOps.size());<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    try {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      ZKUtil.multiOrSequential(this.zookeeper, listOfOps, true);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    } catch (KeeperException e) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      LOG.error("Failed to remove hfile reference znode=" + e.getPath(), e);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    }<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  }<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>  @Override<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  public void addPeerToHFileRefs(String peerId) throws ReplicationException {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    String peerZnode = ZNodePaths.joinZNode(this.hfileRefsZNode, peerId);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    try {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      if (ZKUtil.checkExists(this.zookeeper, peerZnode) == -1) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>        LOG.info("Adding peer " + peerId + " to hfile reference queue.");<a name="line.381"></a>
+<span class="sourceLineNo">382</span>        ZKUtil.createWithParents(this.zookeeper, peerZnode);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      }<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    } catch (KeeperException e) {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      throw new ReplicationException("Failed to add peer " + peerId + " to hfile reference queue.",<a name="line.385"></a>
+<span class="sourceLineNo">386</span>          e);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    }<a name="line.387"></a>
+<span class="sourceLineNo">388</span>  }<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span>  @Override<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  public void removePeerFromHFileRefs(String peerId) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    final String peerZnode = ZNodePaths.joinZNode(this.hfileRefsZNode, peerId);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    try {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      if (ZKUtil.checkExists(this.zookeeper, peerZnode) == -1) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        if (LOG.isDebugEnabled()) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>          LOG.debug("Peer " + peerZnode + " not found in hfile reference queue.");<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>        return;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      } else {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        LOG.info("Removing peer " + peerZnode + " from hfile reference queue.");<a name="line.400"></a>
+<span class="sourceLineNo">401</span>        ZKUtil.deleteNodeRecursively(this.zookeeper, peerZnode);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      }<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    } catch (KeeperException e) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      LOG.error("Ignoring the exception to remove peer " + peerId + " from hfile reference queue.",<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        e);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    }<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  }<a name="line.407"></a>
+<span class="sourceLineNo">408</span>}<a name="line.408"></a>
 
 
 


[11/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html
index b4f3aec..3b9c8a4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html
@@ -97,8 +97,8 @@
 <span class="sourceLineNo">089</span>import org.apache.hbase.thirdparty.com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.89"></a>
 <span class="sourceLineNo">090</span><a name="line.90"></a>
 <span class="sourceLineNo">091</span>/**<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * ThriftServer - this class starts up a Thrift server which implements the HBase API specified in the<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * HbaseClient.thrift IDL file.<a name="line.93"></a>
+<span class="sourceLineNo">092</span> * ThriftServer - this class starts up a Thrift server which implements the HBase API specified in<a name="line.92"></a>
+<span class="sourceLineNo">093</span> * the HbaseClient.thrift IDL file.<a name="line.93"></a>
 <span class="sourceLineNo">094</span> */<a name="line.94"></a>
 <span class="sourceLineNo">095</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.95"></a>
 <span class="sourceLineNo">096</span>@SuppressWarnings({ "rawtypes", "unchecked" })<a name="line.96"></a>
@@ -163,460 +163,484 @@
 <span class="sourceLineNo">155</span>    options.addOption("ro", "readonly", false,<a name="line.155"></a>
 <span class="sourceLineNo">156</span>      "Respond only to read method requests [default: false]");<a name="line.156"></a>
 <span class="sourceLineNo">157</span>    OptionGroup servers = new OptionGroup();<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    servers.addOption(<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        new Option("nonblocking", false, "Use the TNonblockingServer. This implies the framed transport."));<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    servers.addOption(new Option("hsha", false, "Use the THsHaServer. This implies the framed transport."));<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    servers.addOption(new Option("selector", false, "Use the TThreadedSelectorServer. This implies the framed transport."));<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    servers.addOption(new Option("threadpool", false, "Use the TThreadPoolServer. This is the default."));<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    options.addOptionGroup(servers);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    return options;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  }<a name="line.165"></a>
-<span class="sourceLineNo">166</span><a name="line.166"></a>
-<span class="sourceLineNo">167</span>  private static CommandLine parseArguments(Configuration conf, Options options, String[] args)<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      throws ParseException, IOException {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    CommandLineParser parser = new PosixParser();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    return parser.parse(options, args);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  private static TProtocolFactory getTProtocolFactory(boolean isCompact) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    if (isCompact) {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      log.debug("Using compact protocol");<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      return new TCompactProtocol.Factory();<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    } else {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      log.debug("Using binary protocol");<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      return new TBinaryProtocol.Factory();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  private static TTransportFactory getTTransportFactory(<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      SaslUtil.QualityOfProtection qop, String name, String host,<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      boolean framed, int frameSize) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    if (framed) {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      if (qop != null) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>        throw new RuntimeException("Thrift server authentication"<a name="line.188"></a>
-<span class="sourceLineNo">189</span>          + " doesn't work with framed transport yet");<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      log.debug("Using framed transport");<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      return new TFramedTransport.Factory(frameSize);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    } else if (qop == null) {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      return new TTransportFactory();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    } else {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      Map&lt;String, String&gt; saslProperties = SaslUtil.initSaslProperties(qop.name());<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      TSaslServerTransport.Factory saslFactory = new TSaslServerTransport.Factory();<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      saslFactory.addServerDefinition("GSSAPI", name, host, saslProperties,<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        new SaslGssCallbackHandler() {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>          @Override<a name="line.200"></a>
-<span class="sourceLineNo">201</span>          public void handle(Callback[] callbacks)<a name="line.201"></a>
-<span class="sourceLineNo">202</span>              throws UnsupportedCallbackException {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>            AuthorizeCallback ac = null;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>            for (Callback callback : callbacks) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>              if (callback instanceof AuthorizeCallback) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>                ac = (AuthorizeCallback) callback;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>              } else {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>                throw new UnsupportedCallbackException(callback,<a name="line.208"></a>
-<span class="sourceLineNo">209</span>                    "Unrecognized SASL GSSAPI Callback");<a name="line.209"></a>
-<span class="sourceLineNo">210</span>              }<a name="line.210"></a>
-<span class="sourceLineNo">211</span>            }<a name="line.211"></a>
-<span class="sourceLineNo">212</span>            if (ac != null) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>              String authid = ac.getAuthenticationID();<a name="line.213"></a>
-<span class="sourceLineNo">214</span>              String authzid = ac.getAuthorizationID();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>              if (!authid.equals(authzid)) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>                ac.setAuthorized(false);<a name="line.216"></a>
-<span class="sourceLineNo">217</span>              } else {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>                ac.setAuthorized(true);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>                String userName = SecurityUtil.getUserFromPrincipal(authzid);<a name="line.219"></a>
-<span class="sourceLineNo">220</span>                log.info("Effective user: " + userName);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>                ac.setAuthorizedID(userName);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>              }<a name="line.222"></a>
-<span class="sourceLineNo">223</span>            }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>          }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>        });<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      return saslFactory;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  }<a name="line.228"></a>
-<span class="sourceLineNo">229</span><a name="line.229"></a>
-<span class="sourceLineNo">230</span>  /*<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * If bindValue is null, we don't bind.<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   */<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  private static InetSocketAddress bindToPort(String bindValue, int listenPort)<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      throws UnknownHostException {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    try {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      if (bindValue == null) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        return new InetSocketAddress(listenPort);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      } else {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        return new InetSocketAddress(InetAddress.getByName(bindValue), listenPort);<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    } catch (UnknownHostException e) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      throw new RuntimeException("Could not bind to provided ip address", e);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    }<a name="line.243"></a>
-<span class="sourceLineNo">244</span>  }<a name="line.244"></a>
-<span class="sourceLineNo">245</span><a name="line.245"></a>
-<span class="sourceLineNo">246</span>  private static TServer getTNonBlockingServer(TProtocolFactory protocolFactory, TProcessor processor,<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      TTransportFactory transportFactory, InetSocketAddress inetSocketAddress) throws TTransportException {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    TNonblockingServerTransport serverTransport = new TNonblockingServerSocket(inetSocketAddress);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    log.info("starting HBase Nonblocking Thrift server on " + inetSocketAddress.toString());<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    TNonblockingServer.Args serverArgs = new TNonblockingServer.Args(serverTransport);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    serverArgs.processor(processor);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    serverArgs.transportFactory(transportFactory);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    serverArgs.protocolFactory(protocolFactory);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    return new TNonblockingServer(serverArgs);<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  }<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>  private static TServer getTHsHaServer(TProtocolFactory protocolFactory,<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      TProcessor processor, TTransportFactory transportFactory,<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      int workerThreads, int maxCallQueueSize,<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      InetSocketAddress inetSocketAddress, ThriftMetrics metrics)<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      throws TTransportException {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    TNonblockingServerTransport serverTransport = new TNonblockingServerSocket(inetSocketAddress);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    log.info("starting HBase HsHA Thrift server on " + inetSocketAddress.toString());<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    THsHaServer.Args serverArgs = new THsHaServer.Args(serverTransport);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    if (workerThreads &gt; 0) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      // Could support the min &amp; max threads, avoiding to preserve existing functionality.<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      serverArgs.minWorkerThreads(workerThreads).maxWorkerThreads(workerThreads);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    }<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    ExecutorService executorService = createExecutor(<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        workerThreads, maxCallQueueSize, metrics);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    serverArgs.executorService(executorService);<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    serverArgs.processor(processor);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    serverArgs.transportFactory(transportFactory);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    serverArgs.protocolFactory(protocolFactory);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    return new THsHaServer(serverArgs);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  }<a name="line.276"></a>
-<span class="sourceLineNo">277</span><a name="line.277"></a>
-<span class="sourceLineNo">278</span>  private static TServer getTThreadedSelectorServer(TProtocolFactory protocolFactory,<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      TProcessor processor, TTransportFactory transportFactory,<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      int workerThreads, int selectorThreads, int maxCallQueueSize,<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      InetSocketAddress inetSocketAddress, ThriftMetrics metrics)<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      throws TTransportException {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    TNonblockingServerTransport serverTransport = new TNonblockingServerSocket(inetSocketAddress);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    log.info("starting HBase ThreadedSelector Thrift server on " + inetSocketAddress.toString());<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    TThreadedSelectorServer.Args serverArgs = new TThreadedSelectorServer.Args(serverTransport);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    if (workerThreads &gt; 0) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        serverArgs.workerThreads(workerThreads);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    if (selectorThreads &gt; 0) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        serverArgs.selectorThreads(selectorThreads);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>    ExecutorService executorService = createExecutor(<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        workerThreads, maxCallQueueSize, metrics);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    serverArgs.executorService(executorService);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    serverArgs.processor(processor);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    serverArgs.transportFactory(transportFactory);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    serverArgs.protocolFactory(protocolFactory);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    return new TThreadedSelectorServer(serverArgs);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  }<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>  private static ExecutorService createExecutor(<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      int workerThreads, int maxCallQueueSize, ThriftMetrics metrics) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    CallQueue callQueue;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    if (maxCallQueueSize &gt; 0) {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(maxCallQueueSize), metrics);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    } else {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    }<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>    ThreadFactoryBuilder tfb = new ThreadFactoryBuilder();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    tfb.setDaemon(true);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    tfb.setNameFormat("thrift2-worker-%d");<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    ThreadPoolExecutor pool = new THBaseThreadPoolExecutor(workerThreads, workerThreads,<a name="line.314"></a>
-<span class="sourceLineNo">315</span>            Long.MAX_VALUE, TimeUnit.SECONDS, callQueue, tfb.build(), metrics);<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    pool.prestartAllCoreThreads();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    return pool;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  private static TServer getTThreadPoolServer(TProtocolFactory protocolFactory,<a name="line.320"></a>
-<span class="sourceLineNo">321</span>                                              TProcessor processor,<a name="line.321"></a>
-<span class="sourceLineNo">322</span>                                              TTransportFactory transportFactory,<a name="line.322"></a>
-<span class="sourceLineNo">323</span>                                              int workerThreads,<a name="line.323"></a>
-<span class="sourceLineNo">324</span>                                              InetSocketAddress inetSocketAddress,<a name="line.324"></a>
-<span class="sourceLineNo">325</span>                                              int backlog,<a name="line.325"></a>
-<span class="sourceLineNo">326</span>                                              int clientTimeout,<a name="line.326"></a>
-<span class="sourceLineNo">327</span>                                              ThriftMetrics metrics)<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      throws TTransportException {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    TServerTransport serverTransport = new TServerSocket(<a name="line.329"></a>
-<span class="sourceLineNo">330</span>                                           new TServerSocket.ServerSocketTransportArgs().<a name="line.330"></a>
-<span class="sourceLineNo">331</span>                                               bindAddr(inetSocketAddress).backlog(backlog).<a name="line.331"></a>
-<span class="sourceLineNo">332</span>                                               clientTimeout(clientTimeout));<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    log.info("starting HBase ThreadPool Thrift server on " + inetSocketAddress.toString());<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    TThreadPoolServer.Args serverArgs = new TThreadPoolServer.Args(serverTransport);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    serverArgs.processor(processor);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    serverArgs.transportFactory(transportFactory);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    serverArgs.protocolFactory(protocolFactory);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    if (workerThreads &gt; 0) {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      serverArgs.maxWorkerThreads(workerThreads);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    ThreadPoolExecutor executor = new THBaseThreadPoolExecutor(serverArgs.minWorkerThreads,<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        serverArgs.maxWorkerThreads, serverArgs.stopTimeoutVal, TimeUnit.SECONDS,<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        new SynchronousQueue&lt;&gt;(), metrics);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    serverArgs.executorService(executor);<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>    return new TThreadPoolServer(serverArgs);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  /**<a name="line.349"></a>
-<span class="sourceLineNo">350</span>   * Adds the option to pre-load filters at startup.<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   *<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   * @param conf  The current configuration instance.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   */<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  protected static void registerFilters(Configuration conf) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    String[] filters = conf.getStrings("hbase.thrift.filters");<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    if(filters != null) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      for(String filterClass: filters) {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        String[] filterPart = filterClass.split(":");<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        if(filterPart.length != 2) {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>          log.warn("Invalid filter specification " + filterClass + " - skipping");<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        } else {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>          ParseFilter.registerFilter(filterPart[0], filterPart[1]);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        }<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      }<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  }<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>  /**<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   * Start up the Thrift2 server.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  public static void main(String[] args) throws Exception {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    // for now, only time we return is on an argument error.<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    final int status = ToolRunner.run(conf, new ThriftServer(), args);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    System.exit(status);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  }<a name="line.376"></a>
-<span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>  @Override<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  public int run(String[] args) throws Exception {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    final Configuration conf = getConf();<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    TServer server = null;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    Options options = getOptions();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    CommandLine cmd = parseArguments(conf, options, args);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    int workerThreads = 0;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    int selectorThreads = 0;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    int maxCallQueueSize = -1; // use unbounded queue by default<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>    /**<a name="line.388"></a>
-<span class="sourceLineNo">389</span>     * This is to please both bin/hbase and bin/hbase-daemon. hbase-daemon provides "start" and "stop" arguments hbase<a name="line.389"></a>
-<span class="sourceLineNo">390</span>     * should print the help if no argument is provided<a name="line.390"></a>
-<span class="sourceLineNo">391</span>     */<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    List&lt;?&gt; argList = cmd.getArgList();<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    if (cmd.hasOption("help") || !argList.contains("start") || argList.contains("stop")) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      printUsage();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      return 1;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    }<a name="line.396"></a>
+<span class="sourceLineNo">158</span>    servers.addOption(new Option("nonblocking", false,<a name="line.158"></a>
+<span class="sourceLineNo">159</span>            "Use the TNonblockingServer. This implies the framed transport."));<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    servers.addOption(new Option("hsha", false,<a name="line.160"></a>
+<span class="sourceLineNo">161</span>            "Use the THsHaServer. This implies the framed transport."));<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    servers.addOption(new Option("selector", false,<a name="line.162"></a>
+<span class="sourceLineNo">163</span>            "Use the TThreadedSelectorServer. This implies the framed transport."));<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    servers.addOption(new Option("threadpool", false,<a name="line.164"></a>
+<span class="sourceLineNo">165</span>            "Use the TThreadPoolServer. This is the default."));<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    options.addOptionGroup(servers);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    return options;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  }<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>  private static CommandLine parseArguments(Configuration conf, Options options, String[] args)<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      throws ParseException, IOException {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    CommandLineParser parser = new PosixParser();<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    return parser.parse(options, args);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>  }<a name="line.174"></a>
+<span class="sourceLineNo">175</span><a name="line.175"></a>
+<span class="sourceLineNo">176</span>  private static TProtocolFactory getTProtocolFactory(boolean isCompact) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    if (isCompact) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      log.debug("Using compact protocol");<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      return new TCompactProtocol.Factory();<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    } else {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      log.debug("Using binary protocol");<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      return new TBinaryProtocol.Factory();<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    }<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  private static TTransportFactory getTTransportFactory(<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      SaslUtil.QualityOfProtection qop, String name, String host,<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      boolean framed, int frameSize) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    if (framed) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      if (qop != null) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        throw new RuntimeException("Thrift server authentication"<a name="line.191"></a>
+<span class="sourceLineNo">192</span>          + " doesn't work with framed transport yet");<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      }<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      log.debug("Using framed transport");<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      return new TFramedTransport.Factory(frameSize);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    } else if (qop == null) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      return new TTransportFactory();<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    } else {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      Map&lt;String, String&gt; saslProperties = SaslUtil.initSaslProperties(qop.name());<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      TSaslServerTransport.Factory saslFactory = new TSaslServerTransport.Factory();<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      saslFactory.addServerDefinition("GSSAPI", name, host, saslProperties,<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        new SaslGssCallbackHandler() {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>          @Override<a name="line.203"></a>
+<span class="sourceLineNo">204</span>          public void handle(Callback[] callbacks)<a name="line.204"></a>
+<span class="sourceLineNo">205</span>              throws UnsupportedCallbackException {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>            AuthorizeCallback ac = null;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>            for (Callback callback : callbacks) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>              if (callback instanceof AuthorizeCallback) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>                ac = (AuthorizeCallback) callback;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>              } else {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>                throw new UnsupportedCallbackException(callback,<a name="line.211"></a>
+<span class="sourceLineNo">212</span>                    "Unrecognized SASL GSSAPI Callback");<a name="line.212"></a>
+<span class="sourceLineNo">213</span>              }<a name="line.213"></a>
+<span class="sourceLineNo">214</span>            }<a name="line.214"></a>
+<span class="sourceLineNo">215</span>            if (ac != null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>              String authid = ac.getAuthenticationID();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>              String authzid = ac.getAuthorizationID();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>              if (!authid.equals(authzid)) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>                ac.setAuthorized(false);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>              } else {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>                ac.setAuthorized(true);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>                String userName = SecurityUtil.getUserFromPrincipal(authzid);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>                log.info("Effective user: " + userName);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>                ac.setAuthorizedID(userName);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>              }<a name="line.225"></a>
+<span class="sourceLineNo">226</span>            }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>          }<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        });<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      return saslFactory;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
+<span class="sourceLineNo">231</span>  }<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>  /*<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * If bindValue is null, we don't bind.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   */<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  private static InetSocketAddress bindToPort(String bindValue, int listenPort)<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      throws UnknownHostException {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    try {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      if (bindValue == null) {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        return new InetSocketAddress(listenPort);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      } else {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        return new InetSocketAddress(InetAddress.getByName(bindValue), listenPort);<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      }<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    } catch (UnknownHostException e) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      throw new RuntimeException("Could not bind to provided ip address", e);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    }<a name="line.246"></a>
+<span class="sourceLineNo">247</span>  }<a name="line.247"></a>
+<span class="sourceLineNo">248</span><a name="line.248"></a>
+<span class="sourceLineNo">249</span>  private static TServer getTNonBlockingServer(TProtocolFactory protocolFactory,<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      TProcessor processor, TTransportFactory transportFactory, InetSocketAddress inetSocketAddress)<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          throws TTransportException {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    TNonblockingServerTransport serverTransport = new TNonblockingServerSocket(inetSocketAddress);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    log.info("starting HBase Nonblocking Thrift server on " + inetSocketAddress.toString());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    TNonblockingServer.Args serverArgs = new TNonblockingServer.Args(serverTransport);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    serverArgs.processor(processor);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    serverArgs.transportFactory(transportFactory);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    serverArgs.protocolFactory(protocolFactory);<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    return new TNonblockingServer(serverArgs);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  }<a name="line.259"></a>
+<span class="sourceLineNo">260</span><a name="line.260"></a>
+<span class="sourceLineNo">261</span>  private static TServer getTHsHaServer(TProtocolFactory protocolFactory,<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      TProcessor processor, TTransportFactory transportFactory,<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      int workerThreads, int maxCallQueueSize,<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      InetSocketAddress inetSocketAddress, ThriftMetrics metrics)<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      throws TTransportException {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    TNonblockingServerTransport serverTransport = new TNonblockingServerSocket(inetSocketAddress);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    log.info("starting HBase HsHA Thrift server on " + inetSocketAddress.toString());<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    THsHaServer.Args serverArgs = new THsHaServer.Args(serverTransport);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    if (workerThreads &gt; 0) {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      // Could support the min &amp; max threads, avoiding to preserve existing functionality.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      serverArgs.minWorkerThreads(workerThreads).maxWorkerThreads(workerThreads);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    ExecutorService executorService = createExecutor(<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        workerThreads, maxCallQueueSize, metrics);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    serverArgs.executorService(executorService);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    serverArgs.processor(processor);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    serverArgs.transportFactory(transportFactory);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    serverArgs.protocolFactory(protocolFactory);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    return new THsHaServer(serverArgs);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>  private static TServer getTThreadedSelectorServer(TProtocolFactory protocolFactory,<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      TProcessor processor, TTransportFactory transportFactory,<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      int workerThreads, int selectorThreads, int maxCallQueueSize,<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      InetSocketAddress inetSocketAddress, ThriftMetrics metrics)<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      throws TTransportException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    TNonblockingServerTransport serverTransport = new TNonblockingServerSocket(inetSocketAddress);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    log.info("starting HBase ThreadedSelector Thrift server on " + inetSocketAddress.toString());<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    TThreadedSelectorServer.Args serverArgs = new TThreadedSelectorServer.Args(serverTransport);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    if (workerThreads &gt; 0) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      serverArgs.workerThreads(workerThreads);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    if (selectorThreads &gt; 0) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      serverArgs.selectorThreads(selectorThreads);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    }<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>    ExecutorService executorService = createExecutor(<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        workerThreads, maxCallQueueSize, metrics);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    serverArgs.executorService(executorService);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    serverArgs.processor(processor);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    serverArgs.transportFactory(transportFactory);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    serverArgs.protocolFactory(protocolFactory);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    return new TThreadedSelectorServer(serverArgs);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  }<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>  private static ExecutorService createExecutor(<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      int workerThreads, int maxCallQueueSize, ThriftMetrics metrics) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    CallQueue callQueue;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    if (maxCallQueueSize &gt; 0) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(maxCallQueueSize), metrics);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    } else {<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    }<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    ThreadFactoryBuilder tfb = new ThreadFactoryBuilder();<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    tfb.setDaemon(true);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    tfb.setNameFormat("thrift2-worker-%d");<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    ThreadPoolExecutor pool = new THBaseThreadPoolExecutor(workerThreads, workerThreads,<a name="line.318"></a>
+<span class="sourceLineNo">319</span>            Long.MAX_VALUE, TimeUnit.SECONDS, callQueue, tfb.build(), metrics);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    pool.prestartAllCoreThreads();<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    return pool;<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  }<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>  private static TServer getTThreadPoolServer(TProtocolFactory protocolFactory,<a name="line.324"></a>
+<span class="sourceLineNo">325</span>                                              TProcessor processor,<a name="line.325"></a>
+<span class="sourceLineNo">326</span>                                              TTransportFactory transportFactory,<a name="line.326"></a>
+<span class="sourceLineNo">327</span>                                              int workerThreads,<a name="line.327"></a>
+<span class="sourceLineNo">328</span>                                              InetSocketAddress inetSocketAddress,<a name="line.328"></a>
+<span class="sourceLineNo">329</span>                                              int backlog,<a name="line.329"></a>
+<span class="sourceLineNo">330</span>                                              int clientTimeout,<a name="line.330"></a>
+<span class="sourceLineNo">331</span>                                              ThriftMetrics metrics)<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      throws TTransportException {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    TServerTransport serverTransport = new TServerSocket(<a name="line.333"></a>
+<span class="sourceLineNo">334</span>                                           new TServerSocket.ServerSocketTransportArgs().<a name="line.334"></a>
+<span class="sourceLineNo">335</span>                                               bindAddr(inetSocketAddress).backlog(backlog).<a name="line.335"></a>
+<span class="sourceLineNo">336</span>                                               clientTimeout(clientTimeout));<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    log.info("starting HBase ThreadPool Thrift server on " + inetSocketAddress.toString());<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    TThreadPoolServer.Args serverArgs = new TThreadPoolServer.Args(serverTransport);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    serverArgs.processor(processor);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    serverArgs.transportFactory(transportFactory);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    serverArgs.protocolFactory(protocolFactory);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    if (workerThreads &gt; 0) {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      serverArgs.maxWorkerThreads(workerThreads);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    ThreadPoolExecutor executor = new THBaseThreadPoolExecutor(serverArgs.minWorkerThreads,<a name="line.345"></a>
+<span class="sourceLineNo">346</span>        serverArgs.maxWorkerThreads, serverArgs.stopTimeoutVal, TimeUnit.SECONDS,<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        new SynchronousQueue&lt;&gt;(), metrics);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    serverArgs.executorService(executor);<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>    return new TThreadPoolServer(serverArgs);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
+<span class="sourceLineNo">352</span><a name="line.352"></a>
+<span class="sourceLineNo">353</span>  /**<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   * Adds the option to pre-load filters at startup.<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   *<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * @param conf  The current configuration instance.<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   */<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  protected static void registerFilters(Configuration conf) {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    String[] filters = conf.getStrings("hbase.thrift.filters");<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    if(filters != null) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      for(String filterClass: filters) {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>        String[] filterPart = filterClass.split(":");<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        if(filterPart.length != 2) {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>          log.warn("Invalid filter specification " + filterClass + " - skipping");<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        } else {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          ParseFilter.registerFilter(filterPart[0], filterPart[1]);<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        }<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    }<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  /**<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * Start up the Thrift2 server.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   */<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  public static void main(String[] args) throws Exception {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    // for now, only time we return is on an argument error.<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    final int status = ToolRunner.run(conf, new ThriftServer(), args);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    System.exit(status);<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  }<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>  @Override<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  public int run(String[] args) throws Exception {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    final Configuration conf = getConf();<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    Options options = getOptions();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    CommandLine cmd = parseArguments(conf, options, args);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    int workerThreads = 0;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    int selectorThreads = 0;<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    int maxCallQueueSize = -1; // use unbounded queue by default<a name="line.389"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>    if (checkArguments(cmd)) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      return 1;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    }<a name="line.393"></a>
+<span class="sourceLineNo">394</span><a name="line.394"></a>
+<span class="sourceLineNo">395</span>    // Get address to bind<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    String bindAddress = getBindAddress(conf, cmd);<a name="line.396"></a>
 <span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>    // Get address to bind<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    String bindAddress;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    if (cmd.hasOption("bind")) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      bindAddress = cmd.getOptionValue("bind");<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      conf.set("hbase.thrift.info.bindAddress", bindAddress);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    } else {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      bindAddress = conf.get("hbase.thrift.info.bindAddress");<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    }<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // check if server should only process read requests, if so override the conf<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    if (cmd.hasOption("readonly")) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      conf.setBoolean("hbase.thrift.readonly", true);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      if (log.isDebugEnabled()) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        log.debug("readonly set to true");<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      }<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    }<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>    // Get read timeout<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    int readTimeout = THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    if (cmd.hasOption(READ_TIMEOUT_OPTION)) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      try {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        readTimeout = Integer.parseInt(cmd.getOptionValue(READ_TIMEOUT_OPTION));<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      } catch (NumberFormatException e) {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        throw new RuntimeException("Could not parse the value provided for the timeout option", e);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      }<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    } else {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      readTimeout = conf.getInt(THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY,<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT);<a name="line.425"></a>
+<span class="sourceLineNo">398</span>    // check if server should only process read requests, if so override the conf<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    if (cmd.hasOption("readonly")) {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      conf.setBoolean("hbase.thrift.readonly", true);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      if (log.isDebugEnabled()) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        log.debug("readonly set to true");<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    }<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>    // Get read timeout<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    int readTimeout = getReadTimeout(conf, cmd);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    // Get port to bind to<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    int listenPort = getListenPort(conf, cmd);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    // Thrift's implementation uses '0' as a placeholder for 'use the default.'<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    int backlog = conf.getInt(BACKLOG_CONF_KEY, 0);<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>    // Local hostname and user name, used only if QOP is configured.<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    String host = null;<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    String name = null;<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>    UserProvider userProvider = UserProvider.instantiate(conf);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    // login the server principal (if using secure Hadoop)<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    boolean securityEnabled = userProvider.isHadoopSecurityEnabled()<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      &amp;&amp; userProvider.isHBaseSecurityEnabled();<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    if (securityEnabled) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      host = Strings.domainNamePointerToHostName(DNS.getDefaultHost(<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        conf.get("hbase.thrift.dns.interface", "default"),<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        conf.get("hbase.thrift.dns.nameserver", "default")));<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      userProvider.login("hbase.thrift.keytab.file", "hbase.thrift.kerberos.principal", host);<a name="line.425"></a>
 <span class="sourceLineNo">426</span>    }<a name="line.426"></a>
 <span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>    // Get port to bind to<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    int listenPort = 0;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    try {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      if (cmd.hasOption("port")) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        listenPort = Integer.parseInt(cmd.getOptionValue("port"));<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      } else {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        listenPort = conf.getInt("hbase.regionserver.thrift.port", DEFAULT_LISTEN_PORT);<a name="line.434"></a>
+<span class="sourceLineNo">428</span>    UserGroupInformation realUser = userProvider.getCurrent().getUGI();<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    String stringQop = conf.get(THRIFT_QOP_KEY);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    SaslUtil.QualityOfProtection qop = null;<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    if (stringQop != null) {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      qop = SaslUtil.getQop(stringQop);<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      if (!securityEnabled) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        throw new IOException("Thrift server must run in secure mode to support authentication");<a name="line.434"></a>
 <span class="sourceLineNo">435</span>      }<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    } catch (NumberFormatException e) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      throw new RuntimeException("Could not parse the value provided for the port option", e);<a name="line.437"></a>
+<span class="sourceLineNo">436</span>      // Extract the name from the principal<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      name = SecurityUtil.getUserFromPrincipal(conf.get("hbase.thrift.kerberos.principal"));<a name="line.437"></a>
 <span class="sourceLineNo">438</span>    }<a name="line.438"></a>
 <span class="sourceLineNo">439</span><a name="line.439"></a>
-<span class="sourceLineNo">440</span>    // Thrift's implementation uses '0' as a placeholder for 'use the default.'<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    int backlog = conf.getInt(BACKLOG_CONF_KEY, 0);<a name="line.441"></a>
-<span class="sourceLineNo">442</span><a name="line.442"></a>
-<span class="sourceLineNo">443</span>    // Local hostname and user name,<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    // used only if QOP is configured.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    String host = null;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    String name = null;<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>    UserProvider userProvider = UserProvider.instantiate(conf);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    // login the server principal (if using secure Hadoop)<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    boolean securityEnabled = userProvider.isHadoopSecurityEnabled()<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      &amp;&amp; userProvider.isHBaseSecurityEnabled();<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    if (securityEnabled) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      host = Strings.domainNamePointerToHostName(DNS.getDefaultHost(<a name="line.453"></a>
-<span class="sourceLineNo">454</span>        conf.get("hbase.thrift.dns.interface", "default"),<a name="line.454"></a>
-<span class="sourceLineNo">455</span>        conf.get("hbase.thrift.dns.nameserver", "default")));<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      userProvider.login("hbase.thrift.keytab.file",<a name="line.456"></a>
-<span class="sourceLineNo">457</span>        "hbase.thrift.kerberos.principal", host);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    }<a name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>    UserGroupInformation realUser = userProvider.getCurrent().getUGI();<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    String stringQop = conf.get(THRIFT_QOP_KEY);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    SaslUtil.QualityOfProtection qop = null;<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    if (stringQop != null) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      qop = SaslUtil.getQop(stringQop);<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      if (!securityEnabled) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>        throw new IOException("Thrift server must"<a name="line.466"></a>
-<span class="sourceLineNo">467</span>          + " run in secure mode to support authentication");<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      }<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      // Extract the name from the principal<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      name = SecurityUtil.getUserFromPrincipal(<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        conf.get("hbase.thrift.kerberos.principal"));<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
-<span class="sourceLineNo">473</span><a name="line.473"></a>
-<span class="sourceLineNo">474</span>    boolean nonblocking = cmd.hasOption("nonblocking");<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    boolean hsha = cmd.hasOption("hsha");<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    boolean selector = cmd.hasOption("selector");<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>    ThriftMetrics metrics = new ThriftMetrics(conf, ThriftMetrics.ThriftServerType.TWO);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    final JvmPauseMonitor pauseMonitor = new JvmPauseMonitor(conf, metrics.getSource());<a name="line.479"></a>
-<span class="sourceLineNo">480</span><a name="line.480"></a>
-<span class="sourceLineNo">481</span>    String implType = "threadpool";<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    if (nonblocking) {<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      implType = "nonblocking";<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    } else if (hsha) {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      implType = "hsha";<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    } else if (selector) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      implType = "selector";<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    }<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>    conf.set("hbase.regionserver.thrift.server.type", implType);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    conf.setInt("hbase.regionserver.thrift.port", listenPort);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    registerFilters(conf);<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    // Construct correct ProtocolFactory<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    boolean compact = cmd.hasOption("compact") ||<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        conf.getBoolean("hbase.regionserver.thrift.compact", false);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    TProtocolFactory protocolFactory = getTProtocolFactory(compact);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    final ThriftHBaseServiceHandler hbaseHandler =<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      new ThriftHBaseServiceHandler(conf, userProvider);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    THBaseService.Iface handler =<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      ThriftHBaseServiceHandler.newInstance(hbaseHandler, metrics);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    final THBaseService.Processor p = new THBaseService.Processor(handler);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    conf.setBoolean("hbase.regionserver.thrift.compact", compact);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    TProcessor processor = p;<a name="line.504"></a>
-<span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>    boolean framed = cmd.hasOption("framed") ||<a name="line.506"></a>
-<span class="sourceLineNo">507</span>        conf.getBoolean("hbase.regionserver.thrift.framed", false) || nonblocking || hsha;<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    TTransportFactory transportFactory = getTTransportFactory(qop, name, host, framed,<a name="line.508"></a>
-<span class="sourceLineNo">509</span>        conf.getInt("hbase.regionserver.thrift.framed.max_frame_size_in_mb", 2) * 1024 * 1024);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    InetSocketAddress inetSocketAddress = bindToPort(bindAddress, listenPort);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    conf.setBoolean("hbase.regionserver.thrift.framed", framed);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    if (qop != null) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      // Create a processor wrapper, to get the caller<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      processor = new TProcessor() {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>        @Override<a name="line.515"></a>
-<span class="sourceLineNo">516</span>        public boolean process(TProtocol inProt,<a name="line.516"></a>
-<span class="sourceLineNo">517</span>            TProtocol outProt) throws TException {<a name="line.517"></a>
-<span class="sourceLineNo">518</span>          TSaslServerTransport saslServerTransport =<a name="line.518"></a>
-<span class="sourceLineNo">519</span>            (TSaslServerTransport)inProt.getTransport();<a name="line.519"></a>
-<span class="sourceLineNo">520</span>          SaslServer saslServer = saslServerTransport.getSaslServer();<a name="line.520"></a>
-<span class="sourceLineNo">521</span>          String principal = saslServer.getAuthorizationID();<a name="line.521"></a>
-<span class="sourceLineNo">522</span>          hbaseHandler.setEffectiveUser(principal);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>          return p.process(inProt, outProt);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>        }<a name="line.524"></a>
-<span class="sourceLineNo">525</span>      };<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    }<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span>    if (cmd.hasOption("w")) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      workerThreads = Integer.parseInt(cmd.getOptionValue("w"));<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    }<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    if (cmd.hasOption("s")) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      selectorThreads = Integer.parseInt(cmd.getOptionValue("s"));<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    }<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    if (cmd.hasOption("q")) {<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      maxCallQueueSize = Integer.parseInt(cmd.getOptionValue("q"));<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>    // check for user-defined info server port setting, if so override the conf<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    try {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      if (cmd.hasOption("infoport")) {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>        String val = cmd.getOptionValue("infoport");<a name="line.541"></a>
-<span class="sourceLineNo">542</span>        conf.setInt("hbase.thrift.info.port", Integer.parseInt(val));<a name="line.542"></a>
-<span class="sourceLineNo">543</span>        log.debug("Web UI port set to " + val);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>      }<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    } catch (NumberFormatException e) {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      log.error("Could not parse the value provided for the infoport option", e);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      printUsage();<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      System.exit(1);<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    }<a name="line.549"></a>
-<span class="sourceLineNo">550</span><a name="line.550"></a>
-<span class="sourceLineNo">551</span>    // Put up info server.<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    int port = conf.getInt("hbase.thrift.info.port", 9095);<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    if (port &gt;= 0) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      conf.setLong("startcode", System.currentTimeMillis());<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      String a = conf.get("hbase.thrift.info.bindAddress", "0.0.0.0");<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      InfoServer infoServer = new InfoServer("thrift", a, port, false, conf);<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      infoServer.setAttribute("hbase.conf", conf);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      infoServer.start();<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    }<a name="line.559"></a>
+<span class="sourceLineNo">440</span>    boolean nonblocking = cmd.hasOption("nonblocking");<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    boolean hsha = cmd.hasOption("hsha");<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    boolean selector = cmd.hasOption("selector");<a name="line.442"></a>
+<span class="sourceLineNo">443</span><a name="line.443"></a>
+<span class="sourceLineNo">444</span>    ThriftMetrics metrics = new ThriftMetrics(conf, ThriftMetrics.ThriftServerType.TWO);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    final JvmPauseMonitor pauseMonitor = new JvmPauseMonitor(conf, metrics.getSource());<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>    String implType = getImplType(nonblocking, hsha, selector);<a name="line.447"></a>
+<span class="sourceLineNo">448</span><a name="line.448"></a>
+<span class="sourceLineNo">449</span>    conf.set("hbase.regionserver.thrift.server.type", implType);<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    conf.setInt("hbase.regionserver.thrift.port", listenPort);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    registerFilters(conf);<a name="line.451"></a>
+<span class="sourceLineNo">452</span><a name="line.452"></a>
+<span class="sourceLineNo">453</span>    // Construct correct ProtocolFactory<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    boolean compact = cmd.hasOption("compact") ||<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        conf.getBoolean("hbase.regionserver.thrift.compact", false);<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    TProtocolFactory protocolFactory = getTProtocolFactory(compact);<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    final ThriftHBaseServiceHandler hbaseHandler =<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      new ThriftHBaseServiceHandler(conf, userProvider);<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    THBaseService.Iface handler =<a name="line.459"></a>
+<span class="sourceLineNo">460</span>      ThriftHBaseServiceHandler.newInstance(hbaseHandler, metrics);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    final THBaseService.Processor p = new THBaseService.Processor(handler);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    conf.setBoolean("hbase.regionserver.thrift.compact", compact);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    TProcessor processor = p;<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>    boolean framed = cmd.hasOption("framed") ||<a name="line.465"></a>
+<span class="sourceLineNo">466</span>        conf.getBoolean("hbase.regionserver.thrift.framed", false) || nonblocking || hsha;<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    TTransportFactory transportFactory = getTTransportFactory(qop, name, host, framed,<a name="line.467"></a>
+<span class="sourceLineNo">468</span>        conf.getInt("hbase.regionserver.thrift.framed.max_frame_size_in_mb", 2) * 1024 * 1024);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    InetSocketAddress inetSocketAddress = bindToPort(bindAddress, listenPort);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    conf.setBoolean("hbase.regionserver.thrift.framed", framed);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    if (qop != null) {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      // Create a processor wrapper, to get the caller<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      processor = new TProcessor() {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>        @Override<a name="line.474"></a>
+<span class="sourceLineNo">475</span>        public boolean process(TProtocol inProt,<a name="line.475"></a>
+<span class="sourceLineNo">476</span>            TProtocol outProt) throws TException {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>          TSaslServerTransport saslServerTransport =<a name="line.477"></a>
+<span class="sourceLineNo">478</span>            (TSaslServerTransport)inProt.getTransport();<a name="line.478"></a>
+<span class="sourceLineNo">479</span>          SaslServer saslServer = saslServerTransport.getSaslServer();<a name="line.479"></a>
+<span class="sourceLineNo">480</span>          String principal = saslServer.getAuthorizationID();<a name="line.480"></a>
+<span class="sourceLineNo">481</span>          hbaseHandler.setEffectiveUser(principal);<a name="line.481"></a>
+<span class="sourceLineNo">482</span>          return p.process(inProt, outProt);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>        }<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      };<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    }<a name="line.485"></a>
+<span class="sourceLineNo">486</span><a name="line.486"></a>
+<span class="sourceLineNo">487</span>    if (cmd.hasOption("w")) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      workerThreads = Integer.parseInt(cmd.getOptionValue("w"));<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    }<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    if (cmd.hasOption("s")) {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      selectorThreads = Integer.parseInt(cmd.getOptionValue("s"));<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    if (cmd.hasOption("q")) {<a name="line.493"></a>
+<span class="sourceLineNo">494</span>      maxCallQueueSize = Integer.parseInt(cmd.getOptionValue("q"));<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    }<a name="line.495"></a>
+<span class="sourceLineNo">496</span><a name="line.496"></a>
+<span class="sourceLineNo">497</span>    // check for user-defined info server port setting, if so override the conf<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    try {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      if (cmd.hasOption("infoport")) {<a name="line.499"></a>
+<span class="sourceLineNo">500</span>        String val = cmd.getOptionValue("infoport");<a name="line.500"></a>
+<span class="sourceLineNo">501</span>        conf.setInt("hbase.thrift.info.port", Integer.parseInt(val));<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        log.debug("Web UI port set to " + val);<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      }<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    } catch (NumberFormatException e) {<a name="line.504"></a>
+<span class="sourceLineNo">505</span>      log.error("Could not parse the value provided for the infoport option", e);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      printUsage();<a name="line.506"></a>
+<span class="sourceLineNo">507</span>      System.exit(1);<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
+<span class="sourceLineNo">509</span><a name="line.509"></a>
+<span class="sourceLineNo">510</span>    // Put up info server.<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    startInfoServer(conf);<a name="line.511"></a>
+<span class="sourceLineNo">512</span><a name="line.512"></a>
+<span class="sourceLineNo">513</span>    final TServer tserver = getServer(workerThreads, selectorThreads, maxCallQueueSize, readTimeout,<a name="line.513"></a>
+<span class="sourceLineNo">514</span>            backlog, nonblocking, hsha, selector, metrics, protocolFactory, processor,<a name="line.514"></a>
+<span class="sourceLineNo">515</span>            transportFactory, inetSocketAddress);<a name="line.515"></a>
+<span class="sourceLineNo">516</span><a name="line.516"></a>
+<span class="sourceLineNo">517</span>    realUser.doAs(<a name="line.517"></a>
+<span class="sourceLineNo">518</span>      new PrivilegedAction&lt;Object&gt;() {<a name="line.518"></a>
+<span class="sourceLineNo">519</span>        @Override<a name="line.519"></a>
+<span class="sourceLineNo">520</span>        public Object run() {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>          pauseMonitor.start();<a name="line.521"></a>
+<span class="sourceLineNo">522</span>          try {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>            tserver.serve();<a name="line.523"></a>
+<span class="sourceLineNo">524</span>            return null;<a name="line.524"></a>
+<span class="sourceLineNo">525</span>          } finally {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>            pauseMonitor.stop();<a name="line.526"></a>
+<span class="sourceLineNo">527</span>          }<a name="line.527"></a>
+<span class="sourceLineNo">528</span>        }<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      });<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    // when tserver.stop eventually happens we'll get here.<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    return 0;<a name="line.531"></a>
+<span class="sourceLineNo">532</span>  }<a name="line.532"></a>
+<span class="sourceLineNo">533</span><a name="line.533"></a>
+<span class="sourceLineNo">534</span>  private String getImplType(boolean nonblocking, boolean hsha, boolean selector) {<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    String implType = "threadpool";<a name="line.535"></a>
+<span class="sourceLineNo">536</span><a name="line.536"></a>
+<span class="sourceLineNo">537</span>    if (nonblocking) {<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      implType = "nonblocking";<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    } else if (hsha) {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>      implType = "hsha";<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    } else if (selector) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>      implType = "selector";<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
+<span class="sourceLineNo">544</span><a name="line.544"></a>
+<span class="sourceLineNo">545</span>    return implType;<a name="line.545"></a>
+<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
+<span class="sourceLineNo">547</span><a name="line.547"></a>
+<span class="sourceLineNo">548</span>  private boolean checkArguments(CommandLine cmd) {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    /*<a name="line.549"></a>
+<span class="sourceLineNo">550</span>     * This is to please both bin/hbase and bin/hbase-daemon. hbase-daemon provides "start" and<a name="line.550"></a>
+<span class="sourceLineNo">551</span>     * "stop" arguments hbase should print the help if no argument is provided<a name="line.551"></a>
+<span class="sourceLineNo">552</span>     */<a name="line.552"></a>
+<span class="sourceLineNo">553</span>    List&lt;?&gt; argList = cmd.getArgList();<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    if (cmd.hasOption("help") || !argList.contains("start") || argList.contains("stop")) {<a name="line.554"></a>
+<span class="sourceLineNo">555</span>      printUsage();<a name="line.555"></a>
+<span class="sourceLineNo">556</span>      return true;<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    }<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    return false;<a name="line.558"></a>
+<span class="sourceLineNo">559</span>  }<a name="line.559"></a>
 <span class="sourceLineNo">560</span><a name="line.560"></a>
-<span class="sourceLineNo">561</span>    if (nonblocking) {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      server = getTNonBlockingServer(protocolFactory,<a name="line.562"></a>
-<span class="sourceLineNo">563</span>          processor,<a name="line.563"></a>
-<span class="sourceLineNo">564</span>          transportFactory,<a name="line.564"></a>
-<span class="sourceLineNo">565</span>          inetSocketAddress);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>    } else if (hsha) {<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      server = getTHsHaServer(protocolFactory,<a name="line.567"></a>
-<span class="sourceLineNo">568</span>          processor,<a name="line.568"></a>
-<span class="sourceLineNo">569</span>          transportFactory,<a name="line.569"></a>
-<span class="sourceLineNo">570</span>          workerThreads,<a name="line.570"></a>
-<span class="sourceLineNo">571</span>          maxCallQueueSize,<a name="line.571"></a>
-<span class="sourceLineNo">572</span>          inetSocketAddress,<a name="line.572"></a>
-<span class="sourceLineNo">573</span>          metrics);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    } else if (selector) {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      server = getTThreadedSelectorServer(protocolFactory,<a name="line.575"></a>
-<span class="sourceLineNo">576</span>          processor,<a name="line.576"></a>
-<span class="sourceLineNo">577</span>          transportFactory,<a name="line.577"></a>
-<span class="sourceLineNo">578</span>          workerThreads,<a name="line.578"></a>
-<span class="sourceLineNo">579</span>          selectorThreads,<a name="line.579"></a>
-<span class="sourceLineNo">580</span>          maxCallQueueSize,<a name="line.580"></a>
-<span class="sourceLineNo">581</span>          inetSocketAddress,<a name="line.581"></a>
-<span class="sourceLineNo">582</span>          metrics);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>    } else {<a name="line.583"></a>
-<span class="sourceLineNo">584</span>      server = getTThreadPoolServer(protocolFactory,<a name="line.584"></a>
-<span class="sourceLineNo">585</span>          processor,<a name="line.585"></a>
-<span class="sourceLineNo">586</span>          transportFactory,<a name="line.586"></a>
-<span class="sourceLineNo">587</span>          workerThreads,<a name="line.587"></a>
-<span class="sourceLineNo">588</span>          inetSocketAddress,<a name="line.588"></a>
-<span class="sourceLineNo">589</span>          backlog,<a name="line.589"></a>
-<span class="sourceLineNo">590</span>          readTimeout,<a name="line.590"></a>
-<span class="sourceLineNo">591</span>          metrics);<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    }<a name="line.592"></a>
-<span class="sourceLineNo">593</span><a name="line.593"></a>
-<span class="sourceLineNo">594</span>    final TServer tserver = server;<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    realUser.doAs(<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      new PrivilegedAction&lt;Object&gt;() {<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        @Override<a name="line.597"></a>
-<span class="sourceLineNo">598</span>        public Object run() {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>          pauseMonitor.start();<a name="line.599"></a>
-<span class="sourceLineNo">600</span>          try {<a name="line.600"></a>
-<span class="sourceLineNo">601</span>            tserver.serve();<a name="line.601"></a>
-<span class="sourceLineNo">602</span>            return null;<a name="line.602"></a>
-<span class="sourceLineNo">603</span>          } finally {<a name="line.603"></a>
-<span class="sourceLineNo">604</span>            pauseMonitor.stop();<a name="line.604"></a>
-<span class="sourceLineNo">605</span>          }<a name="line.605"></a>
-<span class="sourceLineNo">606</span>        }<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      });<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    // when tserver.stop eventually happens we'll get here.<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    return 0;<a name="line.609"></a>
-<span class="sourceLineNo">610</span>  }<a name="line.610"></a>
-<span class="sourceLineNo">611</span>}<a name="line.611"></a>
+<span class="sourceLineNo">561</span>  private String getBindAddress(Configuration conf, CommandLine cmd) {<a name="line.561"></a>
+<span class="sourceLineNo">562</span>    String bindAddress;<a name="line.562"></a>
+<span class="sourceLineNo">563</span>    if (cmd.hasOption("bind")) {<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      bindAddress = cmd.getOptionValue("bind");<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      conf.set("hbase.thrift.info.bindAddress", bindAddress);<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    } else {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      bindAddress = conf.get("hbase.thrift.info.bindAddress");<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    }<a name="line.568"></a>
+<span class="sourceLineNo">569</span>    return bindAddress;<a name="line.569"></a>
+<span class="sourceLineNo">570</span>  }<a name="line.570"></a>
+<span class="sourceLineNo">571</span><a name="line.571"></a>
+<span class="sourceLineNo">572</span>  private int getListenPort(Configuration conf, CommandLine cmd) {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>    int listenPort;<a name="line.573"></a>
+<span class="sourceL

<TRUNCATED>

[08/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/project-info.html b/hbase-build-configuration/hbase-archetypes/project-info.html
index 0b3b0ef..e697e4e 100644
--- a/hbase-build-configuration/hbase-archetypes/project-info.html
+++ b/hbase-build-configuration/hbase-archetypes/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/project-summary.html b/hbase-build-configuration/hbase-archetypes/project-summary.html
index 13a5321..9bda866 100644
--- a/hbase-build-configuration/hbase-archetypes/project-summary.html
+++ b/hbase-build-configuration/hbase-archetypes/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -163,7 +163,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/source-repository.html b/hbase-build-configuration/hbase-archetypes/source-repository.html
index 0b1b8c2..6f72aca 100644
--- a/hbase-build-configuration/hbase-archetypes/source-repository.html
+++ b/hbase-build-configuration/hbase-archetypes/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-archetypes/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/team-list.html b/hbase-build-configuration/hbase-archetypes/team-list.html
index 264a263..13ab59c 100644
--- a/hbase-build-configuration/hbase-archetypes/team-list.html
+++ b/hbase-build-configuration/hbase-archetypes/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -553,7 +553,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-spark/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/checkstyle.html b/hbase-build-configuration/hbase-spark/checkstyle.html
index ca502e5..7576282 100644
--- a/hbase-build-configuration/hbase-spark/checkstyle.html
+++ b/hbase-build-configuration/hbase-spark/checkstyle.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -150,7 +150,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-spark/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/dependencies.html b/hbase-build-configuration/hbase-spark/dependencies.html
index 8b9a537..cb98054 100644
--- a/hbase-build-configuration/hbase-spark/dependencies.html
+++ b/hbase-build-configuration/hbase-spark/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -5692,7 +5692,7 @@ file comparators, endian transformation classes, and much more.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-spark/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/dependency-convergence.html b/hbase-build-configuration/hbase-spark/dependency-convergence.html
index 6dca143..89024b5 100644
--- a/hbase-build-configuration/hbase-spark/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-spark/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -912,7 +912,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-spark/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/dependency-info.html b/hbase-build-configuration/hbase-spark/dependency-info.html
index 7f6b2f2..08a1adb 100644
--- a/hbase-build-configuration/hbase-spark/dependency-info.html
+++ b/hbase-build-configuration/hbase-spark/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -147,7 +147,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-spark/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/dependency-management.html b/hbase-build-configuration/hbase-spark/dependency-management.html
index 22a9d11..c842a5e 100644
--- a/hbase-build-configuration/hbase-spark/dependency-management.html
+++ b/hbase-build-configuration/hbase-spark/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-spark/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/index.html b/hbase-build-configuration/hbase-spark/index.html
index 6c09bb3..7e697da 100644
--- a/hbase-build-configuration/hbase-spark/index.html
+++ b/hbase-build-configuration/hbase-spark/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-spark/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/integration.html b/hbase-build-configuration/hbase-spark/integration.html
index 3cec330..b7ef11c 100644
--- a/hbase-build-configuration/hbase-spark/integration.html
+++ b/hbase-build-configuration/hbase-spark/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-spark/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/issue-tracking.html b/hbase-build-configuration/hbase-spark/issue-tracking.html
index 1018970..25e169b 100644
--- a/hbase-build-configuration/hbase-spark/issue-tracking.html
+++ b/hbase-build-configuration/hbase-spark/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-spark/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/license.html b/hbase-build-configuration/hbase-spark/license.html
index 083a197..bc1668b 100644
--- a/hbase-build-configuration/hbase-spark/license.html
+++ b/hbase-build-configuration/hbase-spark/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-spark/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/mail-lists.html b/hbase-build-configuration/hbase-spark/mail-lists.html
index 782e940..be62da6 100644
--- a/hbase-build-configuration/hbase-spark/mail-lists.html
+++ b/hbase-build-configuration/hbase-spark/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-spark/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/plugin-management.html b/hbase-build-configuration/hbase-spark/plugin-management.html
index cf422e6..caa7fce 100644
--- a/hbase-build-configuration/hbase-spark/plugin-management.html
+++ b/hbase-build-configuration/hbase-spark/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-spark/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/plugins.html b/hbase-build-configuration/hbase-spark/plugins.html
index 2d777d1..26fbb67 100644
--- a/hbase-build-configuration/hbase-spark/plugins.html
+++ b/hbase-build-configuration/hbase-spark/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -238,7 +238,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-spark/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/project-info.html b/hbase-build-configuration/hbase-spark/project-info.html
index 9b21027..b823c60 100644
--- a/hbase-build-configuration/hbase-spark/project-info.html
+++ b/hbase-build-configuration/hbase-spark/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-spark/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/project-reports.html b/hbase-build-configuration/hbase-spark/project-reports.html
index 709a9ae..ce6b1d4 100644
--- a/hbase-build-configuration/hbase-spark/project-reports.html
+++ b/hbase-build-configuration/hbase-spark/project-reports.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -131,7 +131,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-spark/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/project-summary.html b/hbase-build-configuration/hbase-spark/project-summary.html
index 1fc854b..105e2c6 100644
--- a/hbase-build-configuration/hbase-spark/project-summary.html
+++ b/hbase-build-configuration/hbase-spark/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-spark/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/source-repository.html b/hbase-build-configuration/hbase-spark/source-repository.html
index a7907e0..cb3bad7 100644
--- a/hbase-build-configuration/hbase-spark/source-repository.html
+++ b/hbase-build-configuration/hbase-spark/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/hbase-spark/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/team-list.html b/hbase-build-configuration/hbase-spark/team-list.html
index d55b2ca..a722a93 100644
--- a/hbase-build-configuration/hbase-spark/team-list.html
+++ b/hbase-build-configuration/hbase-spark/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -553,7 +553,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/index.html b/hbase-build-configuration/index.html
index 636c943..470e8d5 100644
--- a/hbase-build-configuration/index.html
+++ b/hbase-build-configuration/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/integration.html b/hbase-build-configuration/integration.html
index 1186f92..bffdf28 100644
--- a/hbase-build-configuration/integration.html
+++ b/hbase-build-configuration/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/issue-tracking.html b/hbase-build-configuration/issue-tracking.html
index 1a54892..07b6d95 100644
--- a/hbase-build-configuration/issue-tracking.html
+++ b/hbase-build-configuration/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/license.html b/hbase-build-configuration/license.html
index 37423da..3a92f91 100644
--- a/hbase-build-configuration/license.html
+++ b/hbase-build-configuration/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/mail-lists.html b/hbase-build-configuration/mail-lists.html
index 3b4d29b..200f34e 100644
--- a/hbase-build-configuration/mail-lists.html
+++ b/hbase-build-configuration/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/plugin-management.html b/hbase-build-configuration/plugin-management.html
index cbf38cf..a9c8390 100644
--- a/hbase-build-configuration/plugin-management.html
+++ b/hbase-build-configuration/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/plugins.html b/hbase-build-configuration/plugins.html
index e381030..a5d6b5e 100644
--- a/hbase-build-configuration/plugins.html
+++ b/hbase-build-configuration/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -214,7 +214,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/project-info.html b/hbase-build-configuration/project-info.html
index 1b33b1a..5cb2a01 100644
--- a/hbase-build-configuration/project-info.html
+++ b/hbase-build-configuration/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/project-summary.html b/hbase-build-configuration/project-summary.html
index 288820b..2c464fa 100644
--- a/hbase-build-configuration/project-summary.html
+++ b/hbase-build-configuration/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -163,7 +163,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/source-repository.html b/hbase-build-configuration/source-repository.html
index ff73e34..e09d569 100644
--- a/hbase-build-configuration/source-repository.html
+++ b/hbase-build-configuration/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-build-configuration/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/team-list.html b/hbase-build-configuration/team-list.html
index 611e47f..4c21863 100644
--- a/hbase-build-configuration/team-list.html
+++ b/hbase-build-configuration/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -553,7 +553,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-shaded-check-invariants/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/checkstyle.html b/hbase-shaded-check-invariants/checkstyle.html
index d28ee7a..e87a6d6 100644
--- a/hbase-shaded-check-invariants/checkstyle.html
+++ b/hbase-shaded-check-invariants/checkstyle.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -150,7 +150,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-shaded-check-invariants/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/dependencies.html b/hbase-shaded-check-invariants/dependencies.html
index a3c74d0..35aca6e 100644
--- a/hbase-shaded-check-invariants/dependencies.html
+++ b/hbase-shaded-check-invariants/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -2883,7 +2883,7 @@ Jackson JSON processor's data binding functionality.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-shaded-check-invariants/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/dependency-convergence.html b/hbase-shaded-check-invariants/dependency-convergence.html
index eba0e62..cb04f5e 100644
--- a/hbase-shaded-check-invariants/dependency-convergence.html
+++ b/hbase-shaded-check-invariants/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -912,7 +912,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-shaded-check-invariants/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/dependency-info.html b/hbase-shaded-check-invariants/dependency-info.html
index 4529fa8..45f0a4d 100644
--- a/hbase-shaded-check-invariants/dependency-info.html
+++ b/hbase-shaded-check-invariants/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -148,7 +148,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-shaded-check-invariants/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/dependency-management.html b/hbase-shaded-check-invariants/dependency-management.html
index 3c545c3..4208e1a 100644
--- a/hbase-shaded-check-invariants/dependency-management.html
+++ b/hbase-shaded-check-invariants/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-shaded-check-invariants/index.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/index.html b/hbase-shaded-check-invariants/index.html
index a13e75b..a7868c9 100644
--- a/hbase-shaded-check-invariants/index.html
+++ b/hbase-shaded-check-invariants/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -122,7 +122,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-shaded-check-invariants/integration.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/integration.html b/hbase-shaded-check-invariants/integration.html
index f526718..475daf7 100644
--- a/hbase-shaded-check-invariants/integration.html
+++ b/hbase-shaded-check-invariants/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-shaded-check-invariants/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/issue-tracking.html b/hbase-shaded-check-invariants/issue-tracking.html
index a283a16..9fa9daf 100644
--- a/hbase-shaded-check-invariants/issue-tracking.html
+++ b/hbase-shaded-check-invariants/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-shaded-check-invariants/license.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/license.html b/hbase-shaded-check-invariants/license.html
index cfe60d8..c32a93e 100644
--- a/hbase-shaded-check-invariants/license.html
+++ b/hbase-shaded-check-invariants/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-shaded-check-invariants/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/mail-lists.html b/hbase-shaded-check-invariants/mail-lists.html
index 1572048..7271383 100644
--- a/hbase-shaded-check-invariants/mail-lists.html
+++ b/hbase-shaded-check-invariants/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-shaded-check-invariants/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/plugin-management.html b/hbase-shaded-check-invariants/plugin-management.html
index c6849c2..87b0b34 100644
--- a/hbase-shaded-check-invariants/plugin-management.html
+++ b/hbase-shaded-check-invariants/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-shaded-check-invariants/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/plugins.html b/hbase-shaded-check-invariants/plugins.html
index f2fbd2b..61f531d 100644
--- a/hbase-shaded-check-invariants/plugins.html
+++ b/hbase-shaded-check-invariants/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -218,7 +218,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-shaded-check-invariants/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/project-info.html b/hbase-shaded-check-invariants/project-info.html
index a58fdb3..07dffe1 100644
--- a/hbase-shaded-check-invariants/project-info.html
+++ b/hbase-shaded-check-invariants/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -170,7 +170,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-shaded-check-invariants/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/project-reports.html b/hbase-shaded-check-invariants/project-reports.html
index 170a943..2440922 100644
--- a/hbase-shaded-check-invariants/project-reports.html
+++ b/hbase-shaded-check-invariants/project-reports.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -128,7 +128,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-shaded-check-invariants/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/project-summary.html b/hbase-shaded-check-invariants/project-summary.html
index 7c28ee7..bb45290 100644
--- a/hbase-shaded-check-invariants/project-summary.html
+++ b/hbase-shaded-check-invariants/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-shaded-check-invariants/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/source-repository.html b/hbase-shaded-check-invariants/source-repository.html
index a0e72c9..25661c2 100644
--- a/hbase-shaded-check-invariants/source-repository.html
+++ b/hbase-shaded-check-invariants/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/hbase-shaded-check-invariants/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/team-list.html b/hbase-shaded-check-invariants/team-list.html
index 081371a..cfea414 100644
--- a/hbase-shaded-check-invariants/team-list.html
+++ b/hbase-shaded-check-invariants/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -553,7 +553,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index fee4cf2..2fc848d 100644
--- a/index.html
+++ b/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBaseâ„¢ Home</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -438,7 +438,7 @@ Apache HBase is an open-source, distributed, versioned, non-relational database
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index 27f8daa..acb3c83 100644
--- a/integration.html
+++ b/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -296,7 +296,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index 73ade8a..1ffb05a 100644
--- a/issue-tracking.html
+++ b/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -293,7 +293,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index 2ed6430..4c946ea 100644
--- a/license.html
+++ b/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -496,7 +496,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index bee98aa..21d2a0d 100644
--- a/mail-lists.html
+++ b/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -346,7 +346,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index e27097f..deb38a5 100644
--- a/metrics.html
+++ b/metrics.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -464,7 +464,7 @@ export HBASE_REGIONSERVER_OPTS=&quot;$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index 1f243c4..d90ddbf 100644
--- a/old_news.html
+++ b/old_news.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -419,7 +419,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index e586c96..a80ac34 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -441,7 +441,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index 6a8c048..e6ae301 100644
--- a/plugins.html
+++ b/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -380,7 +380,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 52e028d..c7343db 100644
--- a/poweredbyhbase.html
+++ b/poweredbyhbase.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Powered By Apache HBase™</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -774,7 +774,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index 439af4e..2f56a58 100644
--- a/project-info.html
+++ b/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -340,7 +340,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index a3b57ea..fb8a70b 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -310,7 +310,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index 52fdaea..207bccb 100644
--- a/project-summary.html
+++ b/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -336,7 +336,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 5ace3ac..6eb1fb1 100644
--- a/pseudo-distributed.html
+++ b/pseudo-distributed.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -313,7 +313,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index 7d966db..68ddfa8 100644
--- a/replication.html
+++ b/replication.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -308,7 +308,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index c083db5..2c61ebe 100644
--- a/resources.html
+++ b/resources.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Other Apache HBase (TM) Resources</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -336,7 +336,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index 39a378f..98832c9 100644
--- a/source-repository.html
+++ b/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -304,7 +304,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index abf073c..f9413a5 100644
--- a/sponsors.html
+++ b/sponsors.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase™ Sponsors</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -338,7 +338,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index a40f628..e12cab3 100644
--- a/supportingprojects.html
+++ b/supportingprojects.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Supporting Projects</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -525,7 +525,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index 6a7402b..3127b13 100644
--- a/team-list.html
+++ b/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -723,7 +723,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 


[35/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index a59406c..316d1cd 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -289,7 +289,7 @@
 <td>3470</td>
 <td>0</td>
 <td>0</td>
-<td>18827</td></tr></table></div>
+<td>18322</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -2304,6666 +2304,6606 @@
 <td>0</td>
 <td>4</td></tr>
 <tr class="a">
-<td><a href="#org.apache.hadoop.hbase.client.TestRpcControllerFactory.java">org/apache/hadoop/hbase/client/TestRpcControllerFactory.java</a></td>
+<td><a href="#org.apache.hadoop.hbase.client.TestReversedScannerCallable.java">org/apache/hadoop/hbase/client/TestReversedScannerCallable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
 <tr class="b">
+<td><a href="#org.apache.hadoop.hbase.client.TestRpcControllerFactory.java">org/apache/hadoop/hbase/client/TestRpcControllerFactory.java</a></td>
+<td>0</td>
+<td>0</td>
+<td>1</td></tr>
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestScan.java">org/apache/hadoop/hbase/client/TestScan.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestScanWithoutFetchingData.java">org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestScannerTimeout.java">org/apache/hadoop/hbase/client/TestScannerTimeout.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestScannersFromClientSide.java">org/apache/hadoop/hbase/client/TestScannersFromClientSide.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>20</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestScannersFromClientSide2.java">org/apache/hadoop/hbase/client/TestScannersFromClientSide2.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestServerBusyException.java">org/apache/hadoop/hbase/client/TestServerBusyException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestShortCircuitConnection.java">org/apache/hadoop/hbase/client/TestShortCircuitConnection.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestSizeFailures.java">org/apache/hadoop/hbase/client/TestSizeFailures.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestSmallReversedScanner.java">org/apache/hadoop/hbase/client/TestSmallReversedScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestSnapshotCloneIndependence.java">org/apache/hadoop/hbase/client/TestSnapshotCloneIndependence.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestSnapshotFromAdmin.java">org/apache/hadoop/hbase/client/TestSnapshotFromAdmin.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestSnapshotFromClient.java">org/apache/hadoop/hbase/client/TestSnapshotFromClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestSnapshotMetadata.java">org/apache/hadoop/hbase/client/TestSnapshotMetadata.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestSnapshotWithAcl.java">org/apache/hadoop/hbase/client/TestSnapshotWithAcl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestSplitOrMergeStatus.java">org/apache/hadoop/hbase/client/TestSplitOrMergeStatus.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestTableDescriptorBuilder.java">org/apache/hadoop/hbase/client/TestTableDescriptorBuilder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestTableFavoredNodes.java">org/apache/hadoop/hbase/client/TestTableFavoredNodes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestTableSnapshotScanner.java">org/apache/hadoop/hbase/client/TestTableSnapshotScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestTimestampsFilter.java">org/apache/hadoop/hbase/client/TestTimestampsFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>18</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestUpdateConfiguration.java">org/apache/hadoop/hbase/client/TestUpdateConfiguration.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.VersionInfoUtil.java">org/apache/hadoop/hbase/client/VersionInfoUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.backoff.ClientBackoffPolicyFactory.java">org/apache/hadoop/hbase/client/backoff/ClientBackoffPolicyFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.backoff.ServerStatistics.java">org/apache/hadoop/hbase/client/backoff/ServerStatistics.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.coprocessor.AggregationClient.java">org/apache/hadoop/hbase/client/coprocessor/AggregationClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>94</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.coprocessor.AggregationHelper.java">org/apache/hadoop/hbase/client/coprocessor/AggregationHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.coprocessor.AsyncAggregationClient.java">org/apache/hadoop/hbase/client/coprocessor/AsyncAggregationClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.coprocessor.BigDecimalColumnInterpreter.java">org/apache/hadoop/hbase/client/coprocessor/BigDecimalColumnInterpreter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.coprocessor.DoubleColumnInterpreter.java">org/apache/hadoop/hbase/client/coprocessor/DoubleColumnInterpreter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.coprocessor.LongColumnInterpreter.java">org/apache/hadoop/hbase/client/coprocessor/LongColumnInterpreter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.coprocessor.RowProcessorClient.java">org/apache/hadoop/hbase/client/coprocessor/RowProcessorClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.coprocessor.package-info.java">org/apache/hadoop/hbase/client/coprocessor/package-info.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.example.ExportEndpointExample.java">org/apache/hadoop/hbase/client/example/ExportEndpointExample.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.example.RefreshHFilesClient.java">org/apache/hadoop/hbase/client/example/RefreshHFilesClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.example.TestHttpProxyExample.java">org/apache/hadoop/hbase/client/example/TestHttpProxyExample.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.locking.EntityLock.java">org/apache/hadoop/hbase/client/locking/EntityLock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.locking.TestEntityLocks.java">org/apache/hadoop/hbase/client/locking/TestEntityLocks.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.metrics.ScanMetrics.java">org/apache/hadoop/hbase/client/metrics/ScanMetrics.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.metrics.ServerSideScanMetrics.java">org/apache/hadoop/hbase/client/metrics/ServerSideScanMetrics.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.replication.ReplicationAdmin.java">org/apache/hadoop/hbase/client/replication/ReplicationAdmin.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>33</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.replication.ReplicationPeerConfigUtil.java">org/apache/hadoop/hbase/client/replication/ReplicationPeerConfigUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.replication.TableCFs.java">org/apache/hadoop/hbase/client/replication/TableCFs.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.replication.TestReplicationAdmin.java">org/apache/hadoop/hbase/client/replication/TestReplicationAdmin.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.codec.BaseDecoder.java">org/apache/hadoop/hbase/codec/BaseDecoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.codec.BaseEncoder.java">org/apache/hadoop/hbase/codec/BaseEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.codec.CellCodec.java">org/apache/hadoop/hbase/codec/CellCodec.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.codec.CellCodecWithTags.java">org/apache/hadoop/hbase/codec/CellCodecWithTags.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.codec.CodecPerformance.java">org/apache/hadoop/hbase/codec/CodecPerformance.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.codec.MessageCodec.java">org/apache/hadoop/hbase/codec/MessageCodec.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.codec.TestCellCodecWithTags.java">org/apache/hadoop/hbase/codec/TestCellCodecWithTags.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.codec.TestCellMessageCodec.java">org/apache/hadoop/hbase/codec/TestCellMessageCodec.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.codec.TestKeyValueCodecWithTags.java">org/apache/hadoop/hbase/codec/TestKeyValueCodecWithTags.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.conf.ConfigurationManager.java">org/apache/hadoop/hbase/conf/ConfigurationManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.constraint.BaseConstraint.java">org/apache/hadoop/hbase/constraint/BaseConstraint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.constraint.CheckConfigurationConstraint.java">org/apache/hadoop/hbase/constraint/CheckConfigurationConstraint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.constraint.Constraint.java">org/apache/hadoop/hbase/constraint/Constraint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.constraint.ConstraintException.java">org/apache/hadoop/hbase/constraint/ConstraintException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.constraint.ConstraintProcessor.java">org/apache/hadoop/hbase/constraint/ConstraintProcessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.constraint.Constraints.java">org/apache/hadoop/hbase/constraint/Constraints.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.constraint.TestConstraint.java">org/apache/hadoop/hbase/constraint/TestConstraint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.constraint.TestConstraints.java">org/apache/hadoop/hbase/constraint/TestConstraints.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.constraint.package-info.java">org/apache/hadoop/hbase/constraint/package-info.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>61</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coordination.SplitLogManagerCoordination.java">org/apache/hadoop/hbase/coordination/SplitLogManagerCoordination.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coordination.SplitLogWorkerCoordination.java">org/apache/hadoop/hbase/coordination/SplitLogWorkerCoordination.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coordination.ZKSplitLogManagerCoordination.java">org/apache/hadoop/hbase/coordination/ZKSplitLogManagerCoordination.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coordination.ZkCoordinatedStateManager.java">org/apache/hadoop/hbase/coordination/ZkCoordinatedStateManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coordination.ZkSplitLogWorkerCoordination.java">org/apache/hadoop/hbase/coordination/ZkSplitLogWorkerCoordination.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.AggregateImplementation.java">org/apache/hadoop/hbase/coprocessor/AggregateImplementation.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.BaseEnvironment.java">org/apache/hadoop/hbase/coprocessor/BaseEnvironment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.BaseRowProcessorEndpoint.java">org/apache/hadoop/hbase/coprocessor/BaseRowProcessorEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.BulkLoadObserver.java">org/apache/hadoop/hbase/coprocessor/BulkLoadObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.ColumnAggregationEndpoint.java">org/apache/hadoop/hbase/coprocessor/ColumnAggregationEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.ColumnAggregationEndpointNullResponse.java">org/apache/hadoop/hbase/coprocessor/ColumnAggregationEndpointNullResponse.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.ColumnAggregationEndpointWithErrors.java">org/apache/hadoop/hbase/coprocessor/ColumnAggregationEndpointWithErrors.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.ColumnInterpreter.java">org/apache/hadoop/hbase/coprocessor/ColumnInterpreter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>21</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.CoprocessorException.java">org/apache/hadoop/hbase/coprocessor/CoprocessorException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.CoprocessorHost.java">org/apache/hadoop/hbase/coprocessor/CoprocessorHost.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.CoprocessorService.java">org/apache/hadoop/hbase/coprocessor/CoprocessorService.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.CoprocessorServiceBackwardCompatiblity.java">org/apache/hadoop/hbase/coprocessor/CoprocessorServiceBackwardCompatiblity.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.CoreCoprocessor.java">org/apache/hadoop/hbase/coprocessor/CoreCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.EndpointObserver.java">org/apache/hadoop/hbase/coprocessor/EndpointObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.Export.java">org/apache/hadoop/hbase/coprocessor/Export.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>17</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.HasMasterServices.java">org/apache/hadoop/hbase/coprocessor/HasMasterServices.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.HasRegionServerServices.java">org/apache/hadoop/hbase/coprocessor/HasRegionServerServices.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.MasterCoprocessor.java">org/apache/hadoop/hbase/coprocessor/MasterCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.MasterObserver.java">org/apache/hadoop/hbase/coprocessor/MasterObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>20</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.MetricsCoprocessor.java">org/apache/hadoop/hbase/coprocessor/MetricsCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.MultiRowMutationEndpoint.java">org/apache/hadoop/hbase/coprocessor/MultiRowMutationEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.ObserverContext.java">org/apache/hadoop/hbase/coprocessor/ObserverContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.ObserverContextImpl.java">org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.ProtobufCoprocessorService.java">org/apache/hadoop/hbase/coprocessor/ProtobufCoprocessorService.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.RegionCoprocessor.java">org/apache/hadoop/hbase/coprocessor/RegionCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment.java">org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.RegionObserver.java">org/apache/hadoop/hbase/coprocessor/RegionObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>22</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessor.java">org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.RegionServerObserver.java">org/apache/hadoop/hbase/coprocessor/RegionServerObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.SimpleRegionObserver.java">org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.SingletonCoprocessorService.java">org/apache/hadoop/hbase/coprocessor/SingletonCoprocessorService.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestAsyncCoprocessorEndpoint.java">org/apache/hadoop/hbase/coprocessor/TestAsyncCoprocessorEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestBatchCoprocessorEndpoint.java">org/apache/hadoop/hbase/coprocessor/TestBatchCoprocessorEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestClassLoading.java">org/apache/hadoop/hbase/coprocessor/TestClassLoading.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoprocessorConfiguration.java">org/apache/hadoop/hbase/coprocessor/TestCoprocessorConfiguration.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoprocessorEndpoint.java">org/apache/hadoop/hbase/coprocessor/TestCoprocessorEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoprocessorHost.java">org/apache/hadoop/hbase/coprocessor/TestCoprocessorHost.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoprocessorInterface.java">org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoprocessorMetrics.java">org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoprocessorServiceBackwardCompatibility.java">org/apache/hadoop/hbase/coprocessor/TestCoprocessorServiceBackwardCompatibility.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoprocessorShortCircuitRPC.java">org/apache/hadoop/hbase/coprocessor/TestCoprocessorShortCircuitRPC.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoprocessorStop.java">org/apache/hadoop/hbase/coprocessor/TestCoprocessorStop.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoprocessorTableEndpoint.java">org/apache/hadoop/hbase/coprocessor/TestCoprocessorTableEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoreMasterCoprocessor.java">org/apache/hadoop/hbase/coprocessor/TestCoreMasterCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoreRegionCoprocessor.java">org/apache/hadoop/hbase/coprocessor/TestCoreRegionCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoreRegionServerCoprocessor.java">org/apache/hadoop/hbase/coprocessor/TestCoreRegionServerCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestMasterCoprocessorExceptionWithAbort.java">org/apache/hadoop/hbase/coprocessor/TestMasterCoprocessorExceptionWithAbort.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestMasterCoprocessorExceptionWithRemove.java">org/apache/hadoop/hbase/coprocessor/TestMasterCoprocessorExceptionWithRemove.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestMasterObserver.java">org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestNegativeMemStoreSizeWithSlowCoprocessor.java">org/apache/hadoop/hbase/coprocessor/TestNegativeMemStoreSizeWithSlowCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestOpenTableInCoprocessor.java">org/apache/hadoop/hbase/coprocessor/TestOpenTableInCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionObserverBypass.java">org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionObserverForAddingMutationsFromCoprocessors.java">org/apache/hadoop/hbase/coprocessor/TestRegionObserverForAddingMutationsFromCoprocessors.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionObserverInterface.java">org/apache/hadoop/hbase/coprocessor/TestRegionObserverInterface.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>27</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionObserverPreFlushAndPreCompact.java">org/apache/hadoop/hbase/coprocessor/TestRegionObserverPreFlushAndPreCompact.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionObserverScannerOpenHook.java">org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionObserverStacking.java">org/apache/hadoop/hbase/coprocessor/TestRegionObserverStacking.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionServerCoprocessorEndpoint.java">org/apache/hadoop/hbase/coprocessor/TestRegionServerCoprocessorEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionServerCoprocessorExceptionWithAbort.java">org/apache/hadoop/hbase/coprocessor/TestRegionServerCoprocessorExceptionWithAbort.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionServerCoprocessorExceptionWithRemove.java">org/apache/hadoop/hbase/coprocessor/TestRegionServerCoprocessorExceptionWithRemove.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRowProcessorEndpoint.java">org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestSecureExport.java">org/apache/hadoop/hbase/coprocessor/TestSecureExport.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>20</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestWALObserver.java">org/apache/hadoop/hbase/coprocessor/TestWALObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.WALCoprocessor.java">org/apache/hadoop/hbase/coprocessor/WALCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.WALCoprocessorEnvironment.java">org/apache/hadoop/hbase/coprocessor/WALCoprocessorEnvironment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.WALObserver.java">org/apache/hadoop/hbase/coprocessor/WALObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.example.BulkDeleteEndpoint.java">org/apache/hadoop/hbase/coprocessor/example/BulkDeleteEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.example.ExampleMasterObserverWithMetrics.java">org/apache/hadoop/hbase/coprocessor/example/ExampleMasterObserverWithMetrics.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.example.RefreshHFilesEndpoint.java">org/apache/hadoop/hbase/coprocessor/example/RefreshHFilesEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.example.RowCountEndpoint.java">org/apache/hadoop/hbase/coprocessor/example/RowCountEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.example.TestRefreshHFilesEndpoint.java">org/apache/hadoop/hbase/coprocessor/example/TestRefreshHFilesEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.package-info.java">org/apache/hadoop/hbase/coprocessor/package-info.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.errorhandling.ForeignException.java">org/apache/hadoop/hbase/errorhandling/ForeignException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher.java">org/apache/hadoop/hbase/errorhandling/ForeignExceptionDispatcher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.errorhandling.TestForeignExceptionDispatcher.java">org/apache/hadoop/hbase/errorhandling/TestForeignExceptionDispatcher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.errorhandling.TestForeignExceptionSerialization.java">org/apache/hadoop/hbase/errorhandling/TestForeignExceptionSerialization.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.errorhandling.TimeoutExceptionInjector.java">org/apache/hadoop/hbase/errorhandling/TimeoutExceptionInjector.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.exceptions.ClientExceptionsUtil.java">org/apache/hadoop/hbase/exceptions/ClientExceptionsUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.exceptions.FailedSanityCheckException.java">org/apache/hadoop/hbase/exceptions/FailedSanityCheckException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.exceptions.MergeRegionException.java">org/apache/hadoop/hbase/exceptions/MergeRegionException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.exceptions.TestClientExceptionsUtil.java">org/apache/hadoop/hbase/exceptions/TestClientExceptionsUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.executor.EventHandler.java">org/apache/hadoop/hbase/executor/EventHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.executor.EventType.java">org/apache/hadoop/hbase/executor/EventType.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>38</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.executor.ExecutorService.java">org/apache/hadoop/hbase/executor/ExecutorService.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.executor.ExecutorType.java">org/apache/hadoop/hbase/executor/ExecutorType.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>18</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.executor.TestExecutorService.java">org/apache/hadoop/hbase/executor/TestExecutorService.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.favored.FavoredNodeAssignmentHelper.java">org/apache/hadoop/hbase/favored/FavoredNodeAssignmentHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>27</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.favored.FavoredNodeLoadBalancer.java">org/apache/hadoop/hbase/favored/FavoredNodeLoadBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.favored.FavoredNodesPlan.java">org/apache/hadoop/hbase/favored/FavoredNodesPlan.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.favored.FavoredNodesPromoter.java">org/apache/hadoop/hbase/favored/FavoredNodesPromoter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.favored.StartcodeAgnosticServerName.java">org/apache/hadoop/hbase/favored/StartcodeAgnosticServerName.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.favored.TestFavoredNodeAssignmentHelper.java">org/apache/hadoop/hbase/favored/TestFavoredNodeAssignmentHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.BigDecimalComparator.java">org/apache/hadoop/hbase/filter/BigDecimalComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.BinaryComparator.java">org/apache/hadoop/hbase/filter/BinaryComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.BinaryPrefixComparator.java">org/apache/hadoop/hbase/filter/BinaryPrefixComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.BitComparator.java">org/apache/hadoop/hbase/filter/BitComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.ByteArrayComparable.java">org/apache/hadoop/hbase/filter/ByteArrayComparable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.ColumnCountGetFilter.java">org/apache/hadoop/hbase/filter/ColumnCountGetFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.ColumnPaginationFilter.java">org/apache/hadoop/hbase/filter/ColumnPaginationFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.ColumnPrefixFilter.java">org/apache/hadoop/hbase/filter/ColumnPrefixFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.ColumnRangeFilter.java">org/apache/hadoop/hbase/filter/ColumnRangeFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>21</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.CompareFilter.java">org/apache/hadoop/hbase/filter/CompareFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.DependentColumnFilter.java">org/apache/hadoop/hbase/filter/DependentColumnFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.FamilyFilter.java">org/apache/hadoop/hbase/filter/FamilyFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.Filter.java">org/apache/hadoop/hbase/filter/Filter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterAllFilter.java">org/apache/hadoop/hbase/filter/FilterAllFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterBase.java">org/apache/hadoop/hbase/filter/FilterBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterList.java">org/apache/hadoop/hbase/filter/FilterList.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterListBase.java">org/apache/hadoop/hbase/filter/FilterListBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterListWithAND.java">org/apache/hadoop/hbase/filter/FilterListWithAND.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterListWithOR.java">org/apache/hadoop/hbase/filter/FilterListWithOR.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>100</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterTestingCluster.java">org/apache/hadoop/hbase/filter/FilterTestingCluster.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterWrapper.java">org/apache/hadoop/hbase/filter/FilterWrapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter.java">org/apache/hadoop/hbase/filter/FirstKeyOnlyFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.FirstKeyValueMatchingQualifiersFilter.java">org/apache/hadoop/hbase/filter/FirstKeyValueMatchingQualifiersFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.FuzzyRowFilter.java">org/apache/hadoop/hbase/filter/FuzzyRowFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>20</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.InclusiveStopFilter.java">org/apache/hadoop/hbase/filter/InclusiveStopFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.KeyOnlyFilter.java">org/apache/hadoop/hbase/filter/KeyOnlyFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.LongComparator.java">org/apache/hadoop/hbase/filter/LongComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>25</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.MultiRowRangeFilter.java">org/apache/hadoop/hbase/filter/MultiRowRangeFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.MultipleColumnPrefixFilter.java">org/apache/hadoop/hbase/filter/MultipleColumnPrefixFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.NullComparator.java">org/apache/hadoop/hbase/filter/NullComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.PageFilter.java">org/apache/hadoop/hbase/filter/PageFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.ParseConstants.java">org/apache/hadoop/hbase/filter/ParseConstants.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.ParseFilter.java">org/apache/hadoop/hbase/filter/ParseFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>48</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.PrefixFilter.java">org/apache/hadoop/hbase/filter/PrefixFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.QualifierFilter.java">org/apache/hadoop/hbase/filter/QualifierFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.RandomRowFilter.java">org/apache/hadoop/hbase/filter/RandomRowFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.RegexStringComparator.java">org/apache/hadoop/hbase/filter/RegexStringComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.RowFilter.java">org/apache/hadoop/hbase/filter/RowFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.SingleColumnValueExcludeFilter.java">org/apache/hadoop/hbase/filter/SingleColumnValueExcludeFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>22</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.SingleColumnValueFilter.java">org/apache/hadoop/hbase/filter/SingleColumnValueFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>22</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.SkipFilter.java">org/apache/hadoop/hbase/filter/SkipFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.SubstringComparator.java">org/apache/hadoop/hbase/filter/SubstringComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestBitComparator.java">org/apache/hadoop/hbase/filter/TestBitComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestColumnPaginationFilter.java">org/apache/hadoop/hbase/filter/TestColumnPaginationFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>41</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestColumnPrefixFilter.java">org/apache/hadoop/hbase/filter/TestColumnPrefixFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestColumnRangeFilter.java">org/apache/hadoop/hbase/filter/TestColumnRangeFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestComparatorSerialization.java">org/apache/hadoop/hbase/filter/TestComparatorSerialization.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestComparators.java">org/apache/hadoop/hbase/filter/TestComparators.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestDependentColumnFilter.java">org/apache/hadoop/hbase/filter/TestDependentColumnFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilter.java">org/apache/hadoop/hbase/filter/TestFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>349</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilterFromRegionSide.java">org/apache/hadoop/hbase/filter/TestFilterFromRegionSide.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilterList.java">org/apache/hadoop/hbase/filter/TestFilterList.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>19</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilterListOnMini.java">org/apache/hadoop/hbase/filter/TestFilterListOnMini.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilterListOrOperatorWithBlkCnt.java">org/apache/hadoop/hbase/filter/TestFilterListOrOperatorWithBlkCnt.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilterSerialization.java">org/apache/hadoop/hbase/filter/TestFilterSerialization.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilterWithScanLimits.java">org/apache/hadoop/hbase/filter/TestFilterWithScanLimits.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilterWrapper.java">org/apache/hadoop/hbase/filter/TestFilterWrapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFirstKeyValueMatchingQualifiersFilter.java">org/apache/hadoop/hbase/filter/TestFirstKeyValueMatchingQualifiersFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFuzzyRowAndColumnRangeFilter.java">org/apache/hadoop/hbase/filter/TestFuzzyRowAndColumnRangeFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFuzzyRowFilterEndToEnd.java">org/apache/hadoop/hbase/filter/TestFuzzyRowFilterEndToEnd.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>22</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestInclusiveStopFilter.java">org/apache/hadoop/hbase/filter/TestInclusiveStopFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestLongComparator.java">org/apache/hadoop/hbase/filter/TestLongComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestMultiRowRangeFilter.java">org/apache/hadoop/hbase/filter/TestMultiRowRangeFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestMultipleColumnPrefixFilter.java">org/apache/hadoop/hbase/filter/TestMultipleColumnPrefixFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestNullComparator.java">org/apache/hadoop/hbase/filter/TestNullComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestPageFilter.java">org/apache/hadoop/hbase/filter/TestPageFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestParseFilter.java">org/apache/hadoop/hbase/filter/TestParseFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestPrefixFilter.java">org/apache/hadoop/hbase/filter/TestPrefixFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestRandomRowFilter.java">org/apache/hadoop/hbase/filter/TestRandomRowFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestRegexComparator.java">org/apache/hadoop/hbase/filter/TestRegexComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestScanRowPrefix.java">org/apache/hadoop/hbase/filter/TestScanRowPrefix.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestSingleColumnValueExcludeFilter.java">org/apache/hadoop/hbase/filter/TestSingleColumnValueExcludeFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestSingleColumnValueFilter.java">org/apache/hadoop/hbase/filter/TestSingleColumnValueFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TimestampsFilter.java">org/apache/hadoop/hbase/filter/TimestampsFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.ValueFilter.java">org/apache/hadoop/hbase/filter/ValueFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.WhileMatchFilter.java">org/apache/hadoop/hbase/filter/WhileMatchFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.fs.HFileSystem.java">org/apache/hadoop/hbase/fs/HFileSystem.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>32</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.fs.TestBlockReorder.java">org/apache/hadoop/hbase/fs/TestBlockReorder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.ClickjackingPreventionFilter.java">org/apache/hadoop/hbase/http/ClickjackingPreventionFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.HtmlQuoting.java">org/apache/hadoop/hbase/http/HtmlQuoting.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>17</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.HttpConfig.java">org/apache/hadoop/hbase/http/HttpConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.HttpRequestLog.java">org/apache/hadoop/hbase/http/HttpRequestLog.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.HttpRequestLogAppender.java">org/apache/hadoop/hbase/http/HttpRequestLogAppender.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.HttpServer.java">org/apache/hadoop/hbase/http/HttpServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>39</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.HttpServerFunctionalTest.java">org/apache/hadoop/hbase/http/HttpServerFunctionalTest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.HttpServerUtil.java">org/apache/hadoop/hbase/http/HttpServerUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.InfoServer.java">org/apache/hadoop/hbase/http/InfoServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.NoCacheFilter.java">org/apache/hadoop/hbase/http/NoCacheFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.TestGlobalFilter.java">org/apache/hadoop/hbase/http/TestGlobalFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.TestHtmlQuoting.java">org/apache/hadoop/hbase/http/TestHtmlQuoting.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.TestHttpRequestLog.java">org/apache/hadoop/hbase/http/TestHttpRequestLog.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.TestHttpRequestLogAppender.java">org/apache/hadoop/hbase/http/TestHttpRequestLogAppender.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.TestHttpServer.java">org/apache/hadoop/hbase/http/TestHttpServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.TestHttpServerWebapps.java">org/apache/hadoop/hbase/http/TestHttpServerWebapps.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.TestPathFilter.java">org/apache/hadoop/hbase/http/TestPathFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.TestSSLHttpServer.java">org/apache/hadoop/hbase/http/TestSSLHttpServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.TestServletFilter.java">org/apache/hadoop/hbase/http/TestServletFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.TestSpnegoHttpServer.java">org/apache/hadoop/hbase/http/TestSpnegoHttpServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>18</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.conf.ConfServlet.java">org/apache/hadoop/hbase/http/conf/ConfServlet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.jmx.JMXJsonServlet.java">org/apache/hadoop/hbase/http/jmx/JMXJsonServlet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.jmx.TestJMXJsonServlet.java">org/apache/hadoop/hbase/http/jmx/TestJMXJsonServlet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.lib.TestStaticUserWebFilter.java">org/apache/hadoop/hbase/http/lib/TestStaticUserWebFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.log.LogLevel.java">org/apache/hadoop/hbase/http/log/LogLevel.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.log.TestLogLevel.java">org/apache/hadoop/hbase/http/log/TestLogLevel.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.resource.JerseyResource.java">org/apache/hadoop/hbase/http/resource/JerseyResource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.ssl.KeyStoreTestUtil.java">org/apache/hadoop/hbase/http/ssl/KeyStoreTestUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.ByteBuffInputStream.java">org/apache/hadoop/hbase/io/ByteBuffInputStream.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.ByteBufferOutputStream.java">org/apache/hadoop/hbase/io/ByteBufferOutputStream.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.ByteBufferWriterOutputStream.java">org/apache/hadoop/hbase/io/ByteBufferWriterOutputStream.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.CellOutputStream.java">org/apache/hadoop/hbase/io/CellOutputStream.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.FSDataInputStreamWrapper.java">org/apache/hadoop/hbase/io/FSDataInputStreamWrapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.FileLink.java">org/apache/hadoop/hbase/io/FileLink.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.HFileLink.java">org/apache/hadoop/hbase/io/HFileLink.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.HalfStoreFileReader.java">org/apache/hadoop/hbase/io/HalfStoreFileReader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.HeapSize.java">org/apache/hadoop/hbase/io/HeapSize.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.ImmutableBytesWritable.java">org/apache/hadoop/hbase/io/ImmutableBytesWritable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.Reference.java">org/apache/hadoop/hbase/io/Reference.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>18</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.TagCompressionContext.java">org/apache/hadoop/hbase/io/TagCompressionContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.TestByteBufferOutputStream.java">org/apache/hadoop/hbase/io/TestByteBufferOutputStream.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.TestFileLink.java">org/apache/hadoop/hbase/io/TestFileLink.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.TestHFileLink.java">org/apache/hadoop/hbase/io/TestHFileLink.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.TestHalfStoreFileReader.java">org/apache/hadoop/hbase/io/TestHalfStoreFileReader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.TestHeapSize.java">org/apache/hadoop/hbase/io/TestHeapSize.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.TestImmutableBytesWritable.java">org/apache/hadoop/hbase/io/TestImmutableBytesWritable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.TestMetricsIO.java">org/apache/hadoop/hbase/io/TestMetricsIO.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.TimeRange.java">org/apache/hadoop/hbase/io/TimeRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.WALLink.java">org/apache/hadoop/hbase/io/WALLink.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.asyncfs.AsyncFSOutput.java">org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutput.java">org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper.java">org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputSaslHelper.java">org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.compress.Compression.java">org/apache/hadoop/hbase/io/compress/Compression.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.Cipher.java">org/apache/hadoop/hbase/io/crypto/Cipher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.Decryptor.java">org/apache/hadoop/hbase/io/crypto/Decryptor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.Encryption.java">org/apache/hadoop/hbase/io/crypto/Encryption.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>53</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.Encryptor.java">org/apache/hadoop/hbase/io/crypto/Encryptor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.KeyProvider.java">org/apache/hadoop/hbase/io/crypto/KeyProvider.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.TestEncryption.java">org/apache/hadoop/hbase/io/crypto/TestEncryption.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.aes.CryptoAES.java">org/apache/hadoop/hbase/io/crypto/aes/CryptoAES.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.BufferedDataBlockEncoder.java">org/apache/hadoop/hbase/io/encoding/BufferedDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.CopyKeyDataBlockEncoder.java">org/apache/hadoop/hbase/io/encoding/CopyKeyDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.DataBlockEncoder.java">org/apache/hadoop/hbase/io/encoding/DataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.DataBlockEncoding.java">org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.EncodedDataBlock.java">org/apache/hadoop/hbase/io/encoding/EncodedDataBlock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.HFileBlockDecodingContext.java">org/apache/hadoop/hbase/io/encoding/HFileBlockDecodingContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.HFileBlockDefaultEncodingContext.java">org/apache/hadoop/hbase/io/encoding/HFileBlockDefaultEncodingContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.HFileBlockEncodingContext.java">org/apache/hadoop/hbase/io/encoding/HFileBlockEncodingContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.RowIndexCodecV1.java">org/apache/hadoop/hbase/io/encoding/RowIndexCodecV1.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.TestBufferedDataBlockEncoder.java">org/apache/hadoop/hbase/io/encoding/TestBufferedDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.TestChangingEncoding.java">org/apache/hadoop/hbase/io/encoding/TestChangingEncoding.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.TestDataBlockEncoders.java">org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.TestEncodedSeekers.java">org/apache/hadoop/hbase/io/encoding/TestEncodedSeekers.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.TestLoadAndSwitchEncodeOnDisk.java">org/apache/hadoop/hbase/io/encoding/TestLoadAndSwitchEncodeOnDisk.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.TestSeekToBlockWithEncoders.java">org/apache/hadoop/hbase/io/encoding/TestSeekToBlockWithEncoders.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hadoopbackport.ThrottledInputStream.java">org/apache/hadoop/hbase/io/hadoopbackport/ThrottledInputStream.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.BlockCache.java">org/apache/hadoop/hbase/io/hfile/BlockCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.BlockCacheKey.java">org/apache/hadoop/hbase/io/hfile/BlockCacheKey.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.java">org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.BlockCachesIterator.java">org/apache/hadoop/hbase/io/hfile/BlockCachesIterator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.BlockType.java">org/apache/hadoop/hbase/io/hfile/BlockType.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CacheConfig.java">org/apache/hadoop/hbase/io/hfile/CacheConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CacheStats.java">org/apache/hadoop/hbase/io/hfile/CacheStats.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CacheTestUtils.java">org/apache/hadoop/hbase/io/hfile/CacheTestUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.Cacheable.java">org/apache/hadoop/hbase/io/hfile/Cacheable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CacheableDeserializer.java">org/apache/hadoop/hbase/io/hfile/CacheableDeserializer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CacheableDeserializerIdManager.java">org/apache/hadoop/hbase/io/hfile/CacheableDeserializerIdManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.ChecksumUtil.java">org/apache/hadoop/hbase/io/hfile/ChecksumUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CombinedBlockCache.java">org/apache/hadoop/hbase/io/hfile/CombinedBlockCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CompoundBloomFilter.java">org/apache/hadoop/hbase/io/hfile/CompoundBloomFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CompoundBloomFilterBase.java">org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CompoundBloomFilterWriter.java">org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CorruptHFileException.java">org/apache/hadoop/hbase/io/hfile/CorruptHFileException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.FixedFileTrailer.java">org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFile.java">org/apache/hadoop/hbase/io/hfile/HFile.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>38</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileBlock.java">org/apache/hadoop/hbase/io/hfile/HFileBlock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>46</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileBlockIndex.java">org/apache/hadoop/hbase/io/hfile/HFileBlockIndex.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>39</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileContext.java">org/apache/hadoop/hbase/io/hfile/HFileContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder.java">org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoderImpl.java">org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoderImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFilePrettyPrinter.java">org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileReaderImpl.java">org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>52</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileScanner.java">org/apache/hadoop/hbase/io/hfile/HFileScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>23</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileUtil.java">org/apache/hadoop/hbase/io/hfile/HFileUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileWriterImpl.java">org/apache/hadoop/hbase/io/hfile/HFileWriterImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.KVGenerator.java">org/apache/hadoop/hbase/io/hfile/KVGenerator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.LruBlockCache.java">org/apache/hadoop/hbase/io/hfile/LruBlockCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.LruCachedBlock.java">org/apache/hadoop/hbase/io/hfile/LruCachedBlock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.LruCachedBlockQueue.java">org/apache/hadoop/hbase/io/hfile/LruCachedBlockQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.NanoTimer.java">org/apache/hadoop/hbase/io/hfile/NanoTimer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.NoOpDataBlockEncoder.java">org/apache/hadoop/hbase/io/hfile/NoOpDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.PrefetchExecutor.java">org/apache/hadoop/hbase/io/hfile/PrefetchExecutor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.RandomKeyValueUtil.java">org/apache/hadoop/hbase/io/hfile/RandomKeyValueUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestBlockCacheReporting.java">org/apache/hadoop/hbase/io/hfile/TestBlockCacheReporting.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestCacheConfig.java">org/apache/hadoop/hbase/io/hfile/TestCacheConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestCacheOnWrite.java">org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestCachedBlockQueue.java">org/apache/hadoop/hbase/io/hfile/TestCachedBlockQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>19</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestChecksum.java">org/apache/hadoop/hbase/io/hfile/TestChecksum.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestFixedFileTrailer.java">org/apache/hadoop/hbase/io/hfile/TestFixedFileTrailer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestForceCacheImportantBlocks.java">org/apache/hadoop/hbase/io/hfile/TestForceCacheImportantBlocks.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFile.java">org/apache/hadoop/hbase/io/hfile/TestHFile.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>28</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileBlock.java">org/apache/hadoop/hbase/io/hfile/TestHFileBlock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileBlockIndex.java">org/apache/hadoop/hbase/io/hfile/TestHFileBlockIndex.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>42</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileBlockPositionalRead.java">org/apache/hadoop/hbase/io/hfile/TestHFileBlockPositionalRead.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileDataBlockEncoder.java">org/apache/hadoop/hbase/io/hfile/TestHFileDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileSeek.java">org/apache/hadoop/hbase/io/hfile/TestHFileSeek.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileWriterV3.java">org/apache/hadoop/hbase/io/hfile/TestHFileWriterV3.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestLruBlockCache.java">org/apache/hadoop/hbase/io/hfile/TestLruBlockCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestPrefetch.java">org/apache/hadoop/hbase/io/hfile/TestPrefetch.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestReseekTo.java">org/apache/hadoop/hbase/io/hfile/TestReseekTo.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestScannerFromBucketCache.java">org/apache/hadoop/hbase/io/hfile/TestScannerFromBucketCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestScannerSelectionUsingKeyRange.java">org/apache/hadoop/hbase/io/hfile/TestScannerSelectionUsingKeyRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.BucketAllocator.java">org/apache/hadoop/hbase/io/hfile/bucket/BucketAllocator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>34</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.BucketCache.java">org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>40</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.BucketCacheStats.java">org/apache/hadoop/hbase/io/hfile/bucket/BucketCacheStats.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.ByteBufferIOEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/ByteBufferIOEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.CachedEntryQueue.java">org/apache/hadoop/hbase/io/hfile/bucket/CachedEntryQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.FileIOEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/FileIOEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.FileMmapEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/FileMmapEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.IOEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/IOEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.TestBucketCache.java">org/apache/hadoop/hbase/io/hfile/bucket/TestBucketCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>21</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.TestBucketWriterThread.java">org/apache/hadoop/hbase/io/hfile/bucket/TestBucketWriterThread.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.TestFileIOEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/TestFileIOEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.UniqueIndexMap.java">org/apache/hadoop/hbase/io/hfile/bucket/UniqueIndexMap.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.util.Dictionary.java">org/apache/hadoop/hbase/io/util/Dictionary.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.util.LRUDictionary.java">org/apache/hadoop/hbase/io/util/LRUDictionary.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.util.MemorySizeUtil.java">org/apache/hadoop/hbase/io/util/MemorySizeUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.util.StreamUtils.java">org/apache/hadoop/hbase/io/util/StreamUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.AbstractRpcClient.java">org/apache/hadoop/hbase/ipc/AbstractRpcClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.AbstractTestIPC.java">org/apache/hadoop/hbase/ipc/AbstractTestIPC.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.AdaptiveLifoCoDelCallQueue.java">org/apache/hadoop/hbase/ipc/AdaptiveLifoCoDelCallQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.BlockingRpcCallback.java">org/apache/hadoop/hbase/ipc/BlockingRpcCallback.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.BlockingRpcClient.java">org/apache/hadoop/hbase/ipc/BlockingRpcClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.BlockingRpcConnection.java">org/apache/hadoop/hbase/ipc/BlockingRpcConnection.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.BufferCallBeforeInitHandler.java">org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.BufferChain.java">org/apache/hadoop/hbase/ipc/BufferChain.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.Call.java">org/apache/hadoop/hbase/ipc/Call.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.CallQueueInfo.java">org/apache/hadoop/hbase/ipc/CallQueueInfo.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.CallRunner.java">org/apache/hadoop/hbase/ipc/CallRunner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.CellBlockBuilder.java">org/apache/hadoop/hbase/ipc/CellBlockBuilder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils.java">org/apache/hadoop/hbase/ipc/CoprocessorRpcUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.DefaultNettyEventLoopConfig.java">org/apache/hadoop/hbase/ipc/DefaultNettyEventLoopConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.DelegatingHBaseRpcController.java">org/apache/hadoop/hbase/ipc/DelegatingHBaseRpcController.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.FailedServers.java">org/apache/hadoop/hbase/ipc/FailedServers.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.FifoRpcScheduler.java">org/apache/hadoop/hbase/ipc/FifoRpcScheduler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.HBaseRpcController.java">org/apache/hadoop/hbase/ipc/HBaseRpcController.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.HBaseRpcControllerImpl.java">org/apache/hadoop/hbase/ipc/HBaseRpcControllerImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.IPCUtil.java">org/apache/hadoop/hbase/ipc/IPCUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.IntegrationTestRpcClient.java">org/apache/hadoop/hbase/ipc/IntegrationTestRpcClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.MetricsHBaseServer.java">org/apache/hadoop/hbase/ipc/MetricsHBaseServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.MetricsHBaseServerSourceImpl.java">org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.NettyRpcClient.java">org/a

<TRUNCATED>

[27/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerConfigTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerConfigTracker.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerConfigTracker.html
index 398262a..7630132 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerConfigTracker.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.PeerConfigTracker.html
@@ -39,16 +39,16 @@
 <span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.client.replication.ReplicationPeerConfigUtil;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.32"></a>
 <span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.zookeeper.ZKNodeTracker;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.zookeeper.KeeperException;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.zookeeper.KeeperException.NodeExistsException;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.slf4j.Logger;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.slf4j.LoggerFactory;<a name="line.43"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.zookeeper.ZKNodeTracker;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.zookeeper.KeeperException;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.slf4j.Logger;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.slf4j.LoggerFactory;<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<a name="line.43"></a>
 <span class="sourceLineNo">044</span><a name="line.44"></a>
 <span class="sourceLineNo">045</span>@InterfaceAudience.Private<a name="line.45"></a>
 <span class="sourceLineNo">046</span>public class ReplicationPeerZKImpl extends ReplicationStateZKBase<a name="line.46"></a>
@@ -85,246 +85,241 @@
 <span class="sourceLineNo">077</span>   * start a state tracker to check whether this peer is enabled or not<a name="line.77"></a>
 <span class="sourceLineNo">078</span>   *<a name="line.78"></a>
 <span class="sourceLineNo">079</span>   * @param peerStateNode path to zk node which stores peer state<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   * @throws KeeperException<a name="line.80"></a>
+<span class="sourceLineNo">080</span>   * @throws KeeperException if creating the znode fails<a name="line.80"></a>
 <span class="sourceLineNo">081</span>   */<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  public void startStateTracker(String peerStateNode)<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      throws KeeperException {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    ensurePeerEnabled(peerStateNode);<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    this.peerStateTracker = new PeerStateTracker(peerStateNode, zookeeper, this);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    this.peerStateTracker.start();<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    try {<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      this.readPeerStateZnode();<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    } catch (DeserializationException e) {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      throw ZKUtil.convert(e);<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    }<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  }<a name="line.92"></a>
-<span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>  private void readPeerStateZnode() throws DeserializationException {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    this.peerState =<a name="line.95"></a>
-<span class="sourceLineNo">096</span>        isStateEnabled(this.peerStateTracker.getData(false))<a name="line.96"></a>
-<span class="sourceLineNo">097</span>          ? PeerState.ENABLED<a name="line.97"></a>
-<span class="sourceLineNo">098</span>          : PeerState.DISABLED;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  }<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>  /**<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * start a table-cfs tracker to listen the (table, cf-list) map change<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * @param peerConfigNode path to zk node which stores table-cfs<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @throws KeeperException<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public void startPeerConfigTracker(String peerConfigNode)<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    throws KeeperException {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    this.peerConfigTracker = new PeerConfigTracker(peerConfigNode, zookeeper,<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        this);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    this.peerConfigTracker.start();<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    this.readPeerConfig();<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  }<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private ReplicationPeerConfig readPeerConfig() {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    try {<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      byte[] data = peerConfigTracker.getData(false);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      if (data != null) {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>        this.peerConfig = ReplicationPeerConfigUtil.parsePeerFrom(data);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      }<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    } catch (DeserializationException e) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      LOG.error("", e);<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    }<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    return this.peerConfig;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  @Override<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public PeerState getPeerState() {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    return peerState;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  }<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span>  /**<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   * Get the identifier of this peer<a name="line.132"></a>
-<span class="sourceLineNo">133</span>   * @return string representation of the id (short)<a name="line.133"></a>
-<span class="sourceLineNo">134</span>   */<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  @Override<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  public String getId() {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    return id;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span>  /**<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * Get the peer config object<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   * @return the ReplicationPeerConfig for this peer<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   */<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  @Override<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public ReplicationPeerConfig getPeerConfig() {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    return peerConfig;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  }<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>  /**<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * Get the configuration object required to communicate with this peer<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * @return configuration object<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  @Override<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  public Configuration getConfiguration() {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    return conf;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  }<a name="line.156"></a>
-<span class="sourceLineNo">157</span><a name="line.157"></a>
-<span class="sourceLineNo">158</span>  /**<a name="line.158"></a>
-<span class="sourceLineNo">159</span>   * Get replicable (table, cf-list) map of this peer<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   * @return the replicable (table, cf-list) map<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   */<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  @Override<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  public Map&lt;TableName, List&lt;String&gt;&gt; getTableCFs() {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    this.tableCFs = peerConfig.getTableCFsMap();<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    return this.tableCFs;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  }<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span>  /**<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * Get replicable namespace set of this peer<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * @return the replicable namespaces set<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   */<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  @Override<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  public Set&lt;String&gt; getNamespaces() {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    return this.peerConfig.getNamespaces();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  }<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>  @Override<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  public long getPeerBandwidth() {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    return this.peerConfig.getBandwidth();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  }<a name="line.180"></a>
-<span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>  @Override<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  public void trackPeerConfigChanges(ReplicationPeerConfigListener listener) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    if (this.peerConfigTracker != null){<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      this.peerConfigTracker.setListener(listener);<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  }<a name="line.187"></a>
-<span class="sourceLineNo">188</span><a name="line.188"></a>
-<span class="sourceLineNo">189</span>  @Override<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  public void abort(String why, Throwable e) {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    LOG.error(HBaseMarkers.FATAL, "The ReplicationPeer corresponding to peer " +<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        peerConfig + " was aborted for the following reason(s):" + why, e);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>  }<a name="line.193"></a>
-<span class="sourceLineNo">194</span><a name="line.194"></a>
-<span class="sourceLineNo">195</span>  @Override<a name="line.195"></a>
-<span class="sourceLineNo">196</span>  public boolean isAborted() {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    // Currently the replication peer is never "Aborted", we just log when the<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    // abort method is called.<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    return false;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  }<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>  @Override<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  public void close() throws IOException {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    // TODO: stop zkw?<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  }<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>  /**<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   * Parse the raw data from ZK to get a peer's state<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   * @param bytes raw ZK data<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   * @return True if the passed in &lt;code&gt;bytes&lt;/code&gt; are those of a pb serialized ENABLED state.<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   * @throws DeserializationException<a name="line.211"></a>
-<span class="sourceLineNo">212</span>   */<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  public static boolean isStateEnabled(final byte[] bytes) throws DeserializationException {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    ReplicationProtos.ReplicationState.State state = parseStateFrom(bytes);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    return ReplicationProtos.ReplicationState.State.ENABLED == state;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  }<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>  /**<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @param bytes Content of a state znode.<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   * @return State parsed from the passed bytes.<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * @throws DeserializationException<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   */<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  private static ReplicationProtos.ReplicationState.State parseStateFrom(final byte[] bytes)<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      throws DeserializationException {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    ProtobufUtil.expectPBMagicPrefix(bytes);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    int pblen = ProtobufUtil.lengthOfPBMagic();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    ReplicationProtos.ReplicationState.Builder builder =<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        ReplicationProtos.ReplicationState.newBuilder();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    ReplicationProtos.ReplicationState state;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    try {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      ProtobufUtil.mergeFrom(builder, bytes, pblen, bytes.length - pblen);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      state = builder.build();<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      return state.getState();<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    } catch (IOException e) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      throw new DeserializationException(e);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>  /**<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   * Utility method to ensure an ENABLED znode is in place; if not present, we create it.<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * @param path Path to znode to check<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   * @return True if we created the znode.<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * @throws NodeExistsException<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   * @throws KeeperException<a name="line.244"></a>
-<span class="sourceLineNo">245</span>   */<a name="line.245"></a>
-<span class="sourceLineNo">246</span>  private boolean ensurePeerEnabled(final String path)<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      throws NodeExistsException, KeeperException {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    if (ZKUtil.checkExists(zookeeper, path) == -1) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      // There is a race b/w PeerWatcher and ReplicationZookeeper#add method to create the<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      // peer-state znode. This happens while adding a peer.<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      // The peer state data is set as "ENABLED" by default.<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      ZKUtil.createNodeIfNotExistsAndWatch(zookeeper, path,<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        ReplicationStateZKBase.ENABLED_ZNODE_BYTES);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      return true;<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    return false;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  }<a name="line.257"></a>
+<span class="sourceLineNo">082</span>  public void startStateTracker(String peerStateNode) throws KeeperException {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    ensurePeerEnabled(peerStateNode);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    this.peerStateTracker = new PeerStateTracker(peerStateNode, zookeeper, this);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    this.peerStateTracker.start();<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    try {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      this.readPeerStateZnode();<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    } catch (DeserializationException e) {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      throw ZKUtil.convert(e);<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  }<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>  private void readPeerStateZnode() throws DeserializationException {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    this.peerState =<a name="line.94"></a>
+<span class="sourceLineNo">095</span>        isStateEnabled(this.peerStateTracker.getData(false))<a name="line.95"></a>
+<span class="sourceLineNo">096</span>          ? PeerState.ENABLED<a name="line.96"></a>
+<span class="sourceLineNo">097</span>          : PeerState.DISABLED;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  }<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span>  /**<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * start a table-cfs tracker to listen the (table, cf-list) map change<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * @param peerConfigNode path to zk node which stores table-cfs<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   */<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  public void startPeerConfigTracker(String peerConfigNode) throws KeeperException {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    this.peerConfigTracker = new PeerConfigTracker(peerConfigNode, zookeeper,<a name="line.105"></a>
+<span class="sourceLineNo">106</span>        this);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    this.peerConfigTracker.start();<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    this.readPeerConfig();<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  }<a name="line.109"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private ReplicationPeerConfig readPeerConfig() {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    try {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      byte[] data = peerConfigTracker.getData(false);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      if (data != null) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>        this.peerConfig = ReplicationPeerConfigUtil.parsePeerFrom(data);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      }<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    } catch (DeserializationException e) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      LOG.error("", e);<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    }<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    return this.peerConfig;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
+<span class="sourceLineNo">122</span><a name="line.122"></a>
+<span class="sourceLineNo">123</span>  @Override<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  public PeerState getPeerState() {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    return peerState;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  /**<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   * Get the identifier of this peer<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * @return string representation of the id (short)<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  @Override<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  public String getId() {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    return id;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  }<a name="line.135"></a>
+<span class="sourceLineNo">136</span><a name="line.136"></a>
+<span class="sourceLineNo">137</span>  /**<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   * Get the peer config object<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * @return the ReplicationPeerConfig for this peer<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   */<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  @Override<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  public ReplicationPeerConfig getPeerConfig() {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    return peerConfig;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  }<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  /**<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * Get the configuration object required to communicate with this peer<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * @return configuration object<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   */<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  @Override<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  public Configuration getConfiguration() {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    return conf;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  }<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  /**<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   * Get replicable (table, cf-list) map of this peer<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   * @return the replicable (table, cf-list) map<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   */<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  @Override<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  public Map&lt;TableName, List&lt;String&gt;&gt; getTableCFs() {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    this.tableCFs = peerConfig.getTableCFsMap();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    return this.tableCFs;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  /**<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * Get replicable namespace set of this peer<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * @return the replicable namespaces set<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   */<a name="line.168"></a>
+<span class="sourceLineNo">169</span>  @Override<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  public Set&lt;String&gt; getNamespaces() {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    return this.peerConfig.getNamespaces();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>  @Override<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  public long getPeerBandwidth() {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    return this.peerConfig.getBandwidth();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  }<a name="line.177"></a>
+<span class="sourceLineNo">178</span><a name="line.178"></a>
+<span class="sourceLineNo">179</span>  @Override<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  public void trackPeerConfigChanges(ReplicationPeerConfigListener listener) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    if (this.peerConfigTracker != null){<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      this.peerConfigTracker.setListener(listener);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    }<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  @Override<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  public void abort(String why, Throwable e) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    LOG.error(HBaseMarkers.FATAL, "The ReplicationPeer corresponding to peer " +<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        peerConfig + " was aborted for the following reason(s):" + why, e);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  }<a name="line.190"></a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span>  @Override<a name="line.192"></a>
+<span class="sourceLineNo">193</span>  public boolean isAborted() {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    // Currently the replication peer is never "Aborted", we just log when the<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    // abort method is called.<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    return false;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  }<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>  @Override<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  public void close() throws IOException {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    // TODO: stop zkw?<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  }<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>  /**<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   * Parse the raw data from ZK to get a peer's state<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   * @param bytes raw ZK data<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * @return True if the passed in &lt;code&gt;bytes&lt;/code&gt; are those of a pb serialized ENABLED state.<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   * @throws DeserializationException if parsing the state fails<a name="line.208"></a>
+<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  public static boolean isStateEnabled(final byte[] bytes) throws DeserializationException {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    ReplicationProtos.ReplicationState.State state = parseStateFrom(bytes);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    return ReplicationProtos.ReplicationState.State.ENABLED == state;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
+<span class="sourceLineNo">214</span><a name="line.214"></a>
+<span class="sourceLineNo">215</span>  /**<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   * @param bytes Content of a state znode.<a name="line.216"></a>
+<span class="sourceLineNo">217</span>   * @return State parsed from the passed bytes.<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * @throws DeserializationException if a ProtoBuf operation fails<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   */<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  private static ReplicationProtos.ReplicationState.State parseStateFrom(final byte[] bytes)<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      throws DeserializationException {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    ProtobufUtil.expectPBMagicPrefix(bytes);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    int pblen = ProtobufUtil.lengthOfPBMagic();<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    ReplicationProtos.ReplicationState.Builder builder =<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        ReplicationProtos.ReplicationState.newBuilder();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    ReplicationProtos.ReplicationState state;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    try {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      ProtobufUtil.mergeFrom(builder, bytes, pblen, bytes.length - pblen);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      state = builder.build();<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      return state.getState();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    } catch (IOException e) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      throw new DeserializationException(e);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>  /**<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   * Utility method to ensure an ENABLED znode is in place; if not present, we create it.<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   * @param path Path to znode to check<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   * @return True if we created the znode.<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   * @throws KeeperException if creating the znode fails<a name="line.240"></a>
+<span class="sourceLineNo">241</span>   */<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  private boolean ensurePeerEnabled(final String path) throws KeeperException {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    if (ZKUtil.checkExists(zookeeper, path) == -1) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      // There is a race b/w PeerWatcher and ReplicationZookeeper#add method to create the<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      // peer-state znode. This happens while adding a peer.<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      // The peer state data is set as "ENABLED" by default.<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      ZKUtil.createNodeIfNotExistsAndWatch(zookeeper, path,<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        ReplicationStateZKBase.ENABLED_ZNODE_BYTES);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      return true;<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    return false;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  /**<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * Tracker for state of this peer<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
+<span class="sourceLineNo">257</span>  public class PeerStateTracker extends ZKNodeTracker {<a name="line.257"></a>
 <span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>  /**<a name="line.259"></a>
-<span class="sourceLineNo">260</span>   * Tracker for state of this peer<a name="line.260"></a>
-<span class="sourceLineNo">261</span>   */<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  public class PeerStateTracker extends ZKNodeTracker {<a name="line.262"></a>
+<span class="sourceLineNo">259</span>    public PeerStateTracker(String peerStateZNode, ZKWatcher watcher,<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        Abortable abortable) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      super(watcher, peerStateZNode, abortable);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
 <span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>    public PeerStateTracker(String peerStateZNode, ZKWatcher watcher,<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        Abortable abortable) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      super(watcher, peerStateZNode, abortable);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    @Override<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    public synchronized void nodeDataChanged(String path) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      if (path.equals(node)) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        super.nodeDataChanged(path);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        try {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>          readPeerStateZnode();<a name="line.274"></a>
-<span class="sourceLineNo">275</span>        } catch (DeserializationException e) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>          LOG.warn("Failed deserializing the content of " + path, e);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>        }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      }<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    }<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
+<span class="sourceLineNo">264</span>    @Override<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    public synchronized void nodeDataChanged(String path) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      if (path.equals(node)) {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        super.nodeDataChanged(path);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        try {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>          readPeerStateZnode();<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        } catch (DeserializationException e) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>          LOG.warn("Failed deserializing the content of " + path, e);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>  /**<a name="line.277"></a>
+<span class="sourceLineNo">278</span>   * Tracker for PeerConfigNode of this peer<a name="line.278"></a>
+<span class="sourceLineNo">279</span>   */<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  public class PeerConfigTracker extends ZKNodeTracker {<a name="line.280"></a>
 <span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>  /**<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * Tracker for PeerConfigNode of this peer<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   */<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  public class PeerConfigTracker extends ZKNodeTracker {<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span>    ReplicationPeerConfigListener listener;<a name="line.287"></a>
+<span class="sourceLineNo">282</span>    ReplicationPeerConfigListener listener;<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>    public PeerConfigTracker(String peerConfigNode, ZKWatcher watcher,<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        Abortable abortable) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      super(watcher, peerConfigNode, abortable);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    }<a name="line.287"></a>
 <span class="sourceLineNo">288</span><a name="line.288"></a>
-<span class="sourceLineNo">289</span>    public PeerConfigTracker(String peerConfigNode, ZKWatcher watcher,<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        Abortable abortable) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      super(watcher, peerConfigNode, abortable);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>    public synchronized void setListener(ReplicationPeerConfigListener listener){<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      this.listener = listener;<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>    @Override<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    public synchronized void nodeCreated(String path) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      if (path.equals(node)) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        super.nodeCreated(path);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        ReplicationPeerConfig config = readPeerConfig();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        if (listener != null){<a name="line.303"></a>
-<span class="sourceLineNo">304</span>          listener.peerConfigUpdated(config);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>    @Override<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    public synchronized void nodeDataChanged(String path) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      //superclass calls nodeCreated<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      if (path.equals(node)) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        super.nodeDataChanged(path);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    }<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span>}<a name="line.319"></a>
+<span class="sourceLineNo">289</span>    public synchronized void setListener(ReplicationPeerConfigListener listener){<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      this.listener = listener;<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>    @Override<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    public synchronized void nodeCreated(String path) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      if (path.equals(node)) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        super.nodeCreated(path);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        ReplicationPeerConfig config = readPeerConfig();<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        if (listener != null){<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          listener.peerConfigUpdated(config);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        }<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    }<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>    @Override<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    public synchronized void nodeDataChanged(String path) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      //superclass calls nodeCreated<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      if (path.equals(node)) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        super.nodeDataChanged(path);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
+<span class="sourceLineNo">314</span>}<a name="line.314"></a>
 
 
 


[25/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html
index 398262a..7630132 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.html
@@ -39,16 +39,16 @@
 <span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.client.replication.ReplicationPeerConfigUtil;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.32"></a>
 <span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.zookeeper.ZKNodeTracker;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.zookeeper.KeeperException;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.zookeeper.KeeperException.NodeExistsException;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.slf4j.Logger;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.slf4j.LoggerFactory;<a name="line.43"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.zookeeper.ZKNodeTracker;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.zookeeper.KeeperException;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.slf4j.Logger;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.slf4j.LoggerFactory;<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<a name="line.43"></a>
 <span class="sourceLineNo">044</span><a name="line.44"></a>
 <span class="sourceLineNo">045</span>@InterfaceAudience.Private<a name="line.45"></a>
 <span class="sourceLineNo">046</span>public class ReplicationPeerZKImpl extends ReplicationStateZKBase<a name="line.46"></a>
@@ -85,246 +85,241 @@
 <span class="sourceLineNo">077</span>   * start a state tracker to check whether this peer is enabled or not<a name="line.77"></a>
 <span class="sourceLineNo">078</span>   *<a name="line.78"></a>
 <span class="sourceLineNo">079</span>   * @param peerStateNode path to zk node which stores peer state<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   * @throws KeeperException<a name="line.80"></a>
+<span class="sourceLineNo">080</span>   * @throws KeeperException if creating the znode fails<a name="line.80"></a>
 <span class="sourceLineNo">081</span>   */<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  public void startStateTracker(String peerStateNode)<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      throws KeeperException {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    ensurePeerEnabled(peerStateNode);<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    this.peerStateTracker = new PeerStateTracker(peerStateNode, zookeeper, this);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    this.peerStateTracker.start();<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    try {<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      this.readPeerStateZnode();<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    } catch (DeserializationException e) {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      throw ZKUtil.convert(e);<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    }<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  }<a name="line.92"></a>
-<span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>  private void readPeerStateZnode() throws DeserializationException {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    this.peerState =<a name="line.95"></a>
-<span class="sourceLineNo">096</span>        isStateEnabled(this.peerStateTracker.getData(false))<a name="line.96"></a>
-<span class="sourceLineNo">097</span>          ? PeerState.ENABLED<a name="line.97"></a>
-<span class="sourceLineNo">098</span>          : PeerState.DISABLED;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  }<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>  /**<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * start a table-cfs tracker to listen the (table, cf-list) map change<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * @param peerConfigNode path to zk node which stores table-cfs<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @throws KeeperException<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public void startPeerConfigTracker(String peerConfigNode)<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    throws KeeperException {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    this.peerConfigTracker = new PeerConfigTracker(peerConfigNode, zookeeper,<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        this);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    this.peerConfigTracker.start();<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    this.readPeerConfig();<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  }<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private ReplicationPeerConfig readPeerConfig() {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    try {<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      byte[] data = peerConfigTracker.getData(false);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      if (data != null) {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>        this.peerConfig = ReplicationPeerConfigUtil.parsePeerFrom(data);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      }<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    } catch (DeserializationException e) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      LOG.error("", e);<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    }<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    return this.peerConfig;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  @Override<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public PeerState getPeerState() {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    return peerState;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  }<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span>  /**<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   * Get the identifier of this peer<a name="line.132"></a>
-<span class="sourceLineNo">133</span>   * @return string representation of the id (short)<a name="line.133"></a>
-<span class="sourceLineNo">134</span>   */<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  @Override<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  public String getId() {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    return id;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span>  /**<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * Get the peer config object<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   * @return the ReplicationPeerConfig for this peer<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   */<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  @Override<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public ReplicationPeerConfig getPeerConfig() {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    return peerConfig;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  }<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>  /**<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * Get the configuration object required to communicate with this peer<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * @return configuration object<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  @Override<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  public Configuration getConfiguration() {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    return conf;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  }<a name="line.156"></a>
-<span class="sourceLineNo">157</span><a name="line.157"></a>
-<span class="sourceLineNo">158</span>  /**<a name="line.158"></a>
-<span class="sourceLineNo">159</span>   * Get replicable (table, cf-list) map of this peer<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   * @return the replicable (table, cf-list) map<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   */<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  @Override<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  public Map&lt;TableName, List&lt;String&gt;&gt; getTableCFs() {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    this.tableCFs = peerConfig.getTableCFsMap();<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    return this.tableCFs;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  }<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span>  /**<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * Get replicable namespace set of this peer<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * @return the replicable namespaces set<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   */<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  @Override<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  public Set&lt;String&gt; getNamespaces() {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    return this.peerConfig.getNamespaces();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  }<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>  @Override<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  public long getPeerBandwidth() {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    return this.peerConfig.getBandwidth();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  }<a name="line.180"></a>
-<span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>  @Override<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  public void trackPeerConfigChanges(ReplicationPeerConfigListener listener) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    if (this.peerConfigTracker != null){<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      this.peerConfigTracker.setListener(listener);<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  }<a name="line.187"></a>
-<span class="sourceLineNo">188</span><a name="line.188"></a>
-<span class="sourceLineNo">189</span>  @Override<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  public void abort(String why, Throwable e) {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    LOG.error(HBaseMarkers.FATAL, "The ReplicationPeer corresponding to peer " +<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        peerConfig + " was aborted for the following reason(s):" + why, e);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>  }<a name="line.193"></a>
-<span class="sourceLineNo">194</span><a name="line.194"></a>
-<span class="sourceLineNo">195</span>  @Override<a name="line.195"></a>
-<span class="sourceLineNo">196</span>  public boolean isAborted() {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    // Currently the replication peer is never "Aborted", we just log when the<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    // abort method is called.<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    return false;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  }<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>  @Override<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  public void close() throws IOException {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    // TODO: stop zkw?<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  }<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>  /**<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   * Parse the raw data from ZK to get a peer's state<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   * @param bytes raw ZK data<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   * @return True if the passed in &lt;code&gt;bytes&lt;/code&gt; are those of a pb serialized ENABLED state.<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   * @throws DeserializationException<a name="line.211"></a>
-<span class="sourceLineNo">212</span>   */<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  public static boolean isStateEnabled(final byte[] bytes) throws DeserializationException {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    ReplicationProtos.ReplicationState.State state = parseStateFrom(bytes);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    return ReplicationProtos.ReplicationState.State.ENABLED == state;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  }<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>  /**<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @param bytes Content of a state znode.<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   * @return State parsed from the passed bytes.<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * @throws DeserializationException<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   */<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  private static ReplicationProtos.ReplicationState.State parseStateFrom(final byte[] bytes)<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      throws DeserializationException {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    ProtobufUtil.expectPBMagicPrefix(bytes);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    int pblen = ProtobufUtil.lengthOfPBMagic();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    ReplicationProtos.ReplicationState.Builder builder =<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        ReplicationProtos.ReplicationState.newBuilder();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    ReplicationProtos.ReplicationState state;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    try {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      ProtobufUtil.mergeFrom(builder, bytes, pblen, bytes.length - pblen);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      state = builder.build();<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      return state.getState();<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    } catch (IOException e) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      throw new DeserializationException(e);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>  /**<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   * Utility method to ensure an ENABLED znode is in place; if not present, we create it.<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * @param path Path to znode to check<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   * @return True if we created the znode.<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * @throws NodeExistsException<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   * @throws KeeperException<a name="line.244"></a>
-<span class="sourceLineNo">245</span>   */<a name="line.245"></a>
-<span class="sourceLineNo">246</span>  private boolean ensurePeerEnabled(final String path)<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      throws NodeExistsException, KeeperException {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    if (ZKUtil.checkExists(zookeeper, path) == -1) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      // There is a race b/w PeerWatcher and ReplicationZookeeper#add method to create the<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      // peer-state znode. This happens while adding a peer.<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      // The peer state data is set as "ENABLED" by default.<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      ZKUtil.createNodeIfNotExistsAndWatch(zookeeper, path,<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        ReplicationStateZKBase.ENABLED_ZNODE_BYTES);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      return true;<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    return false;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  }<a name="line.257"></a>
+<span class="sourceLineNo">082</span>  public void startStateTracker(String peerStateNode) throws KeeperException {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    ensurePeerEnabled(peerStateNode);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    this.peerStateTracker = new PeerStateTracker(peerStateNode, zookeeper, this);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    this.peerStateTracker.start();<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    try {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      this.readPeerStateZnode();<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    } catch (DeserializationException e) {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      throw ZKUtil.convert(e);<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  }<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>  private void readPeerStateZnode() throws DeserializationException {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    this.peerState =<a name="line.94"></a>
+<span class="sourceLineNo">095</span>        isStateEnabled(this.peerStateTracker.getData(false))<a name="line.95"></a>
+<span class="sourceLineNo">096</span>          ? PeerState.ENABLED<a name="line.96"></a>
+<span class="sourceLineNo">097</span>          : PeerState.DISABLED;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  }<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span>  /**<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * start a table-cfs tracker to listen the (table, cf-list) map change<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * @param peerConfigNode path to zk node which stores table-cfs<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   */<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  public void startPeerConfigTracker(String peerConfigNode) throws KeeperException {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    this.peerConfigTracker = new PeerConfigTracker(peerConfigNode, zookeeper,<a name="line.105"></a>
+<span class="sourceLineNo">106</span>        this);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    this.peerConfigTracker.start();<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    this.readPeerConfig();<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  }<a name="line.109"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private ReplicationPeerConfig readPeerConfig() {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    try {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      byte[] data = peerConfigTracker.getData(false);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      if (data != null) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>        this.peerConfig = ReplicationPeerConfigUtil.parsePeerFrom(data);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      }<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    } catch (DeserializationException e) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      LOG.error("", e);<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    }<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    return this.peerConfig;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
+<span class="sourceLineNo">122</span><a name="line.122"></a>
+<span class="sourceLineNo">123</span>  @Override<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  public PeerState getPeerState() {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    return peerState;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  /**<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   * Get the identifier of this peer<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * @return string representation of the id (short)<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  @Override<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  public String getId() {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    return id;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  }<a name="line.135"></a>
+<span class="sourceLineNo">136</span><a name="line.136"></a>
+<span class="sourceLineNo">137</span>  /**<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   * Get the peer config object<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * @return the ReplicationPeerConfig for this peer<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   */<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  @Override<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  public ReplicationPeerConfig getPeerConfig() {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    return peerConfig;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  }<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  /**<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * Get the configuration object required to communicate with this peer<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * @return configuration object<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   */<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  @Override<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  public Configuration getConfiguration() {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    return conf;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  }<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  /**<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   * Get replicable (table, cf-list) map of this peer<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   * @return the replicable (table, cf-list) map<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   */<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  @Override<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  public Map&lt;TableName, List&lt;String&gt;&gt; getTableCFs() {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    this.tableCFs = peerConfig.getTableCFsMap();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    return this.tableCFs;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  /**<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * Get replicable namespace set of this peer<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * @return the replicable namespaces set<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   */<a name="line.168"></a>
+<span class="sourceLineNo">169</span>  @Override<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  public Set&lt;String&gt; getNamespaces() {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    return this.peerConfig.getNamespaces();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>  @Override<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  public long getPeerBandwidth() {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    return this.peerConfig.getBandwidth();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  }<a name="line.177"></a>
+<span class="sourceLineNo">178</span><a name="line.178"></a>
+<span class="sourceLineNo">179</span>  @Override<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  public void trackPeerConfigChanges(ReplicationPeerConfigListener listener) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    if (this.peerConfigTracker != null){<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      this.peerConfigTracker.setListener(listener);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    }<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  @Override<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  public void abort(String why, Throwable e) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    LOG.error(HBaseMarkers.FATAL, "The ReplicationPeer corresponding to peer " +<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        peerConfig + " was aborted for the following reason(s):" + why, e);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  }<a name="line.190"></a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span>  @Override<a name="line.192"></a>
+<span class="sourceLineNo">193</span>  public boolean isAborted() {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    // Currently the replication peer is never "Aborted", we just log when the<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    // abort method is called.<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    return false;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  }<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>  @Override<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  public void close() throws IOException {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    // TODO: stop zkw?<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  }<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>  /**<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   * Parse the raw data from ZK to get a peer's state<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   * @param bytes raw ZK data<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * @return True if the passed in &lt;code&gt;bytes&lt;/code&gt; are those of a pb serialized ENABLED state.<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   * @throws DeserializationException if parsing the state fails<a name="line.208"></a>
+<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  public static boolean isStateEnabled(final byte[] bytes) throws DeserializationException {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    ReplicationProtos.ReplicationState.State state = parseStateFrom(bytes);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    return ReplicationProtos.ReplicationState.State.ENABLED == state;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
+<span class="sourceLineNo">214</span><a name="line.214"></a>
+<span class="sourceLineNo">215</span>  /**<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   * @param bytes Content of a state znode.<a name="line.216"></a>
+<span class="sourceLineNo">217</span>   * @return State parsed from the passed bytes.<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * @throws DeserializationException if a ProtoBuf operation fails<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   */<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  private static ReplicationProtos.ReplicationState.State parseStateFrom(final byte[] bytes)<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      throws DeserializationException {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    ProtobufUtil.expectPBMagicPrefix(bytes);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    int pblen = ProtobufUtil.lengthOfPBMagic();<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    ReplicationProtos.ReplicationState.Builder builder =<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        ReplicationProtos.ReplicationState.newBuilder();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    ReplicationProtos.ReplicationState state;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    try {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      ProtobufUtil.mergeFrom(builder, bytes, pblen, bytes.length - pblen);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      state = builder.build();<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      return state.getState();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    } catch (IOException e) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      throw new DeserializationException(e);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>  /**<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   * Utility method to ensure an ENABLED znode is in place; if not present, we create it.<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   * @param path Path to znode to check<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   * @return True if we created the znode.<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   * @throws KeeperException if creating the znode fails<a name="line.240"></a>
+<span class="sourceLineNo">241</span>   */<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  private boolean ensurePeerEnabled(final String path) throws KeeperException {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    if (ZKUtil.checkExists(zookeeper, path) == -1) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      // There is a race b/w PeerWatcher and ReplicationZookeeper#add method to create the<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      // peer-state znode. This happens while adding a peer.<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      // The peer state data is set as "ENABLED" by default.<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      ZKUtil.createNodeIfNotExistsAndWatch(zookeeper, path,<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        ReplicationStateZKBase.ENABLED_ZNODE_BYTES);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      return true;<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    return false;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  /**<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * Tracker for state of this peer<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
+<span class="sourceLineNo">257</span>  public class PeerStateTracker extends ZKNodeTracker {<a name="line.257"></a>
 <span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>  /**<a name="line.259"></a>
-<span class="sourceLineNo">260</span>   * Tracker for state of this peer<a name="line.260"></a>
-<span class="sourceLineNo">261</span>   */<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  public class PeerStateTracker extends ZKNodeTracker {<a name="line.262"></a>
+<span class="sourceLineNo">259</span>    public PeerStateTracker(String peerStateZNode, ZKWatcher watcher,<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        Abortable abortable) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      super(watcher, peerStateZNode, abortable);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
 <span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>    public PeerStateTracker(String peerStateZNode, ZKWatcher watcher,<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        Abortable abortable) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      super(watcher, peerStateZNode, abortable);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    @Override<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    public synchronized void nodeDataChanged(String path) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      if (path.equals(node)) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        super.nodeDataChanged(path);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        try {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>          readPeerStateZnode();<a name="line.274"></a>
-<span class="sourceLineNo">275</span>        } catch (DeserializationException e) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>          LOG.warn("Failed deserializing the content of " + path, e);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>        }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      }<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    }<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
+<span class="sourceLineNo">264</span>    @Override<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    public synchronized void nodeDataChanged(String path) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      if (path.equals(node)) {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        super.nodeDataChanged(path);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        try {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>          readPeerStateZnode();<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        } catch (DeserializationException e) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>          LOG.warn("Failed deserializing the content of " + path, e);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>  /**<a name="line.277"></a>
+<span class="sourceLineNo">278</span>   * Tracker for PeerConfigNode of this peer<a name="line.278"></a>
+<span class="sourceLineNo">279</span>   */<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  public class PeerConfigTracker extends ZKNodeTracker {<a name="line.280"></a>
 <span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>  /**<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * Tracker for PeerConfigNode of this peer<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   */<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  public class PeerConfigTracker extends ZKNodeTracker {<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span>    ReplicationPeerConfigListener listener;<a name="line.287"></a>
+<span class="sourceLineNo">282</span>    ReplicationPeerConfigListener listener;<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>    public PeerConfigTracker(String peerConfigNode, ZKWatcher watcher,<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        Abortable abortable) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      super(watcher, peerConfigNode, abortable);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    }<a name="line.287"></a>
 <span class="sourceLineNo">288</span><a name="line.288"></a>
-<span class="sourceLineNo">289</span>    public PeerConfigTracker(String peerConfigNode, ZKWatcher watcher,<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        Abortable abortable) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      super(watcher, peerConfigNode, abortable);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>    public synchronized void setListener(ReplicationPeerConfigListener listener){<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      this.listener = listener;<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>    @Override<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    public synchronized void nodeCreated(String path) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      if (path.equals(node)) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        super.nodeCreated(path);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        ReplicationPeerConfig config = readPeerConfig();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        if (listener != null){<a name="line.303"></a>
-<span class="sourceLineNo">304</span>          listener.peerConfigUpdated(config);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>    @Override<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    public synchronized void nodeDataChanged(String path) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      //superclass calls nodeCreated<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      if (path.equals(node)) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        super.nodeDataChanged(path);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    }<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span>}<a name="line.319"></a>
+<span class="sourceLineNo">289</span>    public synchronized void setListener(ReplicationPeerConfigListener listener){<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      this.listener = listener;<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>    @Override<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    public synchronized void nodeCreated(String path) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      if (path.equals(node)) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        super.nodeCreated(path);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        ReplicationPeerConfig config = readPeerConfig();<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        if (listener != null){<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          listener.peerConfigUpdated(config);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        }<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    }<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>    @Override<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    public synchronized void nodeDataChanged(String path) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      //superclass calls nodeCreated<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      if (path.equals(node)) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        super.nodeDataChanged(path);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
+<span class="sourceLineNo">314</span>}<a name="line.314"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeers.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeers.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeers.html
index 3dc704c..151033e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeers.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationPeers.html
@@ -33,8 +33,8 @@
 <span class="sourceLineNo">025</span><a name="line.25"></a>
 <span class="sourceLineNo">026</span>import org.apache.hadoop.conf.Configuration;<a name="line.26"></a>
 <span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.TableName;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.29"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.29"></a>
 <span class="sourceLineNo">030</span><a name="line.30"></a>
 <span class="sourceLineNo">031</span>/**<a name="line.31"></a>
 <span class="sourceLineNo">032</span> * This provides an interface for maintaining a set of peer clusters. These peers are remote slave<a name="line.32"></a>
@@ -84,7 +84,7 @@
 <span class="sourceLineNo">076</span>   * newly connected cluster.<a name="line.76"></a>
 <span class="sourceLineNo">077</span>   * @param peerId a short that identifies the cluster<a name="line.77"></a>
 <span class="sourceLineNo">078</span>   * @return whether a ReplicationPeer was successfully created<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * @throws ReplicationException<a name="line.79"></a>
+<span class="sourceLineNo">079</span>   * @throws ReplicationException if connecting to the peer fails<a name="line.79"></a>
 <span class="sourceLineNo">080</span>   */<a name="line.80"></a>
 <span class="sourceLineNo">081</span>  boolean peerConnected(String peerId) throws ReplicationException;<a name="line.81"></a>
 <span class="sourceLineNo">082</span><a name="line.82"></a>
@@ -190,7 +190,7 @@
 <span class="sourceLineNo">182</span>   * Update the peerConfig for the a given peer cluster<a name="line.182"></a>
 <span class="sourceLineNo">183</span>   * @param id a short that identifies the cluster<a name="line.183"></a>
 <span class="sourceLineNo">184</span>   * @param peerConfig new config for the peer cluster<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * @throws ReplicationException<a name="line.185"></a>
+<span class="sourceLineNo">185</span>   * @throws ReplicationException if updating the peer configuration fails<a name="line.185"></a>
 <span class="sourceLineNo">186</span>   */<a name="line.186"></a>
 <span class="sourceLineNo">187</span>  void updatePeerConfig(String id, ReplicationPeerConfig peerConfig) throws ReplicationException;<a name="line.187"></a>
 <span class="sourceLineNo">188</span>}<a name="line.188"></a>


[36/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
Published site at .


Project: http://git-wip-us.apache.org/repos/asf/hbase-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase-site/commit/f54ec79f
Tree: http://git-wip-us.apache.org/repos/asf/hbase-site/tree/f54ec79f
Diff: http://git-wip-us.apache.org/repos/asf/hbase-site/diff/f54ec79f

Branch: refs/heads/asf-site
Commit: f54ec79f7a17750bd8443f1c4d2804ece4018a7a
Parents: 8175cf1
Author: jenkins <bu...@apache.org>
Authored: Sun Jan 7 15:30:37 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Sun Jan 7 15:30:37 2018 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |     4 +-
 apache_hbase_reference_guide.pdf                |     4 +-
 book.html                                       |     2 +-
 bulk-loads.html                                 |     4 +-
 checkstyle-aggregate.html                       | 48148 ++++++++---------
 checkstyle.rss                                  |    60 +-
 coc.html                                        |     4 +-
 cygwin.html                                     |     4 +-
 dependencies.html                               |     4 +-
 dependency-convergence.html                     |     4 +-
 dependency-info.html                            |     4 +-
 dependency-management.html                      |     4 +-
 devapidocs/constant-values.html                 |     6 +-
 devapidocs/index-all.html                       |    20 +-
 .../hadoop/hbase/backup/package-tree.html       |     4 +-
 .../hadoop/hbase/client/package-tree.html       |    26 +-
 .../hadoop/hbase/filter/package-tree.html       |     8 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     6 +-
 .../apache/hadoop/hbase/ipc/package-tree.html   |     2 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |     4 +-
 .../hadoop/hbase/master/package-tree.html       |     6 +-
 .../hadoop/hbase/monitoring/package-tree.html   |     2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    16 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     4 +-
 .../hadoop/hbase/quotas/package-tree.html       |     6 +-
 .../hadoop/hbase/regionserver/package-tree.html |    12 +-
 .../hbase/regionserver/wal/package-tree.html    |     2 +-
 .../hbase/replication/ReplicationFactory.html   |    20 +-
 ...ReplicationPeerZKImpl.PeerConfigTracker.html |    12 +-
 .../ReplicationPeerZKImpl.PeerStateTracker.html |     6 +-
 .../replication/ReplicationPeerZKImpl.html      |    46 +-
 .../hbase/replication/ReplicationPeers.html     |     4 +-
 .../replication/ReplicationPeersZKImpl.html     |    68 +-
 .../hbase/replication/ReplicationQueueInfo.html |    16 +-
 .../hbase/replication/ReplicationQueues.html    |    25 +-
 .../ReplicationQueuesClientZKImpl.html          |    24 +-
 .../replication/ReplicationQueuesZKImpl.html    |    13 +-
 .../replication/ReplicationStateZKBase.html     |    48 +-
 ...nTableBase.CreateReplicationTableWorker.html |     6 +-
 .../hbase/replication/ReplicationTableBase.html |     6 +-
 .../hbase/replication/ReplicationTracker.html   |     2 +-
 .../replication/ReplicationTrackerZKImpl.html   |     2 +
 .../replication/regionserver/package-tree.html  |     2 +-
 .../hbase/security/access/package-tree.html     |     2 +-
 .../hadoop/hbase/security/package-tree.html     |     2 +-
 .../hbase/thrift/HbaseHandlerMetricsProxy.html  |     2 +-
 .../IncrementCoalescer.DaemonThreadFactory.html |    14 +-
 .../hadoop/hbase/thrift/IncrementCoalescer.html |    64 +-
 ...undedThreadPoolServer.ClientConnnection.html |     2 +-
 .../hadoop/hbase/thrift/ThriftMetrics.html      |    18 +-
 .../hadoop/hbase/thrift/ThriftServer.html       |    12 +-
 .../thrift/ThriftServerRunner.HBaseHandler.html |   150 +-
 .../ThriftServerRunner.IOErrorWithCause.html    |    12 +-
 .../thrift/ThriftServerRunner.ImplType.html     |    38 +-
 ...ThriftServerRunner.ResultScannerWrapper.html |    12 +-
 .../hadoop/hbase/thrift/ThriftServerRunner.html |   111 +-
 .../hadoop/hbase/thrift/ThriftUtilities.html    |    30 +-
 .../hbase/thrift/class-use/ThriftMetrics.html   |    22 +-
 .../hadoop/hbase/thrift2/ThriftServer.html      |   191 +-
 .../hadoop/hbase/thrift2/ThriftUtilities.html   |    26 +-
 .../hadoop/hbase/thrift2/package-summary.html   |     4 +-
 .../apache/hadoop/hbase/util/package-tree.html  |     8 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     2 +-
 .../org/apache/hadoop/hbase/Version.html        |     6 +-
 .../hbase/replication/ReplicationFactory.html   |    72 +-
 ...ReplicationPeerZKImpl.PeerConfigTracker.html |   485 +-
 .../ReplicationPeerZKImpl.PeerStateTracker.html |   485 +-
 .../replication/ReplicationPeerZKImpl.html      |   485 +-
 .../hbase/replication/ReplicationPeers.html     |     8 +-
 .../replication/ReplicationPeersZKImpl.html     |  1028 +-
 .../hbase/replication/ReplicationQueueInfo.html |   132 +-
 .../hbase/replication/ReplicationQueues.html    |   141 +-
 .../replication/ReplicationQueuesClient.html    |     2 +-
 .../ReplicationQueuesClientZKImpl.html          |   303 +-
 .../replication/ReplicationQueuesZKImpl.html    |   205 +-
 .../replication/ReplicationStateZKBase.html     |   258 +-
 ...nTableBase.CreateReplicationTableWorker.html |   109 +-
 .../hbase/replication/ReplicationTableBase.html |   109 +-
 .../hbase/replication/ReplicationTracker.html   |     2 +-
 ...nTrackerZKImpl.OtherRegionServerWatcher.html |    14 +-
 .../ReplicationTrackerZKImpl.PeersWatcher.html  |    14 +-
 .../replication/ReplicationTrackerZKImpl.html   |    14 +-
 .../hbase/thrift/HbaseHandlerMetricsProxy.html  |     2 +-
 .../IncrementCoalescer.DaemonThreadFactory.html |   522 +-
 .../IncrementCoalescer.FullyQualifiedRow.html   |   522 +-
 .../hadoop/hbase/thrift/IncrementCoalescer.html |   522 +-
 .../thrift/TBoundedThreadPoolServer.Args.html   |     2 +-
 ...undedThreadPoolServer.ClientConnnection.html |     2 +-
 .../hbase/thrift/TBoundedThreadPoolServer.html  |     2 +-
 .../thrift/ThriftMetrics.ThriftServerType.html  |   182 +-
 .../hadoop/hbase/thrift/ThriftMetrics.html      |   182 +-
 .../hadoop/hbase/thrift/ThriftServer.html       |   315 +-
 .../thrift/ThriftServerRunner.HBaseHandler.html |  3672 +-
 .../ThriftServerRunner.IOErrorWithCause.html    |  3672 +-
 .../thrift/ThriftServerRunner.ImplType.html     |  3672 +-
 ...ThriftServerRunner.ResultScannerWrapper.html |  3672 +-
 .../hadoop/hbase/thrift/ThriftServerRunner.html |  3672 +-
 .../hadoop/hbase/thrift/ThriftUtilities.html    |   379 +-
 .../hadoop/hbase/thrift2/ThriftServer.html      |   922 +-
 .../hadoop/hbase/thrift2/ThriftUtilities.html   |   641 +-
 export_control.html                             |     4 +-
 hbase-annotations/checkstyle.html               |     4 +-
 hbase-annotations/dependencies.html             |     4 +-
 hbase-annotations/dependency-convergence.html   |     4 +-
 hbase-annotations/dependency-info.html          |     4 +-
 hbase-annotations/dependency-management.html    |     4 +-
 hbase-annotations/index.html                    |     4 +-
 hbase-annotations/integration.html              |     4 +-
 hbase-annotations/issue-tracking.html           |     4 +-
 hbase-annotations/license.html                  |     4 +-
 hbase-annotations/mail-lists.html               |     4 +-
 hbase-annotations/plugin-management.html        |     4 +-
 hbase-annotations/plugins.html                  |     4 +-
 hbase-annotations/project-info.html             |     4 +-
 hbase-annotations/project-reports.html          |     4 +-
 hbase-annotations/project-summary.html          |     4 +-
 hbase-annotations/source-repository.html        |     4 +-
 hbase-annotations/team-list.html                |     4 +-
 hbase-build-configuration/dependencies.html     |     4 +-
 .../dependency-convergence.html                 |     4 +-
 hbase-build-configuration/dependency-info.html  |     4 +-
 .../dependency-management.html                  |     4 +-
 .../hbase-archetypes/dependencies.html          |     4 +-
 .../dependency-convergence.html                 |     4 +-
 .../hbase-archetypes/dependency-info.html       |     4 +-
 .../hbase-archetypes/dependency-management.html |     4 +-
 .../hbase-archetype-builder/dependencies.html   |     4 +-
 .../dependency-convergence.html                 |     4 +-
 .../dependency-info.html                        |     4 +-
 .../dependency-management.html                  |     4 +-
 .../hbase-archetype-builder/index.html          |     4 +-
 .../hbase-archetype-builder/integration.html    |     4 +-
 .../hbase-archetype-builder/issue-tracking.html |     4 +-
 .../hbase-archetype-builder/license.html        |     4 +-
 .../hbase-archetype-builder/mail-lists.html     |     4 +-
 .../plugin-management.html                      |     4 +-
 .../hbase-archetype-builder/plugins.html        |     4 +-
 .../hbase-archetype-builder/project-info.html   |     4 +-
 .../project-summary.html                        |     4 +-
 .../source-repository.html                      |     4 +-
 .../hbase-archetype-builder/team-list.html      |     4 +-
 .../hbase-client-project/checkstyle.html        |     4 +-
 .../hbase-client-project/dependencies.html      |     4 +-
 .../dependency-convergence.html                 |     4 +-
 .../hbase-client-project/dependency-info.html   |     4 +-
 .../dependency-management.html                  |     4 +-
 .../hbase-client-project/index.html             |     4 +-
 .../hbase-client-project/integration.html       |     4 +-
 .../hbase-client-project/issue-tracking.html    |     4 +-
 .../hbase-client-project/license.html           |     4 +-
 .../hbase-client-project/mail-lists.html        |     4 +-
 .../hbase-client-project/plugin-management.html |     4 +-
 .../hbase-client-project/plugins.html           |     4 +-
 .../hbase-client-project/project-info.html      |     4 +-
 .../hbase-client-project/project-reports.html   |     4 +-
 .../hbase-client-project/project-summary.html   |     4 +-
 .../hbase-client-project/source-repository.html |     4 +-
 .../hbase-client-project/team-list.html         |     4 +-
 .../hbase-shaded-client-project/checkstyle.html |     4 +-
 .../dependencies.html                           |     4 +-
 .../dependency-convergence.html                 |     4 +-
 .../dependency-info.html                        |     4 +-
 .../dependency-management.html                  |     4 +-
 .../hbase-shaded-client-project/index.html      |     4 +-
 .../integration.html                            |     4 +-
 .../issue-tracking.html                         |     4 +-
 .../hbase-shaded-client-project/license.html    |     4 +-
 .../hbase-shaded-client-project/mail-lists.html |     4 +-
 .../plugin-management.html                      |     4 +-
 .../hbase-shaded-client-project/plugins.html    |     4 +-
 .../project-info.html                           |     4 +-
 .../project-reports.html                        |     4 +-
 .../project-summary.html                        |     4 +-
 .../source-repository.html                      |     4 +-
 .../hbase-shaded-client-project/team-list.html  |     4 +-
 .../hbase-archetypes/index.html                 |     4 +-
 .../hbase-archetypes/integration.html           |     4 +-
 .../hbase-archetypes/issue-tracking.html        |     4 +-
 .../hbase-archetypes/license.html               |     4 +-
 .../hbase-archetypes/mail-lists.html            |     4 +-
 .../hbase-archetypes/plugin-management.html     |     4 +-
 .../hbase-archetypes/plugins.html               |     4 +-
 .../hbase-archetypes/project-info.html          |     4 +-
 .../hbase-archetypes/project-summary.html       |     4 +-
 .../hbase-archetypes/source-repository.html     |     4 +-
 .../hbase-archetypes/team-list.html             |     4 +-
 .../hbase-spark/checkstyle.html                 |     4 +-
 .../hbase-spark/dependencies.html               |     4 +-
 .../hbase-spark/dependency-convergence.html     |     4 +-
 .../hbase-spark/dependency-info.html            |     4 +-
 .../hbase-spark/dependency-management.html      |     4 +-
 .../hbase-spark/index.html                      |     4 +-
 .../hbase-spark/integration.html                |     4 +-
 .../hbase-spark/issue-tracking.html             |     4 +-
 .../hbase-spark/license.html                    |     4 +-
 .../hbase-spark/mail-lists.html                 |     4 +-
 .../hbase-spark/plugin-management.html          |     4 +-
 .../hbase-spark/plugins.html                    |     4 +-
 .../hbase-spark/project-info.html               |     4 +-
 .../hbase-spark/project-reports.html            |     4 +-
 .../hbase-spark/project-summary.html            |     4 +-
 .../hbase-spark/source-repository.html          |     4 +-
 .../hbase-spark/team-list.html                  |     4 +-
 hbase-build-configuration/index.html            |     4 +-
 hbase-build-configuration/integration.html      |     4 +-
 hbase-build-configuration/issue-tracking.html   |     4 +-
 hbase-build-configuration/license.html          |     4 +-
 hbase-build-configuration/mail-lists.html       |     4 +-
 .../plugin-management.html                      |     4 +-
 hbase-build-configuration/plugins.html          |     4 +-
 hbase-build-configuration/project-info.html     |     4 +-
 hbase-build-configuration/project-summary.html  |     4 +-
 .../source-repository.html                      |     4 +-
 hbase-build-configuration/team-list.html        |     4 +-
 hbase-shaded-check-invariants/checkstyle.html   |     4 +-
 hbase-shaded-check-invariants/dependencies.html |     4 +-
 .../dependency-convergence.html                 |     4 +-
 .../dependency-info.html                        |     4 +-
 .../dependency-management.html                  |     4 +-
 hbase-shaded-check-invariants/index.html        |     4 +-
 hbase-shaded-check-invariants/integration.html  |     4 +-
 .../issue-tracking.html                         |     4 +-
 hbase-shaded-check-invariants/license.html      |     4 +-
 hbase-shaded-check-invariants/mail-lists.html   |     4 +-
 .../plugin-management.html                      |     4 +-
 hbase-shaded-check-invariants/plugins.html      |     4 +-
 hbase-shaded-check-invariants/project-info.html |     4 +-
 .../project-reports.html                        |     4 +-
 .../project-summary.html                        |     4 +-
 .../source-repository.html                      |     4 +-
 hbase-shaded-check-invariants/team-list.html    |     4 +-
 index.html                                      |     4 +-
 integration.html                                |     4 +-
 issue-tracking.html                             |     4 +-
 license.html                                    |     4 +-
 mail-lists.html                                 |     4 +-
 metrics.html                                    |     4 +-
 old_news.html                                   |     4 +-
 plugin-management.html                          |     4 +-
 plugins.html                                    |     4 +-
 poweredbyhbase.html                             |     4 +-
 project-info.html                               |     4 +-
 project-reports.html                            |     4 +-
 project-summary.html                            |     4 +-
 pseudo-distributed.html                         |     4 +-
 replication.html                                |     4 +-
 resources.html                                  |     4 +-
 source-repository.html                          |     4 +-
 sponsors.html                                   |     4 +-
 supportingprojects.html                         |     4 +-
 team-list.html                                  |     4 +-
 .../client/TestReversedScannerCallable.html     |     4 +-
 .../TestThriftServer.MySlowHBaseHandler.html    |     6 +-
 .../hadoop/hbase/thrift/TestThriftServer.html   |    79 +-
 .../hbase/thrift/TestThriftServerCmdLine.html   |    18 +-
 ...seServiceHandler.DelayingRegionObserver.html |    14 +-
 .../thrift2/TestThriftHBaseServiceHandler.html  |    46 +-
 .../client/TestReversedScannerCallable.html     |    71 +-
 .../hadoop/hbase/thrift/TestCallQueue.html      |     2 +-
 .../hbase/thrift/TestThriftHttpServer.html      |     2 +-
 .../TestThriftServer.MySlowHBaseHandler.html    |  1465 +-
 .../hadoop/hbase/thrift/TestThriftServer.html   |  1465 +-
 .../hbase/thrift/TestThriftServerCmdLine.html   |   315 +-
 ...seServiceHandler.DelayingRegionObserver.html |  1961 +-
 .../thrift2/TestThriftHBaseServiceHandler.html  |  1961 +-
 ...TestThriftHBaseServiceHandlerWithLabels.html |   697 +-
 266 files changed, 40702 insertions(+), 43827 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index de77c25..bd0e4d4 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -606,7 +606,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index ce2fa79..a8a3623 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,8 +5,8 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 1.5.0.alpha.15, based on Prawn 2.2.2)
 /Producer (Apache HBase Team)
-/ModDate (D:20180106144713+00'00')
-/CreationDate (D:20180106144713+00'00')
+/ModDate (D:20180107144850+00'00')
+/CreationDate (D:20180107144850+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index df4682c..87f4833 100644
--- a/book.html
+++ b/book.html
@@ -37140,7 +37140,7 @@ The server will return cellblocks compressed using this same compressor as long
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2018-01-06 14:29:41 UTC
+Last updated 2018-01-07 14:29:49 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index 488482e..682ff01 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180106" />
+    <meta name="Date-Revision-yyyymmdd" content="20180107" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -311,7 +311,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-06</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-07</li>
             </p>
                 </div>
 


[04/36] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f54ec79f/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html
index fb7f062..1e67fe5 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html
@@ -97,163 +97,164 @@
 <span class="sourceLineNo">089</span>            continue;<a name="line.89"></a>
 <span class="sourceLineNo">090</span>          }<a name="line.90"></a>
 <span class="sourceLineNo">091</span>          for (boolean specifyCompact : new boolean[] {false, true}) {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>            parameters.add(new Object[]{implType, specifyFramed,<a name="line.92"></a>
-<span class="sourceLineNo">093</span>                specifyBindIP, specifyCompact});<a name="line.93"></a>
-<span class="sourceLineNo">094</span>          }<a name="line.94"></a>
-<span class="sourceLineNo">095</span>        }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      }<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    }<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    return parameters;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  }<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>  public TestThriftServerCmdLine(ImplType implType, boolean specifyFramed,<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      boolean specifyBindIP, boolean specifyCompact) {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    this.implType = implType;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    this.specifyFramed = specifyFramed;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    this.specifyBindIP = specifyBindIP;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    this.specifyCompact = specifyCompact;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    LOG.debug(getParametersString());<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>  private String getParametersString() {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    return "implType=" + implType + ", " +<a name="line.111"></a>
-<span class="sourceLineNo">112</span>        "specifyFramed=" + specifyFramed + ", " +<a name="line.112"></a>
-<span class="sourceLineNo">113</span>        "specifyBindIP=" + specifyBindIP + ", " +<a name="line.113"></a>
-<span class="sourceLineNo">114</span>        "specifyCompact=" + specifyCompact;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  }<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  @BeforeClass<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  public static void setUpBeforeClass() throws Exception {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    TEST_UTIL.getConfiguration().setBoolean("hbase.table.sanity.checks", false);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    TEST_UTIL.startMiniCluster();<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    //ensure that server time increments every time we do an operation, otherwise<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    //successive puts having the same timestamp will override each other<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    EnvironmentEdgeManagerTestHelper.injectEdge(new IncrementingEnvironmentEdge());<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  @AfterClass<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public static void tearDownAfterClass() throws Exception {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    EnvironmentEdgeManager.reset();<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  }<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private void startCmdLineThread(final String[] args) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    LOG.info("Starting HBase Thrift server with command line: " + Joiner.on(" ").join(args));<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>    cmdLineException = null;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    cmdLineThread = new Thread(new Runnable() {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      @Override<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      public void run() {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>        try {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>          thriftServer.doMain(args);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>        } catch (Exception e) {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>          cmdLineException = e;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        }<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      }<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    });<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    cmdLineThread.setName(ThriftServer.class.getSimpleName() +<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        "-cmdline");<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    cmdLineThread.start();<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  }<a name="line.149"></a>
-<span class="sourceLineNo">150</span><a name="line.150"></a>
-<span class="sourceLineNo">151</span>  @Test(timeout=600000)<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public void testRunThriftServer() throws Exception {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    List&lt;String&gt; args = new ArrayList&lt;&gt;();<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    if (implType != null) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      String serverTypeOption = implType.toString();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      assertTrue(serverTypeOption.startsWith("-"));<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      args.add(serverTypeOption);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    port = HBaseTestingUtility.randomFreePort();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    args.add("-" + ThriftServer.PORT_OPTION);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    args.add(String.valueOf(port));<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    args.add("-infoport");<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    int infoPort = HBaseTestingUtility.randomFreePort();<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    args.add(String.valueOf(infoPort));<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>    if (specifyFramed) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      args.add("-" + ThriftServer.FRAMED_OPTION);<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    if (specifyBindIP) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      args.add("-" + ThriftServer.BIND_OPTION);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      args.add(InetAddress.getLocalHost().getHostName());<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    if (specifyCompact) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      args.add("-" + ThriftServer.COMPACT_OPTION);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    }<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    args.add("start");<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>    thriftServer = new ThriftServer(TEST_UTIL.getConfiguration());<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    startCmdLineThread(args.toArray(new String[args.size()]));<a name="line.179"></a>
-<span class="sourceLineNo">180</span><a name="line.180"></a>
-<span class="sourceLineNo">181</span>    // wait up to 10s for the server to start<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    for (int i = 0; i &lt; 100<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        &amp;&amp; (thriftServer.serverRunner == null || thriftServer.serverRunner.tserver == null); i++) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      Thread.sleep(100);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>    Class&lt;? extends TServer&gt; expectedClass = implType != null ?<a name="line.187"></a>
-<span class="sourceLineNo">188</span>        implType.serverClass : TBoundedThreadPoolServer.class;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    assertEquals(expectedClass,<a name="line.189"></a>
-<span class="sourceLineNo">190</span>                 thriftServer.serverRunner.tserver.getClass());<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    try {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      talkToThriftServer();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    } catch (Exception ex) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      clientSideException = ex;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    } finally {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      stopCmdLineThread();<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
-<span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>    if (clientSideException != null) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      LOG.error("Thrift client threw an exception. Parameters:" +<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          getParametersString(), clientSideException);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      throw new Exception(clientSideException);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  }<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>  private static volatile boolean tableCreated = false;<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  private void talkToThriftServer() throws Exception {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    TSocket sock = new TSocket(InetAddress.getLocalHost().getHostName(),<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        port);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    TTransport transport = sock;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    if (specifyFramed || implType.isAlwaysFramed) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      transport = new TFramedTransport(transport);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>    sock.open();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    try {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      TProtocol prot;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      if (specifyCompact) {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>        prot = new TCompactProtocol(transport);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      } else {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>        prot = new TBinaryProtocol(transport);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      Hbase.Client client = new Hbase.Client(prot);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      if (!tableCreated){<a name="line.226"></a>
-<span class="sourceLineNo">227</span>        TestThriftServer.createTestTables(client);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        tableCreated = true;<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      }<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      TestThriftServer.checkTableList(client);<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>    } finally {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      sock.close();<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  }<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>  private void stopCmdLineThread() throws Exception {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    LOG.debug("Stopping " + implType.simpleClassName() + " Thrift server");<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    thriftServer.stop();<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    cmdLineThread.join();<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    if (cmdLineException != null) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      LOG.error("Command-line invocation of HBase Thrift server threw an " +<a name="line.242"></a>
-<span class="sourceLineNo">243</span>          "exception", cmdLineException);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      throw new Exception(cmdLineException);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>  }<a name="line.246"></a>
-<span class="sourceLineNo">247</span>}<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
+<span class="sourceLineNo">092</span>            parameters.add(new Object[] {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>              implType, specifyFramed, specifyBindIP, specifyCompact<a name="line.93"></a>
+<span class="sourceLineNo">094</span>            });<a name="line.94"></a>
+<span class="sourceLineNo">095</span>          }<a name="line.95"></a>
+<span class="sourceLineNo">096</span>        }<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      }<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    return parameters;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  }<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>  public TestThriftServerCmdLine(ImplType implType, boolean specifyFramed,<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      boolean specifyBindIP, boolean specifyCompact) {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    this.implType = implType;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    this.specifyFramed = specifyFramed;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    this.specifyBindIP = specifyBindIP;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    this.specifyCompact = specifyCompact;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    LOG.debug(getParametersString());<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  }<a name="line.109"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private String getParametersString() {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    return "implType=" + implType + ", " +<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        "specifyFramed=" + specifyFramed + ", " +<a name="line.113"></a>
+<span class="sourceLineNo">114</span>        "specifyBindIP=" + specifyBindIP + ", " +<a name="line.114"></a>
+<span class="sourceLineNo">115</span>        "specifyCompact=" + specifyCompact;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  @BeforeClass<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  public static void setUpBeforeClass() throws Exception {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    TEST_UTIL.getConfiguration().setBoolean("hbase.table.sanity.checks", false);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    TEST_UTIL.startMiniCluster();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    //ensure that server time increments every time we do an operation, otherwise<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    //successive puts having the same timestamp will override each other<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    EnvironmentEdgeManagerTestHelper.injectEdge(new IncrementingEnvironmentEdge());<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  }<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>  @AfterClass<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  public static void tearDownAfterClass() throws Exception {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    EnvironmentEdgeManager.reset();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private void startCmdLineThread(final String[] args) {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    LOG.info("Starting HBase Thrift server with command line: " + Joiner.on(" ").join(args));<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    cmdLineException = null;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    cmdLineThread = new Thread(new Runnable() {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      @Override<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      public void run() {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        try {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>          thriftServer.doMain(args);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>        } catch (Exception e) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>          cmdLineException = e;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        }<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      }<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    });<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    cmdLineThread.setName(ThriftServer.class.getSimpleName() +<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        "-cmdline");<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    cmdLineThread.start();<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  @Test(timeout=600000)<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  public void testRunThriftServer() throws Exception {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    List&lt;String&gt; args = new ArrayList&lt;&gt;();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    if (implType != null) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      String serverTypeOption = implType.toString();<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      assertTrue(serverTypeOption.startsWith("-"));<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      args.add(serverTypeOption);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    port = HBaseTestingUtility.randomFreePort();<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    args.add("-" + ThriftServer.PORT_OPTION);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    args.add(String.valueOf(port));<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    args.add("-infoport");<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    int infoPort = HBaseTestingUtility.randomFreePort();<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    args.add(String.valueOf(infoPort));<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span>    if (specifyFramed) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      args.add("-" + ThriftServer.FRAMED_OPTION);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    }<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    if (specifyBindIP) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      args.add("-" + ThriftServer.BIND_OPTION);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      args.add(InetAddress.getLocalHost().getHostName());<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    }<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    if (specifyCompact) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      args.add("-" + ThriftServer.COMPACT_OPTION);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    }<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    args.add("start");<a name="line.177"></a>
+<span class="sourceLineNo">178</span><a name="line.178"></a>
+<span class="sourceLineNo">179</span>    thriftServer = new ThriftServer(TEST_UTIL.getConfiguration());<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    startCmdLineThread(args.toArray(new String[args.size()]));<a name="line.180"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span>    // wait up to 10s for the server to start<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    for (int i = 0; i &lt; 100<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        &amp;&amp; (thriftServer.serverRunner == null || thriftServer.serverRunner.tserver == null); i++) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      Thread.sleep(100);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    }<a name="line.186"></a>
+<span class="sourceLineNo">187</span><a name="line.187"></a>
+<span class="sourceLineNo">188</span>    Class&lt;? extends TServer&gt; expectedClass = implType != null ?<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        implType.serverClass : TBoundedThreadPoolServer.class;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    assertEquals(expectedClass,<a name="line.190"></a>
+<span class="sourceLineNo">191</span>                 thriftServer.serverRunner.tserver.getClass());<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>    try {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      talkToThriftServer();<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    } catch (Exception ex) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      clientSideException = ex;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    } finally {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      stopCmdLineThread();<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    }<a name="line.199"></a>
+<span class="sourceLineNo">200</span><a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (clientSideException != null) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      LOG.error("Thrift client threw an exception. Parameters:" +<a name="line.202"></a>
+<span class="sourceLineNo">203</span>          getParametersString(), clientSideException);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      throw new Exception(clientSideException);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
+<span class="sourceLineNo">206</span>  }<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>  private static volatile boolean tableCreated = false;<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span>  private void talkToThriftServer() throws Exception {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    TSocket sock = new TSocket(InetAddress.getLocalHost().getHostName(),<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        port);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    TTransport transport = sock;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    if (specifyFramed || implType.isAlwaysFramed) {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      transport = new TFramedTransport(transport);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    }<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
+<span class="sourceLineNo">218</span>    sock.open();<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    try {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      TProtocol prot;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      if (specifyCompact) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>        prot = new TCompactProtocol(transport);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      } else {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>        prot = new TBinaryProtocol(transport);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      }<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      Hbase.Client client = new Hbase.Client(prot);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      if (!tableCreated){<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        TestThriftServer.createTestTables(client);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        tableCreated = true;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      }<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      TestThriftServer.checkTableList(client);<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>    } finally {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      sock.close();<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    }<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>  private void stopCmdLineThread() throws Exception {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    LOG.debug("Stopping " + implType.simpleClassName() + " Thrift server");<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    thriftServer.stop();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    cmdLineThread.join();<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    if (cmdLineException != null) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      LOG.error("Command-line invocation of HBase Thrift server threw an " +<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          "exception", cmdLineException);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      throw new Exception(cmdLineException);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    }<a name="line.246"></a>
+<span class="sourceLineNo">247</span>  }<a name="line.247"></a>
+<span class="sourceLineNo">248</span>}<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>