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 2019/01/02 14:53:01 UTC

[01/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site 33046fea5 -> 849d84a8e


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html
index ba3df71..f983a2d 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html
@@ -26,247 +26,242 @@
 <span class="sourceLineNo">018</span> */<a name="line.18"></a>
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.thrift;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_KERBEROS_PRINCIPAL_KEY;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_KEYTAB_FILE_KEY;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SPNEGO_KEYTAB_FILE_KEY;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SPNEGO_PRINCIPAL_KEY;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SUPPORT_PROXYUSER_KEY;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import static org.apache.hadoop.hbase.thrift.ThriftServerRunner.USE_HTTP_CONF_KEY;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import static org.junit.Assert.assertFalse;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import static org.junit.Assert.assertNotNull;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import static org.junit.Assert.assertTrue;<a name="line.29"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_SUPPORT_PROXYUSER_KEY;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.junit.Assert.assertFalse;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNotNull;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.junit.Assert.assertTrue;<a name="line.24"></a>
+<span class="sourceLineNo">025</span><a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.io.File;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.security.Principal;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.security.PrivilegedExceptionAction;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.Set;<a name="line.29"></a>
 <span class="sourceLineNo">030</span><a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.io.File;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.security.Principal;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.security.PrivilegedExceptionAction;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.Set;<a name="line.34"></a>
-<span class="sourceLineNo">035</span><a name="line.35"></a>
-<span class="sourceLineNo">036</span>import javax.security.auth.Subject;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import javax.security.auth.kerberos.KerberosTicket;<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.commons.io.FileUtils;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.conf.Configuration;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.HConstants;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.security.HBaseKerberosUtils;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.thrift.generated.Hbase;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.security.authentication.util.KerberosName;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.http.HttpHeaders;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.http.auth.AuthSchemeProvider;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.http.auth.AuthScope;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.http.auth.KerberosCredentials;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.http.client.config.AuthSchemes;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.http.config.Lookup;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.http.config.RegistryBuilder;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.http.impl.auth.SPNegoSchemeFactory;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.http.impl.client.BasicCredentialsProvider;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.http.impl.client.CloseableHttpClient;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.http.impl.client.HttpClients;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.kerby.kerberos.kerb.KrbException;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.kerby.kerberos.kerb.client.JaasKrbUtil;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.kerby.kerberos.kerb.server.SimpleKdcServer;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.thrift.protocol.TBinaryProtocol;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.thrift.protocol.TProtocol;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.thrift.transport.THttpClient;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.ietf.jgss.GSSCredential;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.ietf.jgss.GSSManager;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.ietf.jgss.GSSName;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.ietf.jgss.Oid;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.junit.AfterClass;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.junit.BeforeClass;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.junit.ClassRule;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.junit.experimental.categories.Category;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.slf4j.Logger;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.slf4j.LoggerFactory;<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> * Start the HBase Thrift HTTP server on a random port through the command-line<a name="line.78"></a>
-<span class="sourceLineNo">079</span> * interface and talk to it from client side with SPNEGO security enabled.<a name="line.79"></a>
-<span class="sourceLineNo">080</span> */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>@Category({ClientTests.class, LargeTests.class})<a name="line.81"></a>
-<span class="sourceLineNo">082</span>public class TestThriftSpnegoHttpServer extends TestThriftHttpServer {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  @ClassRule<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    HBaseClassTestRule.forClass(TestThriftSpnegoHttpServer.class);<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>  private static final Logger LOG =<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    LoggerFactory.getLogger(TestThriftSpnegoHttpServer.class);<a name="line.88"></a>
+<span class="sourceLineNo">031</span>import javax.security.auth.Subject;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import javax.security.auth.kerberos.KerberosTicket;<a name="line.32"></a>
+<span class="sourceLineNo">033</span><a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.commons.io.FileUtils;<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.HBaseClassTestRule;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.HConstants;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.security.HBaseKerberosUtils;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.thrift.generated.Hbase;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.security.authentication.util.KerberosName;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.http.HttpHeaders;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.http.auth.AuthSchemeProvider;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.http.auth.AuthScope;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.http.auth.KerberosCredentials;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.http.client.config.AuthSchemes;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.http.config.Lookup;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.http.config.RegistryBuilder;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.http.impl.auth.SPNegoSchemeFactory;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.http.impl.client.BasicCredentialsProvider;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.http.impl.client.CloseableHttpClient;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.http.impl.client.HttpClients;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.kerby.kerberos.kerb.KrbException;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.kerby.kerberos.kerb.client.JaasKrbUtil;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.kerby.kerberos.kerb.server.SimpleKdcServer;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.thrift.protocol.TBinaryProtocol;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.thrift.protocol.TProtocol;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.thrift.transport.THttpClient;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.ietf.jgss.GSSCredential;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.ietf.jgss.GSSManager;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.ietf.jgss.GSSName;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.ietf.jgss.Oid;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.junit.AfterClass;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.junit.BeforeClass;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.junit.ClassRule;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.junit.experimental.categories.Category;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.slf4j.Logger;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.slf4j.LoggerFactory;<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> * Start the HBase Thrift HTTP server on a random port through the command-line<a name="line.73"></a>
+<span class="sourceLineNo">074</span> * interface and talk to it from client side with SPNEGO security enabled.<a name="line.74"></a>
+<span class="sourceLineNo">075</span> */<a name="line.75"></a>
+<span class="sourceLineNo">076</span>@Category({ClientTests.class, LargeTests.class})<a name="line.76"></a>
+<span class="sourceLineNo">077</span>public class TestThriftSpnegoHttpServer extends TestThriftHttpServer {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  @ClassRule<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    HBaseClassTestRule.forClass(TestThriftSpnegoHttpServer.class);<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  private static final Logger LOG =<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    LoggerFactory.getLogger(TestThriftSpnegoHttpServer.class);<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  private static SimpleKdcServer kdc;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private static File serverKeytab;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  private static File spnegoServerKeytab;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private static File clientKeytab;<a name="line.88"></a>
 <span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private static SimpleKdcServer kdc;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private static File serverKeytab;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  private static File spnegoServerKeytab;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private static File clientKeytab;<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private static String clientPrincipal;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  private static String serverPrincipal;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  private static String spnegoServerPrincipal;<a name="line.97"></a>
-<span class="sourceLineNo">098</span><a name="line.98"></a>
-<span class="sourceLineNo">099</span>  private static void setupUser(SimpleKdcServer kdc, File keytab, String principal)<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      throws KrbException {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    kdc.createPrincipal(principal);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    kdc.exportPrincipal(principal, keytab);<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>  private static SimpleKdcServer buildMiniKdc() throws Exception {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    SimpleKdcServer kdc = new SimpleKdcServer();<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>    final File target = new File(System.getProperty("user.dir"), "target");<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    File kdcDir = new File(target, TestThriftSpnegoHttpServer.class.getSimpleName());<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    if (kdcDir.exists()) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      FileUtils.deleteDirectory(kdcDir);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    kdcDir.mkdirs();<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    kdc.setWorkDir(kdcDir);<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span>    kdc.setKdcHost(HConstants.LOCALHOST);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    int kdcPort = HBaseTestingUtility.randomFreePort();<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    kdc.setAllowTcp(true);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    kdc.setAllowUdp(false);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    kdc.setKdcTcpPort(kdcPort);<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>    LOG.info("Starting KDC server at " + HConstants.LOCALHOST + ":" + kdcPort);<a name="line.122"></a>
+<span class="sourceLineNo">090</span>  private static String clientPrincipal;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  private static String serverPrincipal;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private static String spnegoServerPrincipal;<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  private static void setupUser(SimpleKdcServer kdc, File keytab, String principal)<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      throws KrbException {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    kdc.createPrincipal(principal);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    kdc.exportPrincipal(principal, keytab);<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>  private static SimpleKdcServer buildMiniKdc() throws Exception {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    SimpleKdcServer kdc = new SimpleKdcServer();<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>    final File target = new File(System.getProperty("user.dir"), "target");<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    File kdcDir = new File(target, TestThriftSpnegoHttpServer.class.getSimpleName());<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    if (kdcDir.exists()) {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      FileUtils.deleteDirectory(kdcDir);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    }<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    kdcDir.mkdirs();<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    kdc.setWorkDir(kdcDir);<a name="line.109"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>    kdc.setKdcHost(HConstants.LOCALHOST);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    int kdcPort = HBaseTestingUtility.randomFreePort();<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    kdc.setAllowTcp(true);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    kdc.setAllowUdp(false);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    kdc.setKdcTcpPort(kdcPort);<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>    LOG.info("Starting KDC server at " + HConstants.LOCALHOST + ":" + kdcPort);<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span>    kdc.init();<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>    return kdc;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  }<a name="line.122"></a>
 <span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>    kdc.init();<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>    return kdc;<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>  private static void addSecurityConfigurations(Configuration conf) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    KerberosName.setRules("DEFAULT");<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>    HBaseKerberosUtils.setKeytabFileForTesting(serverKeytab.getAbsolutePath());<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    HBaseKerberosUtils.setSecuredConfiguration(conf, serverPrincipal, spnegoServerPrincipal);<a name="line.133"></a>
+<span class="sourceLineNo">124</span>  private static void addSecurityConfigurations(Configuration conf) {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    KerberosName.setRules("DEFAULT");<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>    HBaseKerberosUtils.setKeytabFileForTesting(serverKeytab.getAbsolutePath());<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    HBaseKerberosUtils.setSecuredConfiguration(conf, serverPrincipal, spnegoServerPrincipal);<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>    conf.setBoolean(THRIFT_SUPPORT_PROXYUSER_KEY, true);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    conf.setBoolean(Constants.USE_HTTP_CONF_KEY, true);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    conf.set("hadoop.proxyuser.hbase.hosts", "*");<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    conf.set("hadoop.proxyuser.hbase.groups", "*");<a name="line.133"></a>
 <span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>    conf.setBoolean(THRIFT_SUPPORT_PROXYUSER_KEY, true);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    conf.setBoolean(USE_HTTP_CONF_KEY, true);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    conf.set("hadoop.proxyuser.hbase.hosts", "*");<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    conf.set("hadoop.proxyuser.hbase.groups", "*");<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span>    conf.set(THRIFT_KERBEROS_PRINCIPAL_KEY, serverPrincipal);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    conf.set(THRIFT_KEYTAB_FILE_KEY, serverKeytab.getAbsolutePath());<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    conf.set(THRIFT_SPNEGO_PRINCIPAL_KEY, spnegoServerPrincipal);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    conf.set(THRIFT_SPNEGO_KEYTAB_FILE_KEY, spnegoServerKeytab.getAbsolutePath());<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  }<a name="line.144"></a>
+<span class="sourceLineNo">135</span>    conf.set(Constants.THRIFT_KERBEROS_PRINCIPAL_KEY, serverPrincipal);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    conf.set(Constants.THRIFT_KEYTAB_FILE_KEY, serverKeytab.getAbsolutePath());<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    conf.set(Constants.THRIFT_SPNEGO_PRINCIPAL_KEY, spnegoServerPrincipal);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    conf.set(Constants.THRIFT_SPNEGO_KEYTAB_FILE_KEY, spnegoServerKeytab.getAbsolutePath());<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>  @BeforeClass<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  public static void setUpBeforeClass() throws Exception {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    final File target = new File(System.getProperty("user.dir"), "target");<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    assertTrue(target.exists());<a name="line.144"></a>
 <span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>  @BeforeClass<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  public static void setUpBeforeClass() throws Exception {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    final File target = new File(System.getProperty("user.dir"), "target");<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    assertTrue(target.exists());<a name="line.149"></a>
-<span class="sourceLineNo">150</span><a name="line.150"></a>
-<span class="sourceLineNo">151</span>    File keytabDir = new File(target, TestThriftSpnegoHttpServer.class.getSimpleName() +<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      "_keytabs");<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    if (keytabDir.exists()) {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      FileUtils.deleteDirectory(keytabDir);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    keytabDir.mkdirs();<a name="line.156"></a>
-<span class="sourceLineNo">157</span><a name="line.157"></a>
-<span class="sourceLineNo">158</span>    kdc = buildMiniKdc();<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    kdc.start();<a name="line.159"></a>
-<span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>    clientPrincipal = "client@" + kdc.getKdcConfig().getKdcRealm();<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    clientKeytab = new File(keytabDir, clientPrincipal + ".keytab");<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    setupUser(kdc, clientKeytab, clientPrincipal);<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>    serverPrincipal = "hbase/" + HConstants.LOCALHOST + "@" + kdc.getKdcConfig().getKdcRealm();<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    serverKeytab = new File(keytabDir, serverPrincipal.replace('/', '_') + ".keytab");<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    setupUser(kdc, serverKeytab, serverPrincipal);<a name="line.167"></a>
-<span class="sourceLineNo">168</span><a name="line.168"></a>
-<span class="sourceLineNo">169</span>    spnegoServerPrincipal = "HTTP/" + HConstants.LOCALHOST + "@" + kdc.getKdcConfig().getKdcRealm();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    spnegoServerKeytab = new File(keytabDir, spnegoServerPrincipal.replace('/', '_') + ".keytab");<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    setupUser(kdc, spnegoServerKeytab, spnegoServerPrincipal);<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>    TEST_UTIL.getConfiguration().setBoolean(USE_HTTP_CONF_KEY, true);<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    TEST_UTIL.getConfiguration().setBoolean("hbase.table.sanity.checks", false);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    addSecurityConfigurations(TEST_UTIL.getConfiguration());<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>    TestThriftHttpServer.setUpBeforeClass();<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>  @AfterClass<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  public static void tearDownAfterClass() throws Exception {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    TestThriftHttpServer.tearDownAfterClass();<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>    try {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      if (null != kdc) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>        kdc.stop();<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    } catch (Exception e) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      LOG.info("Failed to stop mini KDC", 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>  void talkToThriftServer(String url, int customHeaderSize) throws Exception {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    // Close httpClient and THttpClient automatically on any failures<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    try (<a name="line.196"></a>
-<span class="sourceLineNo">197</span>        CloseableHttpClient httpClient = createHttpClient();<a name="line.197"></a>
-<span class="sourceLineNo">198</span>        THttpClient tHttpClient = new THttpClient(url, httpClient)<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    ) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      tHttpClient.open();<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      if (customHeaderSize &gt; 0) {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>        StringBuilder sb = new StringBuilder();<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        for (int i = 0; i &lt; customHeaderSize; i++) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>          sb.append("a");<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>        tHttpClient.setCustomHeader(HttpHeaders.USER_AGENT, sb.toString());<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>      TProtocol prot = new TBinaryProtocol(tHttpClient);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      Hbase.Client client = new Hbase.Client(prot);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      if (!tableCreated) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        TestThriftServer.createTestTables(client);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>        tableCreated = true;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      TestThriftServer.checkTableList(client);<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>  private CloseableHttpClient createHttpClient() throws Exception {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    final Subject clientSubject = JaasKrbUtil.loginUsingKeytab(clientPrincipal, clientKeytab);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    final Set&lt;Principal&gt; clientPrincipals = clientSubject.getPrincipals();<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    // Make sure the subject has a principal<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    assertFalse(clientPrincipals.isEmpty());<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>    // Get a TGT for the subject (might have many, different encryption types). The first should<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    // be the default encryption type.<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    Set&lt;KerberosTicket&gt; privateCredentials =<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        clientSubject.getPrivateCredentials(KerberosTicket.class);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    assertFalse(privateCredentials.isEmpty());<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    KerberosTicket tgt = privateCredentials.iterator().next();<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    assertNotNull(tgt);<a name="line.231"></a>
-<span class="sourceLineNo">232</span><a name="line.232"></a>
-<span class="sourceLineNo">233</span>    // The name of the principal<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    final String clientPrincipalName = clientPrincipals.iterator().next().getName();<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>    return Subject.doAs(clientSubject, new PrivilegedExceptionAction&lt;CloseableHttpClient&gt;() {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      @Override<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      public CloseableHttpClient run() throws Exception {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        // Logs in with Kerberos via GSS<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        GSSManager gssManager = GSSManager.getInstance();<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        // jGSS Kerberos login constant<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        Oid oid = new Oid("1.2.840.113554.1.2.2");<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        GSSName gssClient = gssManager.createName(clientPrincipalName, GSSName.NT_USER_NAME);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        GSSCredential credential = gssManager.createCredential(gssClient,<a name="line.244"></a>
-<span class="sourceLineNo">245</span>            GSSCredential.DEFAULT_LIFETIME, oid, GSSCredential.INITIATE_ONLY);<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>        Lookup&lt;AuthSchemeProvider&gt; authRegistry = RegistryBuilder.&lt;AuthSchemeProvider&gt;create()<a name="line.247"></a>
-<span class="sourceLineNo">248</span>            .register(AuthSchemes.SPNEGO, new SPNegoSchemeFactory(true, true))<a name="line.248"></a>
-<span class="sourceLineNo">249</span>            .build();<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>        BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>        credentialsProvider.setCredentials(AuthScope.ANY, new KerberosCredentials(credential));<a name="line.252"></a>
-<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>        return HttpClients.custom()<a name="line.254"></a>
-<span class="sourceLineNo">255</span>            .setDefaultAuthSchemeRegistry(authRegistry)<a name="line.255"></a>
-<span class="sourceLineNo">256</span>            .setDefaultCredentialsProvider(credentialsProvider)<a name="line.256"></a>
-<span class="sourceLineNo">257</span>            .build();<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>}<a name="line.261"></a>
+<span class="sourceLineNo">146</span>    File keytabDir = new File(target, TestThriftSpnegoHttpServer.class.getSimpleName() +<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      "_keytabs");<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    if (keytabDir.exists()) {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      FileUtils.deleteDirectory(keytabDir);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    keytabDir.mkdirs();<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    kdc = buildMiniKdc();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    kdc.start();<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span>    clientPrincipal = "client@" + kdc.getKdcConfig().getKdcRealm();<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    clientKeytab = new File(keytabDir, clientPrincipal + ".keytab");<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    setupUser(kdc, clientKeytab, clientPrincipal);<a name="line.158"></a>
+<span class="sourceLineNo">159</span><a name="line.159"></a>
+<span class="sourceLineNo">160</span>    serverPrincipal = "hbase/" + HConstants.LOCALHOST + "@" + kdc.getKdcConfig().getKdcRealm();<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    serverKeytab = new File(keytabDir, serverPrincipal.replace('/', '_') + ".keytab");<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    setupUser(kdc, serverKeytab, serverPrincipal);<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>    spnegoServerPrincipal = "HTTP/" + HConstants.LOCALHOST + "@" + kdc.getKdcConfig().getKdcRealm();<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    spnegoServerKeytab = new File(keytabDir, spnegoServerPrincipal.replace('/', '_') + ".keytab");<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    setupUser(kdc, spnegoServerKeytab, spnegoServerPrincipal);<a name="line.166"></a>
+<span class="sourceLineNo">167</span><a name="line.167"></a>
+<span class="sourceLineNo">168</span>    TEST_UTIL.getConfiguration().setBoolean(Constants.USE_HTTP_CONF_KEY, true);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    TEST_UTIL.getConfiguration().setBoolean("hbase.table.sanity.checks", false);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    addSecurityConfigurations(TEST_UTIL.getConfiguration());<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>    TestThriftHttpServer.setUpBeforeClass();<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>  @AfterClass<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  public static void tearDownAfterClass() throws Exception {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    TestThriftHttpServer.tearDownAfterClass();<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>      if (null != kdc) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>        kdc.stop();<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      }<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    } catch (Exception e) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      LOG.info("Failed to stop mini KDC", e);<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><a name="line.187"></a>
+<span class="sourceLineNo">188</span>  @Override<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  protected void talkToThriftServer(String url, int customHeaderSize) throws Exception {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    // Close httpClient and THttpClient automatically on any failures<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    try (<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        CloseableHttpClient httpClient = createHttpClient();<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        THttpClient tHttpClient = new THttpClient(url, httpClient)<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    ) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      tHttpClient.open();<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      if (customHeaderSize &gt; 0) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        StringBuilder sb = new StringBuilder();<a name="line.197"></a>
+<span class="sourceLineNo">198</span>        for (int i = 0; i &lt; customHeaderSize; i++) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>          sb.append("a");<a name="line.199"></a>
+<span class="sourceLineNo">200</span>        }<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        tHttpClient.setCustomHeader(HttpHeaders.USER_AGENT, sb.toString());<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>      TProtocol prot = new TBinaryProtocol(tHttpClient);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      Hbase.Client client = new Hbase.Client(prot);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      if (!tableCreated) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        TestThriftServer.createTestTables(client);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>        tableCreated = true;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      }<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      TestThriftServer.checkTableList(client);<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><a name="line.213"></a>
+<span class="sourceLineNo">214</span>  private CloseableHttpClient createHttpClient() throws Exception {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    final Subject clientSubject = JaasKrbUtil.loginUsingKeytab(clientPrincipal, clientKeytab);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    final Set&lt;Principal&gt; clientPrincipals = clientSubject.getPrincipals();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    // Make sure the subject has a principal<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    assertFalse(clientPrincipals.isEmpty());<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>    // Get a TGT for the subject (might have many, different encryption types). The first should<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    // be the default encryption type.<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    Set&lt;KerberosTicket&gt; privateCredentials =<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        clientSubject.getPrivateCredentials(KerberosTicket.class);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    assertFalse(privateCredentials.isEmpty());<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    KerberosTicket tgt = privateCredentials.iterator().next();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    assertNotNull(tgt);<a name="line.226"></a>
+<span class="sourceLineNo">227</span><a name="line.227"></a>
+<span class="sourceLineNo">228</span>    // The name of the principal<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    final String clientPrincipalName = clientPrincipals.iterator().next().getName();<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>    return Subject.doAs(clientSubject, new PrivilegedExceptionAction&lt;CloseableHttpClient&gt;() {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      @Override<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      public CloseableHttpClient run() throws Exception {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        // Logs in with Kerberos via GSS<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        GSSManager gssManager = GSSManager.getInstance();<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        // jGSS Kerberos login constant<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        Oid oid = new Oid("1.2.840.113554.1.2.2");<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        GSSName gssClient = gssManager.createName(clientPrincipalName, GSSName.NT_USER_NAME);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        GSSCredential credential = gssManager.createCredential(gssClient,<a name="line.239"></a>
+<span class="sourceLineNo">240</span>            GSSCredential.DEFAULT_LIFETIME, oid, GSSCredential.INITIATE_ONLY);<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>        Lookup&lt;AuthSchemeProvider&gt; authRegistry = RegistryBuilder.&lt;AuthSchemeProvider&gt;create()<a name="line.242"></a>
+<span class="sourceLineNo">243</span>            .register(AuthSchemes.SPNEGO, new SPNegoSchemeFactory(true, true))<a name="line.243"></a>
+<span class="sourceLineNo">244</span>            .build();<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>        BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider();<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        credentialsProvider.setCredentials(AuthScope.ANY, new KerberosCredentials(credential));<a name="line.247"></a>
+<span class="sourceLineNo">248</span><a name="line.248"></a>
+<span class="sourceLineNo">249</span>        return HttpClients.custom()<a name="line.249"></a>
+<span class="sourceLineNo">250</span>            .setDefaultAuthSchemeRegistry(authRegistry)<a name="line.250"></a>
+<span class="sourceLineNo">251</span>            .setDefaultCredentialsProvider(credentialsProvider)<a name="line.251"></a>
+<span class="sourceLineNo">252</span>            .build();<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>  }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>}<a name="line.256"></a>
 
 
 


[42/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html b/devapidocs/org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html
new file mode 100644
index 0000000..f48b7d4
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html
@@ -0,0 +1,459 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>HBaseServiceHandler (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="HBaseServiceHandler (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/HBaseServiceHandler.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/HThreadedSelectorServerArgs.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" target="_top">Frames</a></li>
+<li><a href="HBaseServiceHandler.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.thrift</div>
+<h2 title="Class HBaseServiceHandler" class="title">Class HBaseServiceHandler</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.thrift.HBaseServiceHandler</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>Direct Known Subclasses:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dd>
+</dl>
+<hr>
+<br>
+<pre>@InterfaceAudience.LimitedPrivate(value="Tools")
+public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#line.38">HBaseServiceHandler</a>
+extends <a href="https://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">abstract class for HBase handler
+ providing a Connection cache and get table/admin method</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/HBaseServiceHandler.html#CLEANUP_INTERVAL">CLEANUP_INTERVAL</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected org.apache.hadoop.conf.Configuration</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#conf">conf</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/util/ConnectionCache.html" title="class in org.apache.hadoop.hbase.util">ConnectionCache</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#connectionCache">connectionCache</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/HBaseServiceHandler.html#MAX_IDLETIME">MAX_IDLETIME</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#metrics">metrics</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<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>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#HBaseServiceHandler-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.UserProvider-">HBaseServiceHandler</a></span>(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)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#getAdmin--">getAdmin</a></span>()</code>
+<div class="block">Obtain HBaseAdmin.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#getTable-byte:A-">getTable</a></span>(byte[]&nbsp;tableName)</code>
+<div class="block">Creates and returns a Table instance from a given table name.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#getTable-java.nio.ByteBuffer-">getTable</a></span>(<a href="https://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)</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#initMetrics-org.apache.hadoop.hbase.thrift.ThriftMetrics-">initMetrics</a></span>(<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">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#setEffectiveUser-java.lang.String-">setEffectiveUser</a></span>(<a href="https://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)</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="CLEANUP_INTERVAL">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CLEANUP_INTERVAL</h4>
+<pre>public static final&nbsp;<a href="https://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/HBaseServiceHandler.html#line.39">CLEANUP_INTERVAL</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.HBaseServiceHandler.CLEANUP_INTERVAL">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="MAX_IDLETIME">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>MAX_IDLETIME</h4>
+<pre>public static final&nbsp;<a href="https://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/HBaseServiceHandler.html#line.40">MAX_IDLETIME</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.HBaseServiceHandler.MAX_IDLETIME">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="conf">
+<!--   -->
+</a>
+<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/HBaseServiceHandler.html#line.42">conf</a></pre>
+</li>
+</ul>
+<a name="connectionCache">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>connectionCache</h4>
+<pre>protected 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/HBaseServiceHandler.html#line.44">connectionCache</a></pre>
+</li>
+</ul>
+<a name="metrics">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>metrics</h4>
+<pre>protected&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/HBaseServiceHandler.html#line.55">metrics</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="HBaseServiceHandler-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.UserProvider-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>HBaseServiceHandler</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#line.46">HBaseServiceHandler</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="https://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="https://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>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="initMetrics-org.apache.hadoop.hbase.thrift.ThriftMetrics-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>initMetrics</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#line.57">initMetrics</a>(<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a>&nbsp;metrics)</pre>
+</li>
+</ul>
+<a name="setEffectiveUser-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setEffectiveUser</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#line.61">setEffectiveUser</a>(<a href="https://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="getAdmin--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getAdmin</h4>
+<pre>protected&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/HBaseServiceHandler.html#line.68">getAdmin</a>()
+                  throws <a href="https://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>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://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="getTable-byte:A-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTable</h4>
+<pre>protected&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/HBaseServiceHandler.html#line.80">getTable</a>(byte[]&nbsp;tableName)
+                  throws <a href="https://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>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>tableName</code> - name of table</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>Table object</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://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>
+<a name="getTable-java.nio.ByteBuffer-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getTable</h4>
+<pre>protected&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/HBaseServiceHandler.html#line.85">getTable</a>(<a href="https://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="https://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="https://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>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/HBaseServiceHandler.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/HThreadedSelectorServerArgs.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" target="_top">Frames</a></li>
+<li><a href="HBaseServiceHandler.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/HThreadedSelectorServerArgs.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/HThreadedSelectorServerArgs.html b/devapidocs/org/apache/hadoop/hbase/thrift/HThreadedSelectorServerArgs.html
index fa7be2f..dd2127a 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/HThreadedSelectorServerArgs.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/HThreadedSelectorServerArgs.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift/HttpAuthenticationException.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -424,7 +424,7 @@ extends org.apache.thrift.server.TThreadedSelectorServer.Args</pre>
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift/HttpAuthenticationException.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 0e8a5ab..2d9be37 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":9,"i2":9};
+var methods = {"i0":10,"i1":9,"i2":9,"i3":9};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift/DemoClient.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/HThreadedSelectorServerArgs.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html" target="_top">Frames</a></li>
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public final 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.36">HbaseHandlerMetricsProxy</a>
 extends <a href="https://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="https://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
@@ -138,14 +138,10 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</code></td>
+<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#handler">handler</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private static org.slf4j.Logger</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#LOG">LOG</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#metrics">metrics</a></span></code>&nbsp;</td>
 </tr>
@@ -166,7 +162,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private </code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#HbaseHandlerMetricsProxy-org.apache.hadoop.hbase.thrift.generated.Hbase.Iface-org.apache.hadoop.hbase.thrift.ThriftMetrics-org.apache.hadoop.conf.Configuration-">HbaseHandlerMetricsProxy</a></span>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;handler,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#HbaseHandlerMetricsProxy-java.lang.Object-org.apache.hadoop.hbase.thrift.ThriftMetrics-org.apache.hadoop.conf.Configuration-">HbaseHandlerMetricsProxy</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;handler,
                         <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a>&nbsp;metrics,
                         org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
 </tr>
@@ -198,6 +194,12 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/
            org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
 </tr>
 <tr id="i2" class="altColor">
+<td class="colFirst"><code>static org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#newInstance-org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface-org.apache.hadoop.hbase.thrift.ThriftMetrics-org.apache.hadoop.conf.Configuration-">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,
+           org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>private static long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#now--">now</a></span>()</code>&nbsp;</td>
 </tr>
@@ -223,22 +225,13 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/
 <!--   -->
 </a>
 <h3>Field Detail</h3>
-<a name="LOG">
-<!--   -->
-</a>
-<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/thrift/HbaseHandlerMetricsProxy.html#line.39">LOG</a></pre>
-</li>
-</ul>
 <a name="handler">
 <!--   -->
 </a>
 <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/HbaseHandlerMetricsProxy.html#line.42">handler</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#line.38">handler</a></pre>
 </li>
 </ul>
 <a name="metrics">
@@ -247,7 +240,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/
 <ul class="blockListLast">
 <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/HbaseHandlerMetricsProxy.html#line.43">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/HbaseHandlerMetricsProxy.html#line.39">metrics</a></pre>
 </li>
 </ul>
 </li>
@@ -258,13 +251,13 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="HbaseHandlerMetricsProxy-org.apache.hadoop.hbase.thrift.generated.Hbase.Iface-org.apache.hadoop.hbase.thrift.ThriftMetrics-org.apache.hadoop.conf.Configuration-">
+<a name="HbaseHandlerMetricsProxy-java.lang.Object-org.apache.hadoop.hbase.thrift.ThriftMetrics-org.apache.hadoop.conf.Configuration-">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HbaseHandlerMetricsProxy</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#line.54">HbaseHandlerMetricsProxy</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;handler,
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#line.60">HbaseHandlerMetricsProxy</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;handler,
                                  <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a>&nbsp;metrics,
                                  org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
@@ -283,18 +276,29 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/
 <ul class="blockList">
 <li class="blockList">
 <h4>newInstance</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#line.45">newInstance</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;handler,
+<pre>public static&nbsp;org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#line.41">newInstance</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;handler,
                                                                                <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a>&nbsp;metrics,
                                                                                org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
+<a name="newInstance-org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface-org.apache.hadoop.hbase.thrift.ThriftMetrics-org.apache.hadoop.conf.Configuration-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>newInstance</h4>
+<pre>public static&nbsp;org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#line.51">newInstance</a>(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,
+                                                                                        org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+</li>
+</ul>
 <a name="invoke-java.lang.Object-java.lang.reflect.Method-java.lang.Object:A-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>invoke</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#line.61">invoke</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;proxy,
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#line.67">invoke</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;proxy,
                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true" title="class or interface in java.lang.reflect">Method</a>&nbsp;m,
                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;args)
               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a></pre>
@@ -312,7 +316,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/
 <ul class="blockListLast">
 <li class="blockList">
 <h4>now</h4>
-<pre>private static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#line.81">now</a>()</pre>
+<pre>private static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#line.87">now</a>()</pre>
 </li>
 </ul>
 </li>
@@ -344,7 +348,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift/DemoClient.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/HThreadedSelectorServerArgs.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/HttpDoAsClient.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/HttpDoAsClient.html b/devapidocs/org/apache/hadoop/hbase/thrift/HttpDoAsClient.html
index 0f66c43..cc750f3 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/HttpDoAsClient.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/HttpDoAsClient.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift/HttpAuthenticationException.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/HttpDoAsClient.html" target="_top">Frames</a></li>
@@ -471,7 +471,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift/HttpAuthenticationException.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/HttpDoAsClient.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/ImplType.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/ImplType.html b/devapidocs/org/apache/hadoop/hbase/thrift/ImplType.html
new file mode 100644
index 0000000..2389042
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/ImplType.html
@@ -0,0 +1,594 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>ImplType (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ImplType (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9,"i1":10,"i2":10,"i3":9,"i4":10,"i5":9,"i6":9,"i7":10,"i8":10,"i9":9,"i10":9};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ImplType.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/HttpDoAsClient.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/ImplType.html" target="_top">Frames</a></li>
+<li><a href="ImplType.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#enum.constant.summary">Enum Constants</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#enum.constant.detail">Enum Constants</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.thrift</div>
+<h2 title="Enum ImplType" class="title">Enum ImplType</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">java.lang.Enum</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a>&gt;</li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.thrift.ImplType</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a>&gt;</dd>
+</dl>
+<hr>
+<br>
+<pre>@InterfaceAudience.Private
+public enum <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ImplType.html#line.41">ImplType</a>
+extends <a href="https://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/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a>&gt;</pre>
+<div class="block">An enum of server implementation selections</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="enum.constant.summary">
+<!--   -->
+</a>
+<h3>Enum Constant Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Enum Constant Summary table, listing enum constants, and an explanation">
+<caption><span>Enum Constants</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Enum Constant and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html#HS_HA">HS_HA</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html#NONBLOCKING">NONBLOCKING</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html#THREAD_POOL">THREAD_POOL</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html#THREADED_SELECTOR">THREADED_SELECTOR</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html#canSpecifyBindIP">canSpecifyBindIP</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html#DEFAULT">DEFAULT</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html#isAlwaysFramed">isAlwaysFramed</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static org.slf4j.Logger</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html#LOG">LOG</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) <a href="https://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/thrift/ImplType.html#option">option</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>(package private) <a href="https://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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html#serverClass">serverClass</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>(package private) static org.apache.hbase.thirdparty.org.apache.commons.cli.OptionGroup</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html#createOptionGroup--">createOptionGroup</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code><a href="https://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/thrift/ImplType.html#getDescription--">getDescription</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code><a href="https://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/thrift/ImplType.html#getOption--">getOption</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html#getServerImpl-org.apache.hadoop.conf.Configuration-">getServerImpl</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html#isAlwaysFramed--">isAlwaysFramed</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>static <a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html#serversThatCannotSpecifyBindIP--">serversThatCannotSpecifyBindIP</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>(package private) static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html#setServerImpl-org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine-org.apache.hadoop.conf.Configuration-">setServerImpl</a></span>(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine&nbsp;cmd,
+             org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code><a href="https://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/thrift/ImplType.html#simpleClassName--">simpleClassName</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code><a href="https://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/thrift/ImplType.html#toString--">toString</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html#valueOf-java.lang.String-">valueOf</a></span>(<a href="https://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)</code>
+<div class="block">Returns the enum constant of this type with the specified name.</div>
+</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a>[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html#values--">values</a></span>()</code>
+<div class="block">Returns an array containing the constants of this enum type, in
+the order they are declared.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Enum">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">Enum</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#compareTo-E-" title="class or interface in java.lang">compareTo</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#getDeclaringClass--" title="class or interface in java.lang">getDeclaringClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/
 8/docs/api/java/lang/Enum.html?is-external=true#name--" title="class or interface in java.lang">name</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#ordinal--" title="class or interface in java.lang">ordinal</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#valueOf-java.lang.Class-java.lang.String-" title="class or interface in java.lang">valueOf</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ ENUM CONSTANT DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="enum.constant.detail">
+<!--   -->
+</a>
+<h3>Enum Constant Detail</h3>
+<a name="HS_HA">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>HS_HA</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ImplType.html#line.42">HS_HA</a></pre>
+</li>
+</ul>
+<a name="NONBLOCKING">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>NONBLOCKING</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ImplType.html#line.43">NONBLOCKING</a></pre>
+</li>
+</ul>
+<a name="THREAD_POOL">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THREAD_POOL</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ImplType.html#line.44">THREAD_POOL</a></pre>
+</li>
+</ul>
+<a name="THREADED_SELECTOR">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>THREADED_SELECTOR</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ImplType.html#line.45">THREADED_SELECTOR</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="LOG">
+<!--   -->
+</a>
+<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/thrift/ImplType.html#line.47">LOG</a></pre>
+</li>
+</ul>
+<a name="DEFAULT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DEFAULT</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ImplType.html#line.48">DEFAULT</a></pre>
+</li>
+</ul>
+<a name="option">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>option</h4>
+<pre>final&nbsp;<a href="https://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/ImplType.html#line.51">option</a></pre>
+</li>
+</ul>
+<a name="isAlwaysFramed">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isAlwaysFramed</h4>
+<pre>final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ImplType.html#line.52">isAlwaysFramed</a></pre>
+</li>
+</ul>
+<a name="serverClass">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>serverClass</h4>
+<pre>final&nbsp;<a href="https://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/ImplType.html#line.53">serverClass</a></pre>
+</li>
+</ul>
+<a name="canSpecifyBindIP">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>canSpecifyBindIP</h4>
+<pre>final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ImplType.html#line.54">canSpecifyBindIP</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="values--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>values</h4>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ImplType.html#line.41">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:
+<pre>
+for (ImplType c : ImplType.values())
+&nbsp;   System.out.println(c);
+</pre></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>an array containing the constants of this enum type, in the order they are declared</dd>
+</dl>
+</li>
+</ul>
+<a name="valueOf-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>valueOf</h4>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ImplType.html#line.41">valueOf</a>(<a href="https://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 
+not permitted.)</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>name</code> - the name of the enum constant to be returned.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the enum constant with the specified name</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if this enum type has no constant with the specified name</dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if the argument is null</dd>
+</dl>
+</li>
+</ul>
+<a name="toString--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>toString</h4>
+<pre>public&nbsp;<a href="https://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/ImplType.html#line.68">toString</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="https://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="https://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/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a>&gt;</code></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd><code>-option</code></dd>
+</dl>
+</li>
+</ul>
+<a name="getOption--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getOption</h4>
+<pre>public&nbsp;<a href="https://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/ImplType.html#line.72">getOption</a>()</pre>
+</li>
+</ul>
+<a name="isAlwaysFramed--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isAlwaysFramed</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ImplType.html#line.76">isAlwaysFramed</a>()</pre>
+</li>
+</ul>
+<a name="getDescription--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDescription</h4>
+<pre>public&nbsp;<a href="https://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/ImplType.html#line.80">getDescription</a>()</pre>
+</li>
+</ul>
+<a name="createOptionGroup--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createOptionGroup</h4>
+<pre>static&nbsp;org.apache.hbase.thirdparty.org.apache.commons.cli.OptionGroup&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ImplType.html#line.92">createOptionGroup</a>()</pre>
+</li>
+</ul>
+<a name="getServerImpl-org.apache.hadoop.conf.Configuration-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getServerImpl</h4>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ImplType.html#line.100">getServerImpl</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+</li>
+</ul>
+<a name="setServerImpl-org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine-org.apache.hadoop.conf.Configuration-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setServerImpl</h4>
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ImplType.html#line.110">setServerImpl</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine&nbsp;cmd,
+                          org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+</li>
+</ul>
+<a name="simpleClassName--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>simpleClassName</h4>
+<pre>public&nbsp;<a href="https://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/ImplType.html#line.130">simpleClassName</a>()</pre>
+</li>
+</ul>
+<a name="serversThatCannotSpecifyBindIP--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>serversThatCannotSpecifyBindIP</h4>
+<pre>public static&nbsp;<a href="https://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="https://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/ImplType.html#line.134">serversThatCannotSpecifyBindIP</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ImplType.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/HttpDoAsClient.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/ImplType.html" target="_top">Frames</a></li>
+<li><a href="ImplType.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#enum.constant.summary">Enum Constants</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#enum.constant.detail">Enum Constants</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 bae6ae3..307eb7f 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.150">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="https://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="https://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="https://docs.oracle.com/javase/8/docs/api/java/util/concurre
 <ul class="blockList">
 <li class="blockList">
 <h4>poolNumber</h4>
-<pre>static final&nbsp;<a href="https://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.151">poolNumber</a></pre>
+<pre>static final&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/util/concurre
 <ul class="blockList">
 <li class="blockList">
 <h4>group</h4>
-<pre>final&nbsp;<a href="https://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.152">group</a></pre>
+<pre>final&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/util/concurre
 <ul class="blockList">
 <li class="blockList">
 <h4>threadNumber</h4>
-<pre>final&nbsp;<a href="https://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.153">threadNumber</a></pre>
+<pre>final&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/util/concurre
 <ul class="blockListLast">
 <li class="blockList">
 <h4>namePrefix</h4>
-<pre>final&nbsp;<a href="https://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.154">namePrefix</a></pre>
+<pre>final&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/util/concurre
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DaemonThreadFactory</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html#line.156">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="https://docs.oracle.com/javase/8/docs/api/java/util/concurre
 <ul class="blockListLast">
 <li class="blockList">
 <h4>newThread</h4>
-<pre>public&nbsp;<a href="https://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.163">newThread</a>(<a href="https://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="https://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.162">newThread</a>(<a href="https://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="https://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="https://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>


[27/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html
index c4e8c8b..aa58108 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html
@@ -82,602 +82,613 @@
 <span class="sourceLineNo">074</span>  public static final String USER_COPROCESSORS_ENABLED_CONF_KEY =<a name="line.74"></a>
 <span class="sourceLineNo">075</span>    "hbase.coprocessor.user.enabled";<a name="line.75"></a>
 <span class="sourceLineNo">076</span>  public static final boolean DEFAULT_USER_COPROCESSORS_ENABLED = true;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  private static final Logger LOG = LoggerFactory.getLogger(CoprocessorHost.class);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  protected Abortable abortable;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  /** Ordered set of loaded coprocessors with lock */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  protected final SortedList&lt;E&gt; coprocEnvironments =<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      new SortedList&lt;&gt;(new EnvironmentPriorityComparator());<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  protected Configuration conf;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  // unique file prefix to use for local copies of jars when classloading<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  protected String pathPrefix;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  protected AtomicInteger loadSequence = new AtomicInteger();<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>  public CoprocessorHost(Abortable abortable) {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    this.abortable = abortable;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    this.pathPrefix = UUID.randomUUID().toString();<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>   * Not to be confused with the per-object _coprocessors_ (above),<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   * coprocessorNames is static and stores the set of all coprocessors ever<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * loaded by any thread in this JVM. It is strictly additive: coprocessors are<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * added to coprocessorNames, by checkAndLoadInstance() but are never removed, since<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   * the intention is to preserve a history of all loaded coprocessors for<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * diagnosis in case of server crash (HBASE-4014).<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  private static Set&lt;String&gt; coprocessorNames =<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      Collections.synchronizedSet(new HashSet&lt;String&gt;());<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  public static Set&lt;String&gt; getLoadedCoprocessors() {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    synchronized (coprocessorNames) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      return new HashSet(coprocessorNames);<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>  /**<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * Used to create a parameter to the HServerLoad constructor so that<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * HServerLoad can provide information about the coprocessors loaded by this<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * regionserver.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * (HBASE-4070: Improve region server metrics to report loaded coprocessors<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * to master).<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   */<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  public Set&lt;String&gt; getCoprocessors() {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    Set&lt;String&gt; returnValue = new TreeSet&lt;&gt;();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    for (E e: coprocEnvironments) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      returnValue.add(e.getInstance().getClass().getSimpleName());<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    return returnValue;<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>   * Load system coprocessors once only. Read the class names from configuration.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * Called by constructor.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   */<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  protected void loadSystemCoprocessors(Configuration conf, String confKey) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    if (!coprocessorsEnabled) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      return;<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>    Class&lt;?&gt; implClass;<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>    // load default coprocessors from configure file<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    String[] defaultCPClasses = conf.getStrings(confKey);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    if (defaultCPClasses == null || defaultCPClasses.length == 0)<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      return;<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    int priority = Coprocessor.PRIORITY_SYSTEM;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    for (String className : defaultCPClasses) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      className = className.trim();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      if (findCoprocessor(className) != null) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        // If already loaded will just continue<a name="line.147"></a>
-<span class="sourceLineNo">148</span>        LOG.warn("Attempted duplicate loading of " + className + "; skipped");<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        continue;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      }<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      ClassLoader cl = this.getClass().getClassLoader();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      Thread.currentThread().setContextClassLoader(cl);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      try {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>        implClass = cl.loadClass(className);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        // Add coprocessors as we go to guard against case where a coprocessor is specified twice<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        // in the configuration<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        if (env != null) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>          this.coprocEnvironments.add(env);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          LOG.info("System coprocessor {} loaded, priority={}.", className, priority);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>          ++priority;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        }<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      } catch (Throwable t) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        // We always abort if system coprocessors cannot be loaded<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        abortServer(className, t);<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><a name="line.169"></a>
-<span class="sourceLineNo">170</span>  /**<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * Load a coprocessor implementation into the host<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * @param path path to implementation jar<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * @param className the main class name<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * @param priority chaining priority<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * @param conf configuration for coprocessor<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   * @throws java.io.IOException Exception<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  public E load(Path path, String className, int priority,<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      Configuration conf) throws IOException {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    String[] includedClassPrefixes = null;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    if (conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY) != null){<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      String prefixes = conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      includedClassPrefixes = prefixes.split(";");<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    }<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    return load(path, className, priority, conf, includedClassPrefixes);<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>   * Load a coprocessor implementation into the host<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * @param path path to implementation jar<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param className the main class name<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * @param priority chaining priority<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * @param conf configuration for coprocessor<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * @param includedClassPrefixes class name prefixes to include<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * @throws java.io.IOException Exception<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  public E load(Path path, String className, int priority,<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      Configuration conf, String[] includedClassPrefixes) throws IOException {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    Class&lt;?&gt; implClass;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    LOG.debug("Loading coprocessor class " + className + " with path " +<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        path + " and priority " + priority);<a name="line.201"></a>
-<span class="sourceLineNo">202</span><a name="line.202"></a>
-<span class="sourceLineNo">203</span>    ClassLoader cl = null;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    if (path == null) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      try {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>        implClass = getClass().getClassLoader().loadClass(className);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      } catch (ClassNotFoundException e) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>        throw new IOException("No jar path specified for " + className);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      }<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    } else {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      cl = CoprocessorClassLoader.getClassLoader(<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        path, getClass().getClassLoader(), pathPrefix, conf);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      try {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        implClass = ((CoprocessorClassLoader)cl).loadClass(className, includedClassPrefixes);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      } catch (ClassNotFoundException e) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>        throw new IOException("Cannot load external coprocessor class " + className, e);<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><a name="line.219"></a>
-<span class="sourceLineNo">220</span>    //load custom code for coprocessor<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    Thread currentThread = Thread.currentThread();<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    try{<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      // switch temporarily to the thread classloader for custom CP<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      currentThread.setContextClassLoader(cl);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      E cpInstance = checkAndLoadInstance(implClass, priority, conf);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return cpInstance;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    } finally {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      // restore the fresh (host) classloader<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      currentThread.setContextClassLoader(hostClassLoader);<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>  @VisibleForTesting<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public void load(Class&lt;? extends C&gt; implClass, int priority, Configuration conf)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      throws IOException {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    coprocEnvironments.add(env);<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>   * @param implClass Implementation class<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * @param priority priority<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   * @param conf configuration<a name="line.244"></a>
-<span class="sourceLineNo">245</span>   * @throws java.io.IOException Exception<a name="line.245"></a>
-<span class="sourceLineNo">246</span>   */<a name="line.246"></a>
-<span class="sourceLineNo">247</span>  public E checkAndLoadInstance(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      throws IOException {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    // create the instance<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    C impl;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    try {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      impl = checkAndGetInstance(implClass);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      if (impl == null) {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        LOG.error("Cannot load coprocessor " + implClass.getSimpleName());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        return null;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      }<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    } catch (InstantiationException|IllegalAccessException e) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      throw new IOException(e);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    // create the environment<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    E env = createEnvironment(impl, priority, loadSequence.incrementAndGet(), conf);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    assert env instanceof BaseEnvironment;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    ((BaseEnvironment&lt;C&gt;) env).startup();<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    // HBASE-4014: maintain list of loaded coprocessors for later crash analysis<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    // if server (master or regionserver) aborts.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    coprocessorNames.add(implClass.getName());<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    return env;<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>  /**<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * Called when a new Coprocessor class is loaded<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   */<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  public abstract E createEnvironment(C instance, int priority, int sequence, Configuration conf);<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>   * Called when a new Coprocessor class needs to be loaded. Checks if type of the given class<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   * is what the corresponding host implementation expects. If it is of correct type, returns an<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   * instance of the coprocessor to be loaded. If not, returns null.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   * If an exception occurs when trying to create instance of a coprocessor, it's passed up and<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * eventually results into server aborting.<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   */<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  public abstract C checkAndGetInstance(Class&lt;?&gt; implClass)<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      throws InstantiationException, IllegalAccessException;<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>  public void shutdown(E e) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    assert e instanceof BaseEnvironment;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    if (LOG.isDebugEnabled()) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      LOG.debug("Stop coprocessor " + e.getInstance().getClass().getName());<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    }<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    ((BaseEnvironment&lt;C&gt;) e).shutdown();<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>   * Find coprocessors by full class name or simple name.<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   */<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  public C findCoprocessor(String className) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    for (E env: coprocEnvironments) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        return env.getInstance();<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>    return null;<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>  @VisibleForTesting<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  public &lt;T extends C&gt; T findCoprocessor(Class&lt;T&gt; cls) {<a name="line.307"></a>
+<span class="sourceLineNo">077</span>  public static final String SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR =<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      "hbase.skip.load.duplicate.table.coprocessor";<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  public static final boolean DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR = false;<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private static final Logger LOG = LoggerFactory.getLogger(CoprocessorHost.class);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  protected Abortable abortable;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  /** Ordered set of loaded coprocessors with lock */<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  protected final SortedList&lt;E&gt; coprocEnvironments =<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      new SortedList&lt;&gt;(new EnvironmentPriorityComparator());<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  protected Configuration conf;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  // unique file prefix to use for local copies of jars when classloading<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  protected String pathPrefix;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  protected AtomicInteger loadSequence = new AtomicInteger();<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public CoprocessorHost(Abortable abortable) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    this.abortable = abortable;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    this.pathPrefix = UUID.randomUUID().toString();<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>   * Not to be confused with the per-object _coprocessors_ (above),<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   * coprocessorNames is static and stores the set of all coprocessors ever<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   * loaded by any thread in this JVM. It is strictly additive: coprocessors are<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * added to coprocessorNames, by checkAndLoadInstance() but are never removed, since<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * the intention is to preserve a history of all loaded coprocessors for<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * diagnosis in case of server crash (HBASE-4014).<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   */<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  private static Set&lt;String&gt; coprocessorNames =<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      Collections.synchronizedSet(new HashSet&lt;String&gt;());<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  public static Set&lt;String&gt; getLoadedCoprocessors() {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    synchronized (coprocessorNames) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      return new HashSet(coprocessorNames);<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>  /**<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * Used to create a parameter to the HServerLoad constructor so that<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   * HServerLoad can provide information about the coprocessors loaded by this<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   * regionserver.<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   * (HBASE-4070: Improve region server metrics to report loaded coprocessors<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   * to master).<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   */<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  public Set&lt;String&gt; getCoprocessors() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    Set&lt;String&gt; returnValue = new TreeSet&lt;&gt;();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    for (E e: coprocEnvironments) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      returnValue.add(e.getInstance().getClass().getSimpleName());<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    return returnValue;<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>   * Load system coprocessors once only. Read the class names from configuration.<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * Called by constructor.<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  protected void loadSystemCoprocessors(Configuration conf, String confKey) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    if (!coprocessorsEnabled) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      return;<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>    Class&lt;?&gt; implClass;<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>    // load default coprocessors from configure file<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    String[] defaultCPClasses = conf.getStrings(confKey);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    if (defaultCPClasses == null || defaultCPClasses.length == 0)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      return;<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    int priority = Coprocessor.PRIORITY_SYSTEM;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    for (String className : defaultCPClasses) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      className = className.trim();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      if (findCoprocessor(className) != null) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        // If already loaded will just continue<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        LOG.warn("Attempted duplicate loading of " + className + "; skipped");<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        continue;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      }<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      ClassLoader cl = this.getClass().getClassLoader();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      Thread.currentThread().setContextClassLoader(cl);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      try {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>        implClass = cl.loadClass(className);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        // Add coprocessors as we go to guard against case where a coprocessor is specified twice<a name="line.158"></a>
+<span class="sourceLineNo">159</span>        // in the configuration<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        if (env != null) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>          this.coprocEnvironments.add(env);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>          LOG.info("System coprocessor {} loaded, priority={}.", className, priority);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>          ++priority;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      } catch (Throwable t) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        // We always abort if system coprocessors cannot be loaded<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        abortServer(className, t);<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>  }<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>   * Load a coprocessor implementation into the host<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * @param path path to implementation jar<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * @param className the main class name<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   * @param priority chaining priority<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   * @param conf configuration for coprocessor<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   * @throws java.io.IOException Exception<a name="line.179"></a>
+<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  public E load(Path path, String className, int priority,<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      Configuration conf) throws IOException {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    String[] includedClassPrefixes = null;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    if (conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY) != null){<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      String prefixes = conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      includedClassPrefixes = prefixes.split(";");<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return load(path, className, priority, conf, includedClassPrefixes);<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>  /**<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * Load a coprocessor implementation into the host<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * @param path path to implementation jar<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * @param className the main class name<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * @param priority chaining priority<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * @param conf configuration for coprocessor<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * @param includedClassPrefixes class name prefixes to include<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * @throws java.io.IOException Exception<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   */<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  public E load(Path path, String className, int priority,<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      Configuration conf, String[] includedClassPrefixes) throws IOException {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    Class&lt;?&gt; implClass;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    LOG.debug("Loading coprocessor class " + className + " with path " +<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        path + " and priority " + priority);<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>    boolean skipLoadDuplicateCoprocessor = conf.getBoolean(SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR,<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    if (skipLoadDuplicateCoprocessor &amp;&amp; findCoprocessor(className) != null) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      // If already loaded will just continue<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      LOG.warn("Attempted duplicate loading of {}; skipped", className);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      return null;<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>    ClassLoader cl = null;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    if (path == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      try {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        implClass = getClass().getClassLoader().loadClass(className);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      } catch (ClassNotFoundException e) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        throw new IOException("No jar path specified for " + className);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      }<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    } else {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      cl = CoprocessorClassLoader.getClassLoader(<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        path, getClass().getClassLoader(), pathPrefix, conf);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      try {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        implClass = ((CoprocessorClassLoader)cl).loadClass(className, includedClassPrefixes);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      } catch (ClassNotFoundException e) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        throw new IOException("Cannot load external coprocessor class " + className, e);<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>    //load custom code for coprocessor<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    Thread currentThread = Thread.currentThread();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    try{<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      // switch temporarily to the thread classloader for custom CP<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      currentThread.setContextClassLoader(cl);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      E cpInstance = checkAndLoadInstance(implClass, priority, conf);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      return cpInstance;<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    } finally {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      // restore the fresh (host) classloader<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      currentThread.setContextClassLoader(hostClassLoader);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    }<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>  @VisibleForTesting<a name="line.245"></a>
+<span class="sourceLineNo">246</span>  public void load(Class&lt;? extends C&gt; implClass, int priority, Configuration conf)<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      throws IOException {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    coprocEnvironments.add(env);<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>  /**<a name="line.252"></a>
+<span class="sourceLineNo">253</span>   * @param implClass Implementation class<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * @param priority priority<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * @param conf configuration<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   * @throws java.io.IOException Exception<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   */<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  public E checkAndLoadInstance(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      throws IOException {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    // create the instance<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    C impl;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    try {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      impl = checkAndGetInstance(implClass);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      if (impl == null) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        LOG.error("Cannot load coprocessor " + implClass.getSimpleName());<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        return null;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    } catch (InstantiationException|IllegalAccessException e) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      throw new IOException(e);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    }<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    // create the environment<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    E env = createEnvironment(impl, priority, loadSequence.incrementAndGet(), conf);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    assert env instanceof BaseEnvironment;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    ((BaseEnvironment&lt;C&gt;) env).startup();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    // HBASE-4014: maintain list of loaded coprocessors for later crash analysis<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // if server (master or regionserver) aborts.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    coprocessorNames.add(implClass.getName());<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    return env;<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>   * Called when a new Coprocessor class is loaded<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   */<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  public abstract E createEnvironment(C instance, int priority, int sequence, Configuration conf);<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>   * Called when a new Coprocessor class needs to be loaded. Checks if type of the given class<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * is what the corresponding host implementation expects. If it is of correct type, returns an<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * instance of the coprocessor to be loaded. If not, returns null.<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * If an exception occurs when trying to create instance of a coprocessor, it's passed up and<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * eventually results into server aborting.<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   */<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  public abstract C checkAndGetInstance(Class&lt;?&gt; implClass)<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      throws InstantiationException, IllegalAccessException;<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  public void shutdown(E e) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    assert e instanceof BaseEnvironment;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    if (LOG.isDebugEnabled()) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      LOG.debug("Stop coprocessor " + e.getInstance().getClass().getName());<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    }<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    ((BaseEnvironment&lt;C&gt;) e).shutdown();<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>  /**<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * Find coprocessors by full class name or simple name.<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   */<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  public C findCoprocessor(String className) {<a name="line.307"></a>
 <span class="sourceLineNo">308</span>    for (E env: coprocEnvironments) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      if (cls.isAssignableFrom(env.getInstance().getClass())) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        return (T) env.getInstance();<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>    return null;<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>   * Find list of coprocessors that extend/implement the given class/interface<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @param cls the class/interface to look for<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * @return the list of coprocessors, or null if not found<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public &lt;T extends C&gt; List&lt;T&gt; findCoprocessors(Class&lt;T&gt; cls) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    ArrayList&lt;T&gt; ret = new ArrayList&lt;&gt;();<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    for (E env: coprocEnvironments) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      C cp = env.getInstance();<a name="line.325"></a>
+<span class="sourceLineNo">309</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.309"></a>
+<span class="sourceLineNo">310</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        return env.getInstance();<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>    return null;<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>  @VisibleForTesting<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public &lt;T extends C&gt; T findCoprocessor(Class&lt;T&gt; cls) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    for (E env: coprocEnvironments) {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      if (cls.isAssignableFrom(env.getInstance().getClass())) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        return (T) env.getInstance();<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>    return null;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
 <span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>      if(cp != null) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        if (cls.isAssignableFrom(cp.getClass())) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          ret.add((T)cp);<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>    }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    return ret;<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>  /**<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * Find a coprocessor environment by class name<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   * @param className the class name<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   * @return the coprocessor, or null if not found<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   */<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  @VisibleForTesting<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public E findCoprocessorEnvironment(String className) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    for (E env: coprocEnvironments) {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.344"></a>
-<span class="sourceLineNo">345</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        return env;<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>    return null;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  }<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>   * Retrieves the set of classloaders used to instantiate Coprocessor classes defined in external<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * jar files.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * @return A set of ClassLoader instances<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  Set&lt;ClassLoader&gt; getExternalClassLoaders() {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    Set&lt;ClassLoader&gt; externalClassLoaders = new HashSet&lt;&gt;();<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    final ClassLoader systemClassLoader = this.getClass().getClassLoader();<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    for (E env : coprocEnvironments) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      ClassLoader cl = env.getInstance().getClass().getClassLoader();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      if (cl != systemClassLoader){<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        //do not include system classloader<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        externalClassLoaders.add(cl);<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>    return externalClassLoaders;<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>   * Environment priority comparator.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * Coprocessors are chained in sorted order.<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   */<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  static class EnvironmentPriorityComparator implements Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    @Override<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        final CoprocessorEnvironment env2) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>        return -1;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>        return 1;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      }<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        return -1;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        return 1;<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      return 0;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    }<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>  protected void abortServer(final E environment, final Throwable e) {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    abortServer(environment.getInstance().getClass().getName(), e);<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>  protected void abortServer(final String coprocessorName, final Throwable e) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    String message = "The coprocessor " + coprocessorName + " threw " + e.toString();<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    LOG.error(message, e);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    if (abortable != null) {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      abortable.abort(message, e);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    } else {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      LOG.warn("No available Abortable, process was not aborted");<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>  /**<a name="line.406"></a>
-<span class="sourceLineNo">407</span>   * This is used by coprocessor hooks which are declared to throw IOException<a name="line.407"></a>
-<span class="sourceLineNo">408</span>   * (or its subtypes). For such hooks, we should handle throwable objects<a name="line.408"></a>
-<span class="sourceLineNo">409</span>   * depending on the Throwable's type. Those which are instances of<a name="line.409"></a>
-<span class="sourceLineNo">410</span>   * IOException should be passed on to the client. This is in conformance with<a name="line.410"></a>
-<span class="sourceLineNo">411</span>   * the HBase idiom regarding IOException: that it represents a circumstance<a name="line.411"></a>
-<span class="sourceLineNo">412</span>   * that should be passed along to the client for its own handling. For<a name="line.412"></a>
-<span class="sourceLineNo">413</span>   * example, a coprocessor that implements access controls would throw a<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * subclass of IOException, such as AccessDeniedException, in its preGet()<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * method to prevent an unauthorized client's performing a Get on a particular<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * table.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param env Coprocessor Environment<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param e Throwable object thrown by coprocessor.<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * @exception IOException Exception<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   */<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  // Note to devs: Class comments of all observers ({@link MasterObserver}, {@link WALObserver},<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  // etc) mention this nuance of our exception handling so that coprocessor can throw appropriate<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  // exceptions depending on situation. If any changes are made to this logic, make sure to<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  // update all classes' comments.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  protected void handleCoprocessorThrowable(final E env, final Throwable e) throws IOException {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    if (e instanceof IOException) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      throw (IOException)e;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    // If we got here, e is not an IOException. A loaded coprocessor has a<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    // fatal bug, and the server (master or regionserver) should remove the<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    // faulty coprocessor from its set of active coprocessors. Setting<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    // 'hbase.coprocessor.abortonerror' to true will cause abortServer(),<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    // which may be useful in development and testing environments where<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    // 'failing fast' for error analysis is desired.<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if (env.getConfiguration().getBoolean(ABORT_ON_ERROR_KEY, DEFAULT_ABORT_ON_ERROR)) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      // server is configured to abort.<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      abortServer(env, e);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    } else {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      // If available, pull a table name out of the environment<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      if(env instanceof RegionCoprocessorEnvironment) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        String tableName = ((RegionCoprocessorEnvironment)env).getRegionInfo().getTable().getNameAsString();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from table '"+ tableName + "'", e);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      } else {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from " +<a name="line.444"></a>
-<span class="sourceLineNo">445</span>                "environment",e);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>      coprocEnvironments.remove(env);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      try {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>        shutdown(env);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      } catch (Exception x) {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>        LOG.error("Uncaught exception when shutting down coprocessor '"<a name="line.452"></a>
-<span class="sourceLineNo">453</span>            + env.toString() + "'", x);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      throw new DoNotRetryIOException("Coprocessor: '" + env.toString() +<a name="line.455"></a>
-<span class="sourceLineNo">456</span>          "' threw: '" + e + "' and has been removed from the active " +<a name="line.456"></a>
-<span class="sourceLineNo">457</span>          "coprocessor set.", e);<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><a name="line.460"></a>
-<span class="sourceLineNo">461</span>  /**<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * Used to limit legacy handling to once per Coprocessor class per classloader.<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   */<a name="line.463"></a>
-<span class="sourceLineNo">464</span>  private static final Set&lt;Class&lt;? extends Coprocessor&gt;&gt; legacyWarning =<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      new ConcurrentSkipListSet&lt;&gt;(<a name="line.465"></a>
-<span class="sourceLineNo">466</span>          new Comparator&lt;Class&lt;? extends Coprocessor&gt;&gt;() {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>            @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>            public int compare(Class&lt;? extends Coprocessor&gt; c1, Class&lt;? extends Coprocessor&gt; c2) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>              if (c1.equals(c2)) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>                return 0;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>              }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>              return c1.getName().compareTo(c2.getName());<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><a name="line.475"></a>
-<span class="sourceLineNo">476</span>  /**<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * Implementations defined function to get an observer of type {@code O} from a coprocessor of<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * type {@code C}. Concrete implementations of CoprocessorHost define one getter for each<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * observer they can handle. For e.g. RegionCoprocessorHost will use 3 getters, one for<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * each of RegionObserver, EndpointObserver and BulkLoadObserver.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * These getters are used by {@code ObserverOperation} to get appropriate observer from the<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * coprocessor.<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   */<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  @FunctionalInterface<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  public interface ObserverGetter&lt;C, O&gt; extends Function&lt;C, Optional&lt;O&gt;&gt; {}<a name="line.485"></a>
+<span class="sourceLineNo">327</span>  /**<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * Find list of coprocessors that extend/implement the given class/interface<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @param cls the class/interface to look for<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   * @return the list of coprocessors, or null if not found<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public &lt;T extends C&gt; List&lt;T&gt; findCoprocessors(Class&lt;T&gt; cls) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    ArrayList&lt;T&gt; ret = new ArrayList&lt;&gt;();<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>    for (E env: coprocEnvironments) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      C cp = env.getInstance();<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>      if(cp != null) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>        if (cls.isAssignableFrom(cp.getClass())) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>          ret.add((T)cp);<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>    return ret;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  }<a name="line.345"></a>
+<span class="sourceLineNo">346</span><a name="line.346"></a>
+<span class="sourceLineNo">347</span>  /**<a name="line.347"></a>
+<span class="sourceLineNo">348</span>   * Find a coprocessor environment by class name<a name="line.348"></a>
+<span class="sourceLineNo">349</span>   * @param className the class name<a name="line.349"></a>
+<span class="sourceLineNo">350</span>   * @return the coprocessor, or null if not found<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   */<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  @VisibleForTesting<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  public E findCoprocessorEnvironment(String className) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    for (E env: coprocEnvironments) {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        return env;<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>    return null;<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>  /**<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   * Retrieves the set of classloaders used to instantiate Coprocessor classes defined in external<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   * jar files.<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   * @return A set of ClassLoader instances<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  Set&lt;ClassLoader&gt; getExternalClassLoaders() {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    Set&lt;ClassLoader&gt; externalClassLoaders = new HashSet&lt;&gt;();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    final ClassLoader systemClassLoader = this.getClass().getClassLoader();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    for (E env : coprocEnvironments) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      ClassLoader cl = env.getInstance().getClass().getClassLoader();<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      if (cl != systemClassLoader){<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        //do not include system classloader<a name="line.374"></a>
+<span class="sourceLineNo">375</span>        externalClassLoaders.add(cl);<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>    return externalClassLoaders;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  }<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>   * Environment priority comparator.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   * Coprocessors are chained in sorted order.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>   */<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  static class EnvironmentPriorityComparator implements Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    @Override<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        final CoprocessorEnvironment env2) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        return -1;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<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>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        return -1;<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        return 1;<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      }<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      return 0;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  protected void abortServer(final E environment, final Throwable e) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    abortServer(environment.getInstance().getClass().getName(), 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>  protected void abortServer(final String coprocessorName, final Throwable e) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    String message = "The coprocessor " + coprocessorName + " threw " + e.toString();<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    LOG.error(message, e);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    if (abortable != null) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      abortable.abort(message, e);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    } else {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      LOG.warn("No available Abortable, process was not aborted");<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>  /**<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   * This is used by coprocessor hooks which are declared to throw IOException<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * (or its subtypes). For such hooks, we should handle throwable objects<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   * depending on the Throwable's type. Those which are instances of<a name="line.420"></a>
+<span class="sourceLineNo">421</span>   * IOException should be passed on to the client. This is in conformance with<a name="line.421"></a>
+<span class="sourceLineNo">422</span>   * the HBase idiom regarding IOException: that it represents a circumstance<a name="line.422"></a>
+<span class="sourceLineNo">423</span>   * that should be passed along to the client for its own handling. For<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   * example, a coprocessor that implements access controls would throw a<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   * subclass of IOException, such as AccessDeniedException, in its preGet()<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * method to prevent an unauthorized client's performing a Get on a particular<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * table.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * @param env Coprocessor Environment<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * @param e Throwable object thrown by coprocessor.<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * @exception IOException Exception<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   */<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  // Note to devs: Class comments of all observers ({@link MasterObserver}, {@link WALObserver},<a name="line.432"></a>
+<span class="sourceLineNo">433</span>  // etc) mention this nuance of our exception handling so that coprocessor can throw appropriate<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  // exceptions depending on situation. If any changes are made to this logic, make sure to<a name="line.434"></a>
+<span class="sourceLineNo">435</span>  // update all classes' comments.<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  protected void handleCoprocessorThrowable(final E env, final Throwable e) throws IOException {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    if (e instanceof IOException) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      throw (IOException)e;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    // If we got here, e is not an IOException. A loaded coprocessor has a<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    // fatal bug, and the server (master or regionserver) should remove the<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    // faulty coprocessor from its set of active coprocessors. Setting<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    // 'hbase.coprocessor.abortonerror' to true will cause abortServer(),<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    // which may be useful in development and testing environments where<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    // 'failing fast' for error analysis is desired.<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    if (env.getConfiguration().getBoolean(ABORT_ON_ERROR_KEY, DEFAULT_ABORT_ON_ERROR)) {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      // server is configured to abort.<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      abortServer(env, e);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } else {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      // If available, pull a table name out of the environment<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      if(env instanceof RegionCoprocessorEnvironment) {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>        String tableName = ((RegionCoprocessorEnvironment)env).getRegionInfo().getTable().getNameAsString();<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from table '"+ tableName + "'", e);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      } else {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from " +<a name="line.455"></a>
+<span class="sourceLineNo">456</span>                "environment",e);<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>      coprocEnvironments.remove(env);<a name="line.459"></a>
+<span class="sourceLineNo">460</span>      try {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>        shutdown(env);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      } catch (Exception x) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        LOG.error("Uncaught exception when shutting down coprocessor '"<a name="line.463"></a>
+<span class="sourceLineNo">464</span>            + env.toString() + "'", x);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      throw new DoNotRetryIOException("Coprocessor: '" + env.toString() +<a name="line.466"></a>
+<span class="sourceLineNo">467</span>          "' threw: '" + e + "' and has been removed from the active " +<a name="line.467"></a>
+<span class="sourceLineNo">468</span>          "coprocessor set.", e);<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><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * Used to limit legacy handling to once per Coprocessor class per classloader.<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   */<a name="line.474"></a>
+<span class="sourceLineNo">475</span>  private static final Set&lt;Class&lt;? extends Coprocessor&gt;&gt; legacyWarning =<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      new ConcurrentSkipListSet&lt;&gt;(<a name="line.476"></a>
+<span class="sourceLineNo">477</span>          new Comparator&lt;Class&lt;? extends Coprocessor&gt;&gt;() {<a name="line.477"></a>
+<span class="sourceLineNo">478</span>            @Override<a name="line.478"></a>
+<span class="sourceLineNo">479</span>            public int compare(Class&lt;? extends Coprocessor&gt; c1, Class&lt;? extends Coprocessor&gt; c2) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>              if (c1.equals(c2)) {<a name="line.480"></a>
+<span class="sourceLineNo">481</span>                return 0;<a name="line.481"></a>
+<span class="sourceLineNo">482</span>              }<a name="line.482"></a>
+<span class="sourceLineNo">483</span>              return c1.getName().compareTo(c2.getName());<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>  private abstract class ObserverOperation&lt;O&gt; extends ObserverContextImpl&lt;E&gt; {<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    ObserverGetter&lt;C, O&gt; observerGetter;<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      this(observerGetter, null);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter, User user) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      this(observerGetter, user, false);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
+<span class="sourceLineNo">487</span>  /**<a name="line.487"></a>
+<span class="sourceLineNo">488</span>   * Implementations defined function to get an observer of type {@code O} from a coprocessor of<a name="line.488"></a>
+<span class="sourceLineNo">489</span>   * type {@code C}. Concrete implementations of CoprocessorHost define one getter for each<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   * observer they can handle. For e.g. RegionCoprocessorHost will use 3 getters, one for<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   * each of RegionObserver, EndpointObserver and BulkLoadObserver.<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   * These getters are used by {@code ObserverOperation} to get appropriate observer from the<a name="line.492"></a>
+<span class="sourceLineNo">493</span>   * coprocessor.<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   */<a name="line.494"></a>
+<span class="sourceLineNo">495</span>  @FunctionalInterface<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  public interface ObserverGetter&lt;C, O&gt; extends Function&lt;C, Optional&lt;O&gt;&gt; {}<a name="line.496"></a>
 <span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter, boolean bypassable) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      this(observerGetter, null, bypassable);<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>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter, User user, boolean bypassable) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      super(user != null? user: RpcServer.getRequestUser().orElse(null), bypassable);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      this.observerGetter = observerGetter;<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>    abstract void callObserver() throws IOException;<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    protected void postEnvCall() {}<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  // Can't derive ObserverOperation from ObserverOperationWithResult (R = Void) because then all<a name="line.511"></a>
-<span class="sourceLineNo">512</span>  // ObserverCaller implementations will have to have a return statement.<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  // O = observer, E = environment, C = coprocessor, R=result type<a name="line.513"></a>
-<span class="sourceLineNo">514</span>  public abstract class ObserverOperationWithoutResult&lt;O&gt; extends ObserverOperation&lt;O&gt; {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    protected abstract void call(O observer) throws IOException;<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>    public ObserverOperationWithoutResult(ObserverGetter&lt;C, O&gt; observerGetter) {<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      super(observerGetter);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    }<a name="line.519"></a>
-<span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span>    public ObserverOperationWithoutResult(ObserverGetter&lt;C, O&gt; observerGetter, User user) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      super(observerGetter, user);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>    public ObserverOperationWithoutResult(ObserverGetter&lt;C, O&gt; observerGetter, User user,<a name="line.525"></a>
-<span class="sourceLineNo">526</span>        boolean bypassable) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      super(observerGetter, user, bypassable);<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>    /**<a name="line.530"></a>
-<span class="sourceLineNo">531</span>     * In case of coprocessors which have many kinds of observers (for eg, {@link RegionCoprocessor}<a name="line.531"></a>
-<span class="sourceLineNo">532</span>     * has BulkLoadObserver, RegionObserver, etc), some implementations may not need all<a name="line.532"></a>
-<span class="sourceLineNo">533</span>     * observers, in which case they will return null for that observer's getter.<a name="line.533"></a>
-<span class="sourceLineNo">534</span>     * We simply ignore such cases.<a name="line.534"></a>
-<span class="sourceLineNo">535</span>     */<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    @Override<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    void callObserver() throws IOException {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      Optional&lt;O&gt; observer = observerGetter.apply(getEnvironment().getInstance());<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      if (observer.isPresent()) {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        call(observer.get());<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      }<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    }<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>  public abstract class ObserverOperationWithResult&lt;O, R&gt; extends ObserverOperation&lt;O&gt; {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    protected abstract R call(O observer) throws IOException;<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>    private R result;<a name="l

<TRUNCATED>

[44/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html
index ec24cd1..85b6088 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html
@@ -193,7 +193,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#ABORT_ON_ERROR_KEY">ABORT_ON_ERROR_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#abortable">abortable</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#conf">conf</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#coprocEnvironments">coprocEnvironments</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#COPROCESSORS_ENABLED_CONF_KEY">COPROCESSORS_ENABLED_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_ABORT_ON_ERROR">DEFAULT_ABORT_ON_ERROR</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_COPROCESSORS_ENABLED">DEFAULT_COPROCESSORS_ENABLED</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_USER_COPROCESSORS_ENABL
 ED">DEFAULT_USER_COPROCESSORS_ENABLED</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#loadSequence">loadSequence</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#MASTER_COPROCESSOR_CONF_KEY">MASTER_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#pathPrefix">pathPrefix</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#REGION_COPROCESSOR_CONF_KEY">REGION_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#REGIONSERVER_COPROCESSOR_CONF_KEY">REGIONSERVER_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#USER_COPROCESSORS_ENABLED_CONF_KEY">USER_COPROCESSORS_ENABLED_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#USER_REGION_COPROCESSOR_CONF_KEY">USER_REGION_COPROCE
 SSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#WAL_COPROCESSOR_CONF_KEY">WAL_COPROCESSOR_CONF_KEY</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#ABORT_ON_ERROR_KEY">ABORT_ON_ERROR_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#abortable">abortable</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#conf">conf</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#coprocEnvironments">coprocEnvironments</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#COPROCESSORS_ENABLED_CONF_KEY">COPROCESSORS_ENABLED_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_ABORT_ON_ERROR">DEFAULT_ABORT_ON_ERROR</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_COPROCESSORS_ENABLED">DEFAULT_COPROCESSORS_ENABLED</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_SKIP_LOAD_DUPLICATE_TAB
 LE_COPROCESSOR">DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_USER_COPROCESSORS_ENABLED">DEFAULT_USER_COPROCESSORS_ENABLED</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#loadSequence">loadSequence</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#MASTER_COPROCESSOR_CONF_KEY">MASTER_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#pathPrefix">pathPrefix</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#REGION_COPROCESSOR_CONF_KEY">REGION_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#REGIONSERVER_COPROCESSOR_CONF_KEY">REGIONSERVER_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#SKIP_LOAD_DUPLICATE_TABLE_COPRO
 CESSOR">SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#USER_COPROCESSORS_ENABLED_CONF_KEY">USER_COPROCESSORS_ENABLED_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#USER_REGION_COPROCESSOR_CONF_KEY">USER_REGION_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#WAL_COPROCESSOR_CONF_KEY">WAL_COPROCESSOR_CONF_KEY</a></code></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 7bacd5f..b8922b2 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -716,20 +716,20 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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/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/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/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/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.ChunkType</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/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</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/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/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/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/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/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/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/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</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/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/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/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.ChunkType</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/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/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/ScannerContext.LimitScope.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.LimitScope</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
index 03a894e..1d583d6 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
@@ -130,9 +130,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/StripeCompactionScanQueryMatcher.DropDeletesInOutput.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">StripeCompactionScanQueryMatcher.DropDeletesInOutput</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/DeleteTracker.DeleteResult.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">DeleteTracker.DeleteResult</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">ScanQueryMatcher.MatchCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/DeleteTracker.DeleteResult.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">DeleteTracker.DeleteResult</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/StripeCompactionScanQueryMatcher.DropDeletesInOutput.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">StripeCompactionScanQueryMatcher.DropDeletesInOutput</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/regionserver/wal/WALCoprocessorHost.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/WALCoprocessorHost.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/WALCoprocessorHost.html
index 5a88782..5d56908 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/WALCoprocessorHost.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/WALCoprocessorHost.html
@@ -187,7 +187,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Coprocess
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.coprocessor.<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#ABORT_ON_ERROR_KEY">ABORT_ON_ERROR_KEY</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#abortable">abortable</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#conf">conf</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#coprocEnvironments">coprocEnvironments</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#COPROCESSORS_ENABLED_CONF_KEY">COPROCESSORS_ENABLED_CONF_KEY</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_ABORT_ON_ERROR">DEFAULT_ABORT_ON_ERROR</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_COPROCESSORS_ENABLED">DEFAULT_COPROCESSORS_ENABLED</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT
 _USER_COPROCESSORS_ENABLED">DEFAULT_USER_COPROCESSORS_ENABLED</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#loadSequence">loadSequence</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#MASTER_COPROCESSOR_CONF_KEY">MASTER_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#pathPrefix">pathPrefix</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#REGION_COPROCESSOR_CONF_KEY">REGION_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#REGIONSERVER_COPROCESSOR_CONF_KEY">REGIONSERVER_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#USER_COPROCESSORS_ENABLED_CONF_KEY">USER_COPROCESSORS_ENABLED_CONF_KEY</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#USER_REG
 ION_COPROCESSOR_CONF_KEY">USER_REGION_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#WAL_COPROCESSOR_CONF_KEY">WAL_COPROCESSOR_CONF_KEY</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#ABORT_ON_ERROR_KEY">ABORT_ON_ERROR_KEY</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#abortable">abortable</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#conf">conf</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#coprocEnvironments">coprocEnvironments</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#COPROCESSORS_ENABLED_CONF_KEY">COPROCESSORS_ENABLED_CONF_KEY</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_ABORT_ON_ERROR">DEFAULT_ABORT_ON_ERROR</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_COPROCESSORS_ENABLED">DEFAULT_COPROCESSORS_ENABLED</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT
 _SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR">DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_USER_COPROCESSORS_ENABLED">DEFAULT_USER_COPROCESSORS_ENABLED</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#loadSequence">loadSequence</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#MASTER_COPROCESSOR_CONF_KEY">MASTER_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#pathPrefix">pathPrefix</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#REGION_COPROCESSOR_CONF_KEY">REGION_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#REGIONSERVER_COPROCESSOR_CONF_KEY">REGIONSERVER_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Coproce
 ssorHost.html#SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR">SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#USER_COPROCESSORS_ENABLED_CONF_KEY">USER_COPROCESSORS_ENABLED_CONF_KEY</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#USER_REGION_COPROCESSOR_CONF_KEY">USER_REGION_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#WAL_COPROCESSOR_CONF_KEY">WAL_COPROCESSOR_CONF_KEY</a></code></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 0a43c84..8d5c060 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
@@ -248,8 +248,8 @@
 <li type="circle">java.lang.<a href="https://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="https://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="https://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/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>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/CompressionContext.DictionaryIndex.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">CompressionContext.DictionaryIndex</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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html b/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
index ebf64ee..33b5416 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
@@ -160,8 +160,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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.<a href="../../../../../org/apache/hadoop/hbase/replication/SyncReplicationState.html" title="enum in org.apache.hadoop.hbase.replication"><span class="typeNameLink">SyncReplicationState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.PeerState.html" title="enum in org.apache.hadoop.hbase.replication"><span class="typeNameLink">ReplicationPeer.PeerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/SyncReplicationState.html" title="enum in org.apache.hadoop.hbase.replication"><span class="typeNameLink">SyncReplicationState</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 0a354dc..158aedb 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
@@ -207,8 +207,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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/849d84a8/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 64ff22b..5a180cc 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
@@ -141,10 +141,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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/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/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/Permission.Scope.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Scope</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>
+<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/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Action</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/security/class-use/SaslUtil.QualityOfProtection.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/security/class-use/SaslUtil.QualityOfProtection.html b/devapidocs/org/apache/hadoop/hbase/security/class-use/SaslUtil.QualityOfProtection.html
index 5e589ea..7869a54 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/class-use/SaslUtil.QualityOfProtection.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/class-use/SaslUtil.QualityOfProtection.html
@@ -93,13 +93,6 @@
 service.</div>
 </td>
 </tr>
-<tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift2">org.apache.hadoop.hbase.thrift2</a></td>
-<td class="colLast">
-<div class="block">Provides an HBase <a href="http://thrift.apache.org/">Thrift</a>
-service.</div>
-</td>
-</tr>
 </tbody>
 </table>
 </li>
@@ -151,8 +144,8 @@ the order they are declared.</div>
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security">SaslUtil.QualityOfProtection</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#qop">qop</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security">SaslUtil.QualityOfProtection</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ThriftServer.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#qop">qop</a></span></code>&nbsp;</td>
 </tr>
 </tbody>
 </table>
@@ -164,35 +157,13 @@ the order they are declared.</div>
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#checkHttpSecurity-org.apache.hadoop.hbase.security.SaslUtil.QualityOfProtection-org.apache.hadoop.conf.Configuration-">checkHttpSecurity</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,
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">ThriftServer.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#checkHttpSecurity-org.apache.hadoop.hbase.security.SaslUtil.QualityOfProtection-org.apache.hadoop.conf.Configuration-">checkHttpSecurity</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,
                  org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
 </tr>
 </tbody>
 </table>
 </li>
-<li class="blockList"><a name="org.apache.hadoop.hbase.thrift2">
-<!--   -->
-</a>
-<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security">SaslUtil.QualityOfProtection</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a></h3>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
-<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a> with parameters of type <a href="../../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security">SaslUtil.QualityOfProtection</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>private static org.apache.thrift.transport.TTransportFactory</code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServer.</span><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="https://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="https://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,
-                    int&nbsp;frameSize)</code>&nbsp;</td>
-</tr>
-</tbody>
-</table>
-</li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/security/class-use/UserProvider.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/security/class-use/UserProvider.html b/devapidocs/org/apache/hadoop/hbase/security/class-use/UserProvider.html
index 311b17e..11f2e19 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/class-use/UserProvider.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/class-use/UserProvider.html
@@ -493,6 +493,20 @@ service.</div>
 <!--   -->
 </a>
 <h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a> with parameters of type <a href="../../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ThriftServer.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#createHandler-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.UserProvider-">createHandler</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+             <a href="../../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a>&nbsp;userProvider)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
 <table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing constructors, and an explanation">
 <caption><span>Constructors in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a> with parameters of type <a href="../../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
@@ -500,8 +514,12 @@ service.</div>
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#HBaseHandler-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.UserProvider-">HBaseHandler</a></span>(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)</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#HBaseServiceHandler-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.UserProvider-">HBaseServiceHandler</a></span>(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)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#ThriftHBaseServiceHandler-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.UserProvider-">ThriftHBaseServiceHandler</a></span>(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)</code>&nbsp;</td>
 </tr>
 </tbody>
 </table>
@@ -510,6 +528,20 @@ service.</div>
 <!--   -->
 </a>
 <h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a> with parameters of type <a href="../../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ThriftServer.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#createHandler-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.UserProvider-">createHandler</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+             <a href="../../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a>&nbsp;userProvider)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
 <table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing constructors, and an explanation">
 <caption><span>Constructors in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a> with parameters of type <a href="../../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 3fa6ecd..b26d46f 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="https://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="https://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="https://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/849d84a8/devapidocs/org/apache/hadoop/hbase/security/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/security/package-use.html b/devapidocs/org/apache/hadoop/hbase/security/package-use.html
index 3138bfc..9703ee4 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/package-use.html
@@ -711,9 +711,6 @@ service.</div>
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/security/class-use/SaslUtil.QualityOfProtection.html#org.apache.hadoop.hbase.thrift2">SaslUtil.QualityOfProtection</a>&nbsp;</td>
-</tr>
-<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/security/class-use/UserProvider.html#org.apache.hadoop.hbase.thrift2">UserProvider</a>
 <div class="block">Provide an instance of a user.</div>
 </td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/CallQueue.Call.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/CallQueue.Call.html b/devapidocs/org/apache/hadoop/hbase/thrift/CallQueue.Call.html
index b2f7327..fd6bc62 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/CallQueue.Call.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/CallQueue.Call.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift/CallQueue.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/DemoClient.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/CallQueue.Call.html" target="_top">Frames</a></li>
@@ -336,7 +336,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift/CallQueue.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/DemoClient.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/CallQueue.Call.html" target="_top">Frames</a></li>


[29/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html
index c4e8c8b..aa58108 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html
@@ -82,602 +82,613 @@
 <span class="sourceLineNo">074</span>  public static final String USER_COPROCESSORS_ENABLED_CONF_KEY =<a name="line.74"></a>
 <span class="sourceLineNo">075</span>    "hbase.coprocessor.user.enabled";<a name="line.75"></a>
 <span class="sourceLineNo">076</span>  public static final boolean DEFAULT_USER_COPROCESSORS_ENABLED = true;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  private static final Logger LOG = LoggerFactory.getLogger(CoprocessorHost.class);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  protected Abortable abortable;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  /** Ordered set of loaded coprocessors with lock */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  protected final SortedList&lt;E&gt; coprocEnvironments =<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      new SortedList&lt;&gt;(new EnvironmentPriorityComparator());<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  protected Configuration conf;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  // unique file prefix to use for local copies of jars when classloading<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  protected String pathPrefix;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  protected AtomicInteger loadSequence = new AtomicInteger();<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>  public CoprocessorHost(Abortable abortable) {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    this.abortable = abortable;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    this.pathPrefix = UUID.randomUUID().toString();<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>   * Not to be confused with the per-object _coprocessors_ (above),<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   * coprocessorNames is static and stores the set of all coprocessors ever<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * loaded by any thread in this JVM. It is strictly additive: coprocessors are<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * added to coprocessorNames, by checkAndLoadInstance() but are never removed, since<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   * the intention is to preserve a history of all loaded coprocessors for<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * diagnosis in case of server crash (HBASE-4014).<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  private static Set&lt;String&gt; coprocessorNames =<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      Collections.synchronizedSet(new HashSet&lt;String&gt;());<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  public static Set&lt;String&gt; getLoadedCoprocessors() {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    synchronized (coprocessorNames) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      return new HashSet(coprocessorNames);<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>  /**<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * Used to create a parameter to the HServerLoad constructor so that<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * HServerLoad can provide information about the coprocessors loaded by this<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * regionserver.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * (HBASE-4070: Improve region server metrics to report loaded coprocessors<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * to master).<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   */<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  public Set&lt;String&gt; getCoprocessors() {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    Set&lt;String&gt; returnValue = new TreeSet&lt;&gt;();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    for (E e: coprocEnvironments) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      returnValue.add(e.getInstance().getClass().getSimpleName());<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    return returnValue;<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>   * Load system coprocessors once only. Read the class names from configuration.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * Called by constructor.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   */<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  protected void loadSystemCoprocessors(Configuration conf, String confKey) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    if (!coprocessorsEnabled) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      return;<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>    Class&lt;?&gt; implClass;<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>    // load default coprocessors from configure file<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    String[] defaultCPClasses = conf.getStrings(confKey);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    if (defaultCPClasses == null || defaultCPClasses.length == 0)<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      return;<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    int priority = Coprocessor.PRIORITY_SYSTEM;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    for (String className : defaultCPClasses) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      className = className.trim();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      if (findCoprocessor(className) != null) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        // If already loaded will just continue<a name="line.147"></a>
-<span class="sourceLineNo">148</span>        LOG.warn("Attempted duplicate loading of " + className + "; skipped");<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        continue;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      }<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      ClassLoader cl = this.getClass().getClassLoader();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      Thread.currentThread().setContextClassLoader(cl);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      try {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>        implClass = cl.loadClass(className);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        // Add coprocessors as we go to guard against case where a coprocessor is specified twice<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        // in the configuration<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        if (env != null) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>          this.coprocEnvironments.add(env);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          LOG.info("System coprocessor {} loaded, priority={}.", className, priority);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>          ++priority;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        }<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      } catch (Throwable t) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        // We always abort if system coprocessors cannot be loaded<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        abortServer(className, t);<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><a name="line.169"></a>
-<span class="sourceLineNo">170</span>  /**<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * Load a coprocessor implementation into the host<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * @param path path to implementation jar<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * @param className the main class name<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * @param priority chaining priority<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * @param conf configuration for coprocessor<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   * @throws java.io.IOException Exception<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  public E load(Path path, String className, int priority,<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      Configuration conf) throws IOException {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    String[] includedClassPrefixes = null;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    if (conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY) != null){<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      String prefixes = conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      includedClassPrefixes = prefixes.split(";");<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    }<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    return load(path, className, priority, conf, includedClassPrefixes);<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>   * Load a coprocessor implementation into the host<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * @param path path to implementation jar<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param className the main class name<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * @param priority chaining priority<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * @param conf configuration for coprocessor<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * @param includedClassPrefixes class name prefixes to include<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * @throws java.io.IOException Exception<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  public E load(Path path, String className, int priority,<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      Configuration conf, String[] includedClassPrefixes) throws IOException {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    Class&lt;?&gt; implClass;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    LOG.debug("Loading coprocessor class " + className + " with path " +<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        path + " and priority " + priority);<a name="line.201"></a>
-<span class="sourceLineNo">202</span><a name="line.202"></a>
-<span class="sourceLineNo">203</span>    ClassLoader cl = null;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    if (path == null) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      try {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>        implClass = getClass().getClassLoader().loadClass(className);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      } catch (ClassNotFoundException e) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>        throw new IOException("No jar path specified for " + className);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      }<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    } else {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      cl = CoprocessorClassLoader.getClassLoader(<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        path, getClass().getClassLoader(), pathPrefix, conf);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      try {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        implClass = ((CoprocessorClassLoader)cl).loadClass(className, includedClassPrefixes);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      } catch (ClassNotFoundException e) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>        throw new IOException("Cannot load external coprocessor class " + className, e);<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><a name="line.219"></a>
-<span class="sourceLineNo">220</span>    //load custom code for coprocessor<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    Thread currentThread = Thread.currentThread();<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    try{<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      // switch temporarily to the thread classloader for custom CP<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      currentThread.setContextClassLoader(cl);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      E cpInstance = checkAndLoadInstance(implClass, priority, conf);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return cpInstance;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    } finally {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      // restore the fresh (host) classloader<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      currentThread.setContextClassLoader(hostClassLoader);<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>  @VisibleForTesting<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public void load(Class&lt;? extends C&gt; implClass, int priority, Configuration conf)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      throws IOException {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    coprocEnvironments.add(env);<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>   * @param implClass Implementation class<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * @param priority priority<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   * @param conf configuration<a name="line.244"></a>
-<span class="sourceLineNo">245</span>   * @throws java.io.IOException Exception<a name="line.245"></a>
-<span class="sourceLineNo">246</span>   */<a name="line.246"></a>
-<span class="sourceLineNo">247</span>  public E checkAndLoadInstance(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      throws IOException {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    // create the instance<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    C impl;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    try {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      impl = checkAndGetInstance(implClass);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      if (impl == null) {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        LOG.error("Cannot load coprocessor " + implClass.getSimpleName());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        return null;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      }<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    } catch (InstantiationException|IllegalAccessException e) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      throw new IOException(e);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    // create the environment<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    E env = createEnvironment(impl, priority, loadSequence.incrementAndGet(), conf);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    assert env instanceof BaseEnvironment;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    ((BaseEnvironment&lt;C&gt;) env).startup();<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    // HBASE-4014: maintain list of loaded coprocessors for later crash analysis<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    // if server (master or regionserver) aborts.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    coprocessorNames.add(implClass.getName());<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    return env;<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>  /**<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * Called when a new Coprocessor class is loaded<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   */<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  public abstract E createEnvironment(C instance, int priority, int sequence, Configuration conf);<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>   * Called when a new Coprocessor class needs to be loaded. Checks if type of the given class<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   * is what the corresponding host implementation expects. If it is of correct type, returns an<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   * instance of the coprocessor to be loaded. If not, returns null.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   * If an exception occurs when trying to create instance of a coprocessor, it's passed up and<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * eventually results into server aborting.<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   */<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  public abstract C checkAndGetInstance(Class&lt;?&gt; implClass)<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      throws InstantiationException, IllegalAccessException;<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>  public void shutdown(E e) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    assert e instanceof BaseEnvironment;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    if (LOG.isDebugEnabled()) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      LOG.debug("Stop coprocessor " + e.getInstance().getClass().getName());<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    }<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    ((BaseEnvironment&lt;C&gt;) e).shutdown();<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>   * Find coprocessors by full class name or simple name.<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   */<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  public C findCoprocessor(String className) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    for (E env: coprocEnvironments) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        return env.getInstance();<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>    return null;<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>  @VisibleForTesting<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  public &lt;T extends C&gt; T findCoprocessor(Class&lt;T&gt; cls) {<a name="line.307"></a>
+<span class="sourceLineNo">077</span>  public static final String SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR =<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      "hbase.skip.load.duplicate.table.coprocessor";<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  public static final boolean DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR = false;<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private static final Logger LOG = LoggerFactory.getLogger(CoprocessorHost.class);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  protected Abortable abortable;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  /** Ordered set of loaded coprocessors with lock */<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  protected final SortedList&lt;E&gt; coprocEnvironments =<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      new SortedList&lt;&gt;(new EnvironmentPriorityComparator());<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  protected Configuration conf;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  // unique file prefix to use for local copies of jars when classloading<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  protected String pathPrefix;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  protected AtomicInteger loadSequence = new AtomicInteger();<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public CoprocessorHost(Abortable abortable) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    this.abortable = abortable;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    this.pathPrefix = UUID.randomUUID().toString();<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>   * Not to be confused with the per-object _coprocessors_ (above),<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   * coprocessorNames is static and stores the set of all coprocessors ever<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   * loaded by any thread in this JVM. It is strictly additive: coprocessors are<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * added to coprocessorNames, by checkAndLoadInstance() but are never removed, since<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * the intention is to preserve a history of all loaded coprocessors for<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * diagnosis in case of server crash (HBASE-4014).<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   */<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  private static Set&lt;String&gt; coprocessorNames =<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      Collections.synchronizedSet(new HashSet&lt;String&gt;());<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  public static Set&lt;String&gt; getLoadedCoprocessors() {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    synchronized (coprocessorNames) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      return new HashSet(coprocessorNames);<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>  /**<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * Used to create a parameter to the HServerLoad constructor so that<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   * HServerLoad can provide information about the coprocessors loaded by this<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   * regionserver.<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   * (HBASE-4070: Improve region server metrics to report loaded coprocessors<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   * to master).<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   */<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  public Set&lt;String&gt; getCoprocessors() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    Set&lt;String&gt; returnValue = new TreeSet&lt;&gt;();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    for (E e: coprocEnvironments) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      returnValue.add(e.getInstance().getClass().getSimpleName());<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    return returnValue;<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>   * Load system coprocessors once only. Read the class names from configuration.<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * Called by constructor.<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  protected void loadSystemCoprocessors(Configuration conf, String confKey) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    if (!coprocessorsEnabled) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      return;<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>    Class&lt;?&gt; implClass;<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>    // load default coprocessors from configure file<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    String[] defaultCPClasses = conf.getStrings(confKey);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    if (defaultCPClasses == null || defaultCPClasses.length == 0)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      return;<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    int priority = Coprocessor.PRIORITY_SYSTEM;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    for (String className : defaultCPClasses) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      className = className.trim();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      if (findCoprocessor(className) != null) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        // If already loaded will just continue<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        LOG.warn("Attempted duplicate loading of " + className + "; skipped");<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        continue;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      }<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      ClassLoader cl = this.getClass().getClassLoader();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      Thread.currentThread().setContextClassLoader(cl);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      try {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>        implClass = cl.loadClass(className);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        // Add coprocessors as we go to guard against case where a coprocessor is specified twice<a name="line.158"></a>
+<span class="sourceLineNo">159</span>        // in the configuration<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        if (env != null) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>          this.coprocEnvironments.add(env);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>          LOG.info("System coprocessor {} loaded, priority={}.", className, priority);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>          ++priority;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      } catch (Throwable t) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        // We always abort if system coprocessors cannot be loaded<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        abortServer(className, t);<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>  }<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>   * Load a coprocessor implementation into the host<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * @param path path to implementation jar<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * @param className the main class name<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   * @param priority chaining priority<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   * @param conf configuration for coprocessor<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   * @throws java.io.IOException Exception<a name="line.179"></a>
+<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  public E load(Path path, String className, int priority,<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      Configuration conf) throws IOException {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    String[] includedClassPrefixes = null;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    if (conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY) != null){<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      String prefixes = conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      includedClassPrefixes = prefixes.split(";");<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return load(path, className, priority, conf, includedClassPrefixes);<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>  /**<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * Load a coprocessor implementation into the host<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * @param path path to implementation jar<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * @param className the main class name<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * @param priority chaining priority<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * @param conf configuration for coprocessor<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * @param includedClassPrefixes class name prefixes to include<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * @throws java.io.IOException Exception<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   */<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  public E load(Path path, String className, int priority,<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      Configuration conf, String[] includedClassPrefixes) throws IOException {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    Class&lt;?&gt; implClass;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    LOG.debug("Loading coprocessor class " + className + " with path " +<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        path + " and priority " + priority);<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>    boolean skipLoadDuplicateCoprocessor = conf.getBoolean(SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR,<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    if (skipLoadDuplicateCoprocessor &amp;&amp; findCoprocessor(className) != null) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      // If already loaded will just continue<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      LOG.warn("Attempted duplicate loading of {}; skipped", className);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      return null;<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>    ClassLoader cl = null;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    if (path == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      try {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        implClass = getClass().getClassLoader().loadClass(className);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      } catch (ClassNotFoundException e) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        throw new IOException("No jar path specified for " + className);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      }<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    } else {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      cl = CoprocessorClassLoader.getClassLoader(<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        path, getClass().getClassLoader(), pathPrefix, conf);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      try {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        implClass = ((CoprocessorClassLoader)cl).loadClass(className, includedClassPrefixes);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      } catch (ClassNotFoundException e) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        throw new IOException("Cannot load external coprocessor class " + className, e);<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>    //load custom code for coprocessor<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    Thread currentThread = Thread.currentThread();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    try{<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      // switch temporarily to the thread classloader for custom CP<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      currentThread.setContextClassLoader(cl);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      E cpInstance = checkAndLoadInstance(implClass, priority, conf);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      return cpInstance;<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    } finally {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      // restore the fresh (host) classloader<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      currentThread.setContextClassLoader(hostClassLoader);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    }<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>  @VisibleForTesting<a name="line.245"></a>
+<span class="sourceLineNo">246</span>  public void load(Class&lt;? extends C&gt; implClass, int priority, Configuration conf)<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      throws IOException {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    coprocEnvironments.add(env);<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>  /**<a name="line.252"></a>
+<span class="sourceLineNo">253</span>   * @param implClass Implementation class<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * @param priority priority<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * @param conf configuration<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   * @throws java.io.IOException Exception<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   */<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  public E checkAndLoadInstance(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      throws IOException {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    // create the instance<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    C impl;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    try {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      impl = checkAndGetInstance(implClass);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      if (impl == null) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        LOG.error("Cannot load coprocessor " + implClass.getSimpleName());<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        return null;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    } catch (InstantiationException|IllegalAccessException e) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      throw new IOException(e);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    }<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    // create the environment<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    E env = createEnvironment(impl, priority, loadSequence.incrementAndGet(), conf);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    assert env instanceof BaseEnvironment;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    ((BaseEnvironment&lt;C&gt;) env).startup();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    // HBASE-4014: maintain list of loaded coprocessors for later crash analysis<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // if server (master or regionserver) aborts.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    coprocessorNames.add(implClass.getName());<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    return env;<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>   * Called when a new Coprocessor class is loaded<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   */<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  public abstract E createEnvironment(C instance, int priority, int sequence, Configuration conf);<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>   * Called when a new Coprocessor class needs to be loaded. Checks if type of the given class<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * is what the corresponding host implementation expects. If it is of correct type, returns an<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * instance of the coprocessor to be loaded. If not, returns null.<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * If an exception occurs when trying to create instance of a coprocessor, it's passed up and<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * eventually results into server aborting.<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   */<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  public abstract C checkAndGetInstance(Class&lt;?&gt; implClass)<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      throws InstantiationException, IllegalAccessException;<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  public void shutdown(E e) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    assert e instanceof BaseEnvironment;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    if (LOG.isDebugEnabled()) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      LOG.debug("Stop coprocessor " + e.getInstance().getClass().getName());<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    }<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    ((BaseEnvironment&lt;C&gt;) e).shutdown();<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>  /**<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * Find coprocessors by full class name or simple name.<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   */<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  public C findCoprocessor(String className) {<a name="line.307"></a>
 <span class="sourceLineNo">308</span>    for (E env: coprocEnvironments) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      if (cls.isAssignableFrom(env.getInstance().getClass())) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        return (T) env.getInstance();<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>    return null;<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>   * Find list of coprocessors that extend/implement the given class/interface<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @param cls the class/interface to look for<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * @return the list of coprocessors, or null if not found<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public &lt;T extends C&gt; List&lt;T&gt; findCoprocessors(Class&lt;T&gt; cls) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    ArrayList&lt;T&gt; ret = new ArrayList&lt;&gt;();<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    for (E env: coprocEnvironments) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      C cp = env.getInstance();<a name="line.325"></a>
+<span class="sourceLineNo">309</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.309"></a>
+<span class="sourceLineNo">310</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        return env.getInstance();<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>    return null;<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>  @VisibleForTesting<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public &lt;T extends C&gt; T findCoprocessor(Class&lt;T&gt; cls) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    for (E env: coprocEnvironments) {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      if (cls.isAssignableFrom(env.getInstance().getClass())) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        return (T) env.getInstance();<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>    return null;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
 <span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>      if(cp != null) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        if (cls.isAssignableFrom(cp.getClass())) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          ret.add((T)cp);<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>    }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    return ret;<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>  /**<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * Find a coprocessor environment by class name<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   * @param className the class name<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   * @return the coprocessor, or null if not found<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   */<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  @VisibleForTesting<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public E findCoprocessorEnvironment(String className) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    for (E env: coprocEnvironments) {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.344"></a>
-<span class="sourceLineNo">345</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        return env;<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>    return null;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  }<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>   * Retrieves the set of classloaders used to instantiate Coprocessor classes defined in external<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * jar files.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * @return A set of ClassLoader instances<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  Set&lt;ClassLoader&gt; getExternalClassLoaders() {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    Set&lt;ClassLoader&gt; externalClassLoaders = new HashSet&lt;&gt;();<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    final ClassLoader systemClassLoader = this.getClass().getClassLoader();<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    for (E env : coprocEnvironments) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      ClassLoader cl = env.getInstance().getClass().getClassLoader();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      if (cl != systemClassLoader){<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        //do not include system classloader<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        externalClassLoaders.add(cl);<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>    return externalClassLoaders;<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>   * Environment priority comparator.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * Coprocessors are chained in sorted order.<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   */<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  static class EnvironmentPriorityComparator implements Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    @Override<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        final CoprocessorEnvironment env2) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>        return -1;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>        return 1;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      }<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        return -1;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        return 1;<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      return 0;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    }<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>  protected void abortServer(final E environment, final Throwable e) {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    abortServer(environment.getInstance().getClass().getName(), e);<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>  protected void abortServer(final String coprocessorName, final Throwable e) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    String message = "The coprocessor " + coprocessorName + " threw " + e.toString();<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    LOG.error(message, e);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    if (abortable != null) {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      abortable.abort(message, e);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    } else {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      LOG.warn("No available Abortable, process was not aborted");<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>  /**<a name="line.406"></a>
-<span class="sourceLineNo">407</span>   * This is used by coprocessor hooks which are declared to throw IOException<a name="line.407"></a>
-<span class="sourceLineNo">408</span>   * (or its subtypes). For such hooks, we should handle throwable objects<a name="line.408"></a>
-<span class="sourceLineNo">409</span>   * depending on the Throwable's type. Those which are instances of<a name="line.409"></a>
-<span class="sourceLineNo">410</span>   * IOException should be passed on to the client. This is in conformance with<a name="line.410"></a>
-<span class="sourceLineNo">411</span>   * the HBase idiom regarding IOException: that it represents a circumstance<a name="line.411"></a>
-<span class="sourceLineNo">412</span>   * that should be passed along to the client for its own handling. For<a name="line.412"></a>
-<span class="sourceLineNo">413</span>   * example, a coprocessor that implements access controls would throw a<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * subclass of IOException, such as AccessDeniedException, in its preGet()<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * method to prevent an unauthorized client's performing a Get on a particular<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * table.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param env Coprocessor Environment<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param e Throwable object thrown by coprocessor.<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * @exception IOException Exception<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   */<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  // Note to devs: Class comments of all observers ({@link MasterObserver}, {@link WALObserver},<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  // etc) mention this nuance of our exception handling so that coprocessor can throw appropriate<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  // exceptions depending on situation. If any changes are made to this logic, make sure to<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  // update all classes' comments.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  protected void handleCoprocessorThrowable(final E env, final Throwable e) throws IOException {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    if (e instanceof IOException) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      throw (IOException)e;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    // If we got here, e is not an IOException. A loaded coprocessor has a<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    // fatal bug, and the server (master or regionserver) should remove the<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    // faulty coprocessor from its set of active coprocessors. Setting<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    // 'hbase.coprocessor.abortonerror' to true will cause abortServer(),<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    // which may be useful in development and testing environments where<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    // 'failing fast' for error analysis is desired.<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if (env.getConfiguration().getBoolean(ABORT_ON_ERROR_KEY, DEFAULT_ABORT_ON_ERROR)) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      // server is configured to abort.<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      abortServer(env, e);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    } else {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      // If available, pull a table name out of the environment<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      if(env instanceof RegionCoprocessorEnvironment) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        String tableName = ((RegionCoprocessorEnvironment)env).getRegionInfo().getTable().getNameAsString();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from table '"+ tableName + "'", e);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      } else {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from " +<a name="line.444"></a>
-<span class="sourceLineNo">445</span>                "environment",e);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>      coprocEnvironments.remove(env);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      try {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>        shutdown(env);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      } catch (Exception x) {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>        LOG.error("Uncaught exception when shutting down coprocessor '"<a name="line.452"></a>
-<span class="sourceLineNo">453</span>            + env.toString() + "'", x);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      throw new DoNotRetryIOException("Coprocessor: '" + env.toString() +<a name="line.455"></a>
-<span class="sourceLineNo">456</span>          "' threw: '" + e + "' and has been removed from the active " +<a name="line.456"></a>
-<span class="sourceLineNo">457</span>          "coprocessor set.", e);<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><a name="line.460"></a>
-<span class="sourceLineNo">461</span>  /**<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * Used to limit legacy handling to once per Coprocessor class per classloader.<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   */<a name="line.463"></a>
-<span class="sourceLineNo">464</span>  private static final Set&lt;Class&lt;? extends Coprocessor&gt;&gt; legacyWarning =<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      new ConcurrentSkipListSet&lt;&gt;(<a name="line.465"></a>
-<span class="sourceLineNo">466</span>          new Comparator&lt;Class&lt;? extends Coprocessor&gt;&gt;() {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>            @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>            public int compare(Class&lt;? extends Coprocessor&gt; c1, Class&lt;? extends Coprocessor&gt; c2) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>              if (c1.equals(c2)) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>                return 0;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>              }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>              return c1.getName().compareTo(c2.getName());<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><a name="line.475"></a>
-<span class="sourceLineNo">476</span>  /**<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * Implementations defined function to get an observer of type {@code O} from a coprocessor of<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * type {@code C}. Concrete implementations of CoprocessorHost define one getter for each<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * observer they can handle. For e.g. RegionCoprocessorHost will use 3 getters, one for<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * each of RegionObserver, EndpointObserver and BulkLoadObserver.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * These getters are used by {@code ObserverOperation} to get appropriate observer from the<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * coprocessor.<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   */<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  @FunctionalInterface<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  public interface ObserverGetter&lt;C, O&gt; extends Function&lt;C, Optional&lt;O&gt;&gt; {}<a name="line.485"></a>
+<span class="sourceLineNo">327</span>  /**<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * Find list of coprocessors that extend/implement the given class/interface<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @param cls the class/interface to look for<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   * @return the list of coprocessors, or null if not found<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public &lt;T extends C&gt; List&lt;T&gt; findCoprocessors(Class&lt;T&gt; cls) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    ArrayList&lt;T&gt; ret = new ArrayList&lt;&gt;();<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>    for (E env: coprocEnvironments) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      C cp = env.getInstance();<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>      if(cp != null) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>        if (cls.isAssignableFrom(cp.getClass())) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>          ret.add((T)cp);<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>    return ret;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  }<a name="line.345"></a>
+<span class="sourceLineNo">346</span><a name="line.346"></a>
+<span class="sourceLineNo">347</span>  /**<a name="line.347"></a>
+<span class="sourceLineNo">348</span>   * Find a coprocessor environment by class name<a name="line.348"></a>
+<span class="sourceLineNo">349</span>   * @param className the class name<a name="line.349"></a>
+<span class="sourceLineNo">350</span>   * @return the coprocessor, or null if not found<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   */<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  @VisibleForTesting<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  public E findCoprocessorEnvironment(String className) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    for (E env: coprocEnvironments) {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        return env;<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>    return null;<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>  /**<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   * Retrieves the set of classloaders used to instantiate Coprocessor classes defined in external<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   * jar files.<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   * @return A set of ClassLoader instances<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  Set&lt;ClassLoader&gt; getExternalClassLoaders() {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    Set&lt;ClassLoader&gt; externalClassLoaders = new HashSet&lt;&gt;();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    final ClassLoader systemClassLoader = this.getClass().getClassLoader();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    for (E env : coprocEnvironments) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      ClassLoader cl = env.getInstance().getClass().getClassLoader();<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      if (cl != systemClassLoader){<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        //do not include system classloader<a name="line.374"></a>
+<span class="sourceLineNo">375</span>        externalClassLoaders.add(cl);<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>    return externalClassLoaders;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  }<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>   * Environment priority comparator.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   * Coprocessors are chained in sorted order.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>   */<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  static class EnvironmentPriorityComparator implements Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    @Override<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        final CoprocessorEnvironment env2) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        return -1;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<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>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        return -1;<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        return 1;<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      }<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      return 0;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  protected void abortServer(final E environment, final Throwable e) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    abortServer(environment.getInstance().getClass().getName(), 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>  protected void abortServer(final String coprocessorName, final Throwable e) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    String message = "The coprocessor " + coprocessorName + " threw " + e.toString();<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    LOG.error(message, e);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    if (abortable != null) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      abortable.abort(message, e);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    } else {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      LOG.warn("No available Abortable, process was not aborted");<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>  /**<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   * This is used by coprocessor hooks which are declared to throw IOException<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * (or its subtypes). For such hooks, we should handle throwable objects<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   * depending on the Throwable's type. Those which are instances of<a name="line.420"></a>
+<span class="sourceLineNo">421</span>   * IOException should be passed on to the client. This is in conformance with<a name="line.421"></a>
+<span class="sourceLineNo">422</span>   * the HBase idiom regarding IOException: that it represents a circumstance<a name="line.422"></a>
+<span class="sourceLineNo">423</span>   * that should be passed along to the client for its own handling. For<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   * example, a coprocessor that implements access controls would throw a<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   * subclass of IOException, such as AccessDeniedException, in its preGet()<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * method to prevent an unauthorized client's performing a Get on a particular<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * table.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * @param env Coprocessor Environment<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * @param e Throwable object thrown by coprocessor.<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * @exception IOException Exception<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   */<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  // Note to devs: Class comments of all observers ({@link MasterObserver}, {@link WALObserver},<a name="line.432"></a>
+<span class="sourceLineNo">433</span>  // etc) mention this nuance of our exception handling so that coprocessor can throw appropriate<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  // exceptions depending on situation. If any changes are made to this logic, make sure to<a name="line.434"></a>
+<span class="sourceLineNo">435</span>  // update all classes' comments.<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  protected void handleCoprocessorThrowable(final E env, final Throwable e) throws IOException {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    if (e instanceof IOException) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      throw (IOException)e;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    // If we got here, e is not an IOException. A loaded coprocessor has a<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    // fatal bug, and the server (master or regionserver) should remove the<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    // faulty coprocessor from its set of active coprocessors. Setting<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    // 'hbase.coprocessor.abortonerror' to true will cause abortServer(),<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    // which may be useful in development and testing environments where<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    // 'failing fast' for error analysis is desired.<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    if (env.getConfiguration().getBoolean(ABORT_ON_ERROR_KEY, DEFAULT_ABORT_ON_ERROR)) {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      // server is configured to abort.<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      abortServer(env, e);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } else {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      // If available, pull a table name out of the environment<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      if(env instanceof RegionCoprocessorEnvironment) {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>        String tableName = ((RegionCoprocessorEnvironment)env).getRegionInfo().getTable().getNameAsString();<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from table '"+ tableName + "'", e);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      } else {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from " +<a name="line.455"></a>
+<span class="sourceLineNo">456</span>                "environment",e);<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>      coprocEnvironments.remove(env);<a name="line.459"></a>
+<span class="sourceLineNo">460</span>      try {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>        shutdown(env);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      } catch (Exception x) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        LOG.error("Uncaught exception when shutting down coprocessor '"<a name="line.463"></a>
+<span class="sourceLineNo">464</span>            + env.toString() + "'", x);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      throw new DoNotRetryIOException("Coprocessor: '" + env.toString() +<a name="line.466"></a>
+<span class="sourceLineNo">467</span>          "' threw: '" + e + "' and has been removed from the active " +<a name="line.467"></a>
+<span class="sourceLineNo">468</span>          "coprocessor set.", e);<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><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * Used to limit legacy handling to once per Coprocessor class per classloader.<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   */<a name="line.474"></a>
+<span class="sourceLineNo">475</span>  private static final Set&lt;Class&lt;? extends Coprocessor&gt;&gt; legacyWarning =<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      new ConcurrentSkipListSet&lt;&gt;(<a name="line.476"></a>
+<span class="sourceLineNo">477</span>          new Comparator&lt;Class&lt;? extends Coprocessor&gt;&gt;() {<a name="line.477"></a>
+<span class="sourceLineNo">478</span>            @Override<a name="line.478"></a>
+<span class="sourceLineNo">479</span>            public int compare(Class&lt;? extends Coprocessor&gt; c1, Class&lt;? extends Coprocessor&gt; c2) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>              if (c1.equals(c2)) {<a name="line.480"></a>
+<span class="sourceLineNo">481</span>                return 0;<a name="line.481"></a>
+<span class="sourceLineNo">482</span>              }<a name="line.482"></a>
+<span class="sourceLineNo">483</span>              return c1.getName().compareTo(c2.getName());<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>  private abstract class ObserverOperation&lt;O&gt; extends ObserverContextImpl&lt;E&gt; {<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    ObserverGetter&lt;C, O&gt; observerGetter;<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      this(observerGetter, null);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter, User user) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      this(observerGetter, user, false);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
+<span class="sourceLineNo">487</span>  /**<a name="line.487"></a>
+<span class="sourceLineNo">488</span>   * Implementations defined function to get an observer of type {@code O} from a coprocessor of<a name="line.488"></a>
+<span class="sourceLineNo">489</span>   * type {@code C}. Concrete implementations of CoprocessorHost define one getter for each<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   * observer they can handle. For e.g. RegionCoprocessorHost will use 3 getters, one for<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   * each of RegionObserver, EndpointObserver and BulkLoadObserver.<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   * These getters are used by {@code ObserverOperation} to get appropriate observer from the<a name="line.492"></a>
+<span class="sourceLineNo">493</span>   * coprocessor.<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   */<a name="line.494"></a>
+<span class="sourceLineNo">495</span>  @FunctionalInterface<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  public interface ObserverGetter&lt;C, O&gt; extends Function&lt;C, Optional&lt;O&gt;&gt; {}<a name="line.496"></a>
 <span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter, boolean bypassable) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      this(observerGetter, null, bypassable);<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>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter, User user, boolean bypassable) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      super(user != null? user: RpcServer.getRequestUser().orElse(null), bypassable);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      this.observerGetter = observerGetter;<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>    abstract void callObserver() throws IOException;<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    protected void postEnvCall() {}<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  // Can't derive ObserverOperation from ObserverOperationWithResult (R = Void) because then all<a name="line.511"></a>
-<span class="sourceLineNo">512</span>  // ObserverCaller implementations will have to have a return statement.<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  // O = observer, E = environment, C = coprocessor, R=result type<a name="line.513"></a>
-<span class="sourceLineNo">514</span>  public abstract class ObserverOperationWithoutResult&lt;O&gt; extends ObserverOperation&lt;O&gt; {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    protected abstract void call(O observer) throws IOException;<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>    public ObserverOperationWithoutResult(ObserverGetter&lt;C, O&gt; observerGetter) {<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      super(observerGetter);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    }<a name="line.519"></a>
-<span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span>    public ObserverOperationWithoutResult(ObserverGetter&lt;C, O&gt; observerGetter, User user) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      super(observerGetter, user);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>    public ObserverOperationWithoutResult(ObserverGetter&lt;C, O&gt; observerGetter, User user,<a name="line.525"></a>
-<span class="sourceLineNo">526</span>        boolean bypassable) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      super(observerGetter, user, bypassable);<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>    /**<a name="line.530"></a>
-<span class="sourceLineNo">531</span>     * In case of coprocessors which have many kinds of observers (for eg, {@link RegionCoprocessor}<a name="line.531"></a>
-<span class="sourceLineNo">532</span>     * has BulkLoadObserver, RegionObserver, etc), some implementations may not need all<a name="line.532"></a>
-<span class="sourceLineNo">533</span>     * observers, in which case they will return null for that observer's getter.<a name="line.533"></a>
-<span class="sourceLineNo">534</span>     * We simply ignore such cases.<a name="line.534"></a>
-<span class="sourceLineNo">535</span>     */<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    @Override<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    void callObserver() throws IOException {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      Optional&lt;O&gt; observer = observerGetter.apply(getEnvironment().getInstance());<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      if (observer.isPresent()) {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        call(observer.get());<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      }<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    }<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>  public abstract class ObserverOperationWithResult&lt;O, R&gt; extends ObserverOperation&lt;O&gt; {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    protected abstract R call(O observer) throws IOException;<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span cl

<TRUNCATED>

[05/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 895ce40..49fd434 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":10,"i2":9,"i3":10,"i4":10,"i5":10,"i6":9,"i7":10};
+var methods = {"i0":10,"i1":9,"i2":10,"i3":9,"i4":10,"i5":10,"i6":10,"i7":9,"i8":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";
@@ -107,9 +107,13 @@ var activeTableTab = "activeTableTab";
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
+<dl>
+<dt>Direct Known Subclasses:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2">TestThrift2ServerCmdLine</a></dd>
+</dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.62">TestThriftServerCmdLine</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.66">TestThriftServerCmdLine</a>
 extends <a href="https://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">Start the HBase Thrift server on a random port through the command-line
  interface and talk to it from client side.</div>
@@ -148,7 +152,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#cmdLineThread">cmdLineThread</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private org.apache.hadoop.hbase.thrift.ThriftServerRunner.ImplType</code></td>
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.thrift.ImplType</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#implType">implType</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
@@ -156,27 +160,27 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#LOG">LOG</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private int</code></td>
+<td class="colFirst"><code>protected int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#port">port</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private boolean</code></td>
+<td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#specifyBindIP">specifyBindIP</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private boolean</code></td>
+<td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#specifyCompact">specifyCompact</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private boolean</code></td>
+<td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#specifyFramed">specifyFramed</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private static boolean</code></td>
+<td class="colFirst"><code>protected static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#tableCreated">tableCreated</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
+<td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
@@ -198,7 +202,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <th class="colOne" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#TestThriftServerCmdLine-org.apache.hadoop.hbase.thrift.ThriftServerRunner.ImplType-boolean-boolean-boolean-">TestThriftServerCmdLine</a></span>(org.apache.hadoop.hbase.thrift.ThriftServerRunner.ImplType&nbsp;implType,
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#TestThriftServerCmdLine-org.apache.hadoop.hbase.thrift.ImplType-boolean-boolean-boolean-">TestThriftServerCmdLine</a></span>(org.apache.hadoop.hbase.thrift.ImplType&nbsp;implType,
                        boolean&nbsp;specifyFramed,
                        boolean&nbsp;specifyBindIP,
                        boolean&nbsp;specifyCompact)</code>&nbsp;</td>
@@ -219,34 +223,38 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <th class="colLast" scope="col">Method and Description</th>
 </tr>
 <tr id="i0" class="altColor">
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.thrift.ThriftServer</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#createThriftServer--">createThriftServer</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
 <td class="colFirst"><code>static <a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#getParameters--">getParameters</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i1" class="rowColor">
+<tr id="i2" class="altColor">
 <td class="colFirst"><code>private <a href="https://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/thrift/TestThriftServerCmdLine.html#getParametersString--">getParametersString</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i2" class="altColor">
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#setUpBeforeClass--">setUpBeforeClass</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i4" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#startCmdLineThread-java.lang.String:A-">startCmdLineThread</a></span>(<a href="https://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="i4" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#stopCmdLineThread--">stopCmdLineThread</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i5" class="rowColor">
-<td class="colFirst"><code>private void</code></td>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#talkToThriftServer--">talkToThriftServer</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#tearDownAfterClass--">tearDownAfterClass</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#testRunThriftServer--">testRunThriftServer</a></span>()</code>&nbsp;</td>
 </tr>
@@ -278,7 +286,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.65">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.69">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -287,7 +295,7 @@ extends <a href="https://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/thrift/TestThriftServerCmdLine.html#line.68">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.72">LOG</a></pre>
 </li>
 </ul>
 <a name="implType">
@@ -296,7 +304,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>implType</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.thrift.ThriftServerRunner.ImplType <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.71">implType</a></pre>
+<pre>protected final&nbsp;org.apache.hadoop.hbase.thrift.ImplType <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.75">implType</a></pre>
 </li>
 </ul>
 <a name="specifyFramed">
@@ -305,7 +313,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>specifyFramed</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.72">specifyFramed</a></pre>
+<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.76">specifyFramed</a></pre>
 </li>
 </ul>
 <a name="specifyBindIP">
@@ -314,7 +322,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>specifyBindIP</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.73">specifyBindIP</a></pre>
+<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.77">specifyBindIP</a></pre>
 </li>
 </ul>
 <a name="specifyCompact">
@@ -323,7 +331,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>specifyCompact</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.74">specifyCompact</a></pre>
+<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.78">specifyCompact</a></pre>
 </li>
 </ul>
 <a name="TEST_UTIL">
@@ -332,7 +340,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_UTIL</h4>
-<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.76">TEST_UTIL</a></pre>
+<pre>protected static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.80">TEST_UTIL</a></pre>
 </li>
 </ul>
 <a name="cmdLineThread">
@@ -341,7 +349,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>cmdLineThread</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.79">cmdLineThread</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.83">cmdLineThread</a></pre>
 </li>
 </ul>
 <a name="cmdLineException">
@@ -350,7 +358,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>cmdLineException</h4>
-<pre>private volatile&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.80">cmdLineException</a></pre>
+<pre>private volatile&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.84">cmdLineException</a></pre>
 </li>
 </ul>
 <a name="clientSideException">
@@ -359,7 +367,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>clientSideException</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.82">clientSideException</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.86">clientSideException</a></pre>
 </li>
 </ul>
 <a name="thriftServer">
@@ -368,7 +376,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>thriftServer</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.thrift.ThriftServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.84">thriftServer</a></pre>
+<pre>private volatile&nbsp;org.apache.hadoop.hbase.thrift.ThriftServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.88">thriftServer</a></pre>
 </li>
 </ul>
 <a name="port">
@@ -377,7 +385,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>port</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.85">port</a></pre>
+<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.89">port</a></pre>
 </li>
 </ul>
 <a name="tableCreated">
@@ -386,7 +394,7 @@ extends <a href="https://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.213">tableCreated</a></pre>
+<pre>protected static volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.222">tableCreated</a></pre>
 </li>
 </ul>
 </li>
@@ -397,13 +405,13 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="TestThriftServerCmdLine-org.apache.hadoop.hbase.thrift.ThriftServerRunner.ImplType-boolean-boolean-boolean-">
+<a name="TestThriftServerCmdLine-org.apache.hadoop.hbase.thrift.ImplType-boolean-boolean-boolean-">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestThriftServerCmdLine</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.107">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.111">TestThriftServerCmdLine</a>(org.apache.hadoop.hbase.thrift.ImplType&nbsp;implType,
                                boolean&nbsp;specifyFramed,
                                boolean&nbsp;specifyBindIP,
                                boolean&nbsp;specifyCompact)</pre>
@@ -423,7 +431,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getParameters</h4>
-<pre>public static&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.88">getParameters</a>()</pre>
+<pre>public static&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.92">getParameters</a>()</pre>
 </li>
 </ul>
 <a name="getParametersString--">
@@ -432,7 +440,7 @@ extends <a href="https://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="https://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.116">getParametersString</a>()</pre>
+<pre>private&nbsp;<a href="https://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.120">getParametersString</a>()</pre>
 </li>
 </ul>
 <a name="setUpBeforeClass--">
@@ -441,7 +449,7 @@ extends <a href="https://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.124">setUpBeforeClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.128">setUpBeforeClass</a>()
                              throws <a href="https://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>
@@ -455,7 +463,7 @@ extends <a href="https://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.133">tearDownAfterClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.137">tearDownAfterClass</a>()
                                throws <a href="https://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>
@@ -469,7 +477,16 @@ extends <a href="https://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.138">startCmdLineThread</a>(<a href="https://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.142">startCmdLineThread</a>(<a href="https://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="createThriftServer--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createThriftServer</h4>
+<pre>protected&nbsp;org.apache.hadoop.hbase.thrift.ThriftServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.162">createThriftServer</a>()</pre>
 </li>
 </ul>
 <a name="testRunThriftServer--">
@@ -478,7 +495,7 @@ extends <a href="https://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.158">testRunThriftServer</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.167">testRunThriftServer</a>()
                          throws <a href="https://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>
@@ -492,8 +509,8 @@ extends <a href="https://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.215">talkToThriftServer</a>()
-                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.224">talkToThriftServer</a>()
+                           throws <a href="https://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>
 <dd><code><a href="https://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>
@@ -506,7 +523,7 @@ extends <a href="https://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.243">stopCmdLineThread</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.253">stopCmdLineThread</a>()
                         throws <a href="https://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/849d84a8/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html b/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html
index 10e4a7c..a336c3b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.82">TestThriftSpnegoHttpServer</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.77">TestThriftSpnegoHttpServer</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftHttpServer</a></pre>
 <div class="block">Start the HBase Thrift HTTP server on a random port through the command-line
  interface and talk to it from client side with SPNEGO security enabled.</div>
@@ -234,7 +234,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;principal)</code>&nbsp;</td>
 </tr>
 <tr id="i5" class="rowColor">
-<td class="colFirst"><code>(package private) void</code></td>
+<td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#talkToThriftServer-java.lang.String-int-">talkToThriftServer</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;url,
                   int&nbsp;customHeaderSize)</code>&nbsp;</td>
 </tr>
@@ -248,7 +248,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftHttpServer</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#runThriftServer-int-">runThriftServer</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#testExceptionThrownWhenMisConfigured--">testExceptionThrownWhenMisConfigured</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#testRunThriftServer--">testRunThriftServer</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#testRunThriftServerWithHeaderBufferLength--">testRunThriftServerWithHeaderBufferLength</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#createThriftServer--">createThriftServer</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#runThriftServer-int-">runThriftServer</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#testExceptionThrownWhenMisConfigured--">testExceptionThrownWhenMisConfigured</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#testRunThriftServer--">testRunThriftServer</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#testRunThriftServerWithHeaderBufferLength--">testRunThriftServerWithHeaderBufferLength</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -277,7 +277,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.84">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.79">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -286,7 +286,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <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/thrift/TestThriftSpnegoHttpServer.html#line.87">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.82">LOG</a></pre>
 </li>
 </ul>
 <a name="kdc">
@@ -295,7 +295,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>kdc</h4>
-<pre>private static&nbsp;org.apache.kerby.kerberos.kerb.server.SimpleKdcServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.90">kdc</a></pre>
+<pre>private static&nbsp;org.apache.kerby.kerberos.kerb.server.SimpleKdcServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.85">kdc</a></pre>
 </li>
 </ul>
 <a name="serverKeytab">
@@ -304,7 +304,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>serverKeytab</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.91">serverKeytab</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.86">serverKeytab</a></pre>
 </li>
 </ul>
 <a name="spnegoServerKeytab">
@@ -313,7 +313,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>spnegoServerKeytab</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.92">spnegoServerKeytab</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.87">spnegoServerKeytab</a></pre>
 </li>
 </ul>
 <a name="clientKeytab">
@@ -322,7 +322,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>clientKeytab</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.93">clientKeytab</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.88">clientKeytab</a></pre>
 </li>
 </ul>
 <a name="clientPrincipal">
@@ -331,7 +331,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>clientPrincipal</h4>
-<pre>private static&nbsp;<a href="https://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/TestThriftSpnegoHttpServer.html#line.95">clientPrincipal</a></pre>
+<pre>private static&nbsp;<a href="https://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/TestThriftSpnegoHttpServer.html#line.90">clientPrincipal</a></pre>
 </li>
 </ul>
 <a name="serverPrincipal">
@@ -340,7 +340,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>serverPrincipal</h4>
-<pre>private static&nbsp;<a href="https://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/TestThriftSpnegoHttpServer.html#line.96">serverPrincipal</a></pre>
+<pre>private static&nbsp;<a href="https://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/TestThriftSpnegoHttpServer.html#line.91">serverPrincipal</a></pre>
 </li>
 </ul>
 <a name="spnegoServerPrincipal">
@@ -349,7 +349,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockListLast">
 <li class="blockList">
 <h4>spnegoServerPrincipal</h4>
-<pre>private static&nbsp;<a href="https://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/TestThriftSpnegoHttpServer.html#line.97">spnegoServerPrincipal</a></pre>
+<pre>private static&nbsp;<a href="https://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/TestThriftSpnegoHttpServer.html#line.92">spnegoServerPrincipal</a></pre>
 </li>
 </ul>
 </li>
@@ -366,7 +366,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestThriftSpnegoHttpServer</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.82">TestThriftSpnegoHttpServer</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.77">TestThriftSpnegoHttpServer</a>()</pre>
 </li>
 </ul>
 </li>
@@ -383,7 +383,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>setupUser</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.99">setupUser</a>(org.apache.kerby.kerberos.kerb.server.SimpleKdcServer&nbsp;kdc,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.94">setupUser</a>(org.apache.kerby.kerberos.kerb.server.SimpleKdcServer&nbsp;kdc,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;keytab,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;principal)
                        throws org.apache.kerby.kerberos.kerb.KrbException</pre>
@@ -399,7 +399,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>buildMiniKdc</h4>
-<pre>private static&nbsp;org.apache.kerby.kerberos.kerb.server.SimpleKdcServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.105">buildMiniKdc</a>()
+<pre>private static&nbsp;org.apache.kerby.kerberos.kerb.server.SimpleKdcServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.100">buildMiniKdc</a>()
                                                                            throws <a href="https://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>
@@ -413,7 +413,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>addSecurityConfigurations</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.129">addSecurityConfigurations</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.124">addSecurityConfigurations</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 <a name="setUpBeforeClass--">
@@ -422,7 +422,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>setUpBeforeClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.147">setUpBeforeClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.142">setUpBeforeClass</a>()
                              throws <a href="https://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>
@@ -436,7 +436,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDownAfterClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.181">tearDownAfterClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.176">tearDownAfterClass</a>()
                                throws <a href="https://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>
@@ -450,9 +450,9 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>talkToThriftServer</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.194">talkToThriftServer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;url,
-                        int&nbsp;customHeaderSize)
-                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.189">talkToThriftServer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;url,
+                                  int&nbsp;customHeaderSize)
+                           throws <a href="https://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">Overrides:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#talkToThriftServer-java.lang.String-int-">talkToThriftServer</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftHttpServer</a></code></dd>
@@ -467,7 +467,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockListLast">
 <li class="blockList">
 <h4>createHttpClient</h4>
-<pre>private&nbsp;org.apache.http.impl.client.CloseableHttpClient&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.219">createHttpClient</a>()
+<pre>private&nbsp;org.apache.http.impl.client.CloseableHttpClient&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.214">createHttpClient</a>()
                                                                   throws <a href="https://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/849d84a8/testdevapidocs/org/apache/hadoop/hbase/thrift/class-use/TestThriftHttpServer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/thrift/class-use/TestThriftHttpServer.html b/testdevapidocs/org/apache/hadoop/hbase/thrift/class-use/TestThriftHttpServer.html
index e64430d..549f005 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/thrift/class-use/TestThriftHttpServer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift/class-use/TestThriftHttpServer.html
@@ -86,6 +86,10 @@
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift">org.apache.hadoop.hbase.thrift</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift2">org.apache.hadoop.hbase.thrift2</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
 </tbody>
 </table>
 </li>
@@ -112,6 +116,24 @@
 </tbody>
 </table>
 </li>
+<li class="blockList"><a name="org.apache.hadoop.hbase.thrift2">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftHttpServer</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing subclasses, and an explanation">
+<caption><span>Subclasses of <a href="../../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftHttpServer</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html" title="class in org.apache.hadoop.hbase.thrift2">TestThrift2HttpServer</a></span></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/thrift/class-use/TestThriftServerCmdLine.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/thrift/class-use/TestThriftServerCmdLine.html b/testdevapidocs/org/apache/hadoop/hbase/thrift/class-use/TestThriftServerCmdLine.html
index 836bdc8..07bffff 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/thrift/class-use/TestThriftServerCmdLine.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift/class-use/TestThriftServerCmdLine.html
@@ -72,7 +72,47 @@
 <div class="header">
 <h2 title="Uses of Class org.apache.hadoop.hbase.thrift.TestThriftServerCmdLine" class="title">Uses of Class<br>org.apache.hadoop.hbase.thrift.TestThriftServerCmdLine</h2>
 </div>
-<div class="classUseContainer">No usage of org.apache.hadoop.hbase.thrift.TestThriftServerCmdLine</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftServerCmdLine</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift2">org.apache.hadoop.hbase.thrift2</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.thrift2">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftServerCmdLine</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing subclasses, and an explanation">
+<caption><span>Subclasses of <a href="../../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftServerCmdLine</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2">TestThrift2ServerCmdLine</a></span></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->
 <div class="bottomNav"><a name="navbar.bottom">
 <!--   -->

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/thrift/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/thrift/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/thrift/package-summary.html
index c372485..357b400 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/thrift/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift/package-summary.html
@@ -117,7 +117,7 @@
 <tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftServer</a></td>
 <td class="colLast">
-<div class="block">Unit testing for ThriftServerRunner.HBaseHandler, a part of the
+<div class="block">Unit testing for ThriftServerRunner.HBaseServiceHandler, a part of the
  org.apache.hadoop.hbase.thrift package.</div>
 </td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/thrift/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
index e24225a..a2c5693 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
@@ -82,6 +82,15 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Object</span></a>
 <ul>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ErrorThrowingGetObserver.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ErrorThrowingGetObserver</span></a> (implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver)</li>
+<li type="circle">org.apache.hadoop.hbase.thrift.HBaseServiceHandler
+<ul>
+<li type="circle">org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler (implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface)
+<ul>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">TestThriftServer.MySlowHBaseHandler</span></a> (implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface)</li>
+</ul>
+</li>
+</ul>
+</li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/TestCallQueue.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">TestCallQueue</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/TestMetricsThriftServerSourceFactory.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">TestMetricsThriftServerSourceFactory</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/TestMetricsThriftServerSourceFactoryImpl.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">TestMetricsThriftServerSourceFactoryImpl</span></a></li>
@@ -92,11 +101,6 @@
 </li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServer.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">TestThriftServer</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">TestThriftServerCmdLine</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler (implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface)
-<ul>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">TestThriftServer.MySlowHBaseHandler</span></a> (implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface)</li>
-</ul>
-</li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/thrift/package-use.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/thrift/package-use.html b/testdevapidocs/org/apache/hadoop/hbase/thrift/package-use.html
index f9ca763..e1a5aa7 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/thrift/package-use.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift/package-use.html
@@ -126,6 +126,18 @@
 <tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/thrift/class-use/ErrorThrowingGetObserver.ErrorType.html#org.apache.hadoop.hbase.thrift2">ErrorThrowingGetObserver.ErrorType</a>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/thrift/class-use/TestThriftHttpServer.html#org.apache.hadoop.hbase.thrift2">TestThriftHttpServer</a>
+<div class="block">Start the HBase Thrift HTTP server on a random port through the command-line
+ interface and talk to it from client side.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/thrift/class-use/TestThriftServerCmdLine.html#org.apache.hadoop.hbase.thrift2">TestThriftServerCmdLine</a>
+<div class="block">Start the HBase Thrift server on a random port through the command-line
+ interface and talk to it from client side.</div>
+</td>
+</tr>
 </tbody>
 </table>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html b/testdevapidocs/org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html
new file mode 100644
index 0000000..85c4f15
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html
@@ -0,0 +1,370 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>TestThrift2HttpServer (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="TestThrift2HttpServer (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestThrift2HttpServer.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev&nbsp;Class</li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html" target="_top">Frames</a></li>
+<li><a href="TestThrift2HttpServer.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.thrift2</div>
+<h2 title="Class TestThrift2HttpServer" class="title">Class TestThrift2HttpServer</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html" title="class in org.apache.hadoop.hbase.thrift">org.apache.hadoop.hbase.thrift.TestThriftHttpServer</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.thrift2.TestThrift2HttpServer</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html#line.39">TestThrift2HttpServer</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftHttpServer</a></pre>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static <a href="https://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/TestThrift2HttpServer.html#TABLENAME">TABLENAME</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.thrift.TestThriftHttpServer">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftHttpServer</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#exception">exception</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#tableCreated">tableCreated</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#TEST_UTIL">TEST_UTIL</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<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>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html#TestThrift2HttpServer--">TestThrift2HttpServer</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.thrift2.ThriftServer</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html#createThriftServer--">createThriftServer</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html#talkToThriftServer-java.lang.String-int-">talkToThriftServer</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;url,
+                  int&nbsp;customHeaderSize)</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.thrift.TestThriftHttpServer">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftHttpServer</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#setUpBeforeClass--">setUpBeforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#tearDownAfterClass--">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#testExceptionThrownWhenMisConfigured--">testExceptionThrownWhenMisConfigured</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#testRunThriftServer--">testRunThriftServer</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#testRunThriftServerWithHeaderBufferLength--">testRunThriftServerWithHeaderBufferLength</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="TABLENAME">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TABLENAME</h4>
+<pre>private static final&nbsp;<a href="https://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/thrift2/TestThrift2HttpServer.html#line.40">TABLENAME</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift2.TestThrift2HttpServer.TABLENAME">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html#line.43">CLASS_RULE</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="TestThrift2HttpServer--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestThrift2HttpServer</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html#line.39">TestThrift2HttpServer</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="createThriftServer--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createThriftServer</h4>
+<pre>protected&nbsp;org.apache.hadoop.hbase.thrift2.ThriftServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html#line.49">createThriftServer</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#createThriftServer--">createThriftServer</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftHttpServer</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="talkToThriftServer-java.lang.String-int-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>talkToThriftServer</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html#line.54">talkToThriftServer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;url,
+                                  int&nbsp;customHeaderSize)
+                           throws <a href="https://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">Overrides:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#talkToThriftServer-java.lang.String-int-">talkToThriftServer</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftHttpServer</a></code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://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>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestThrift2HttpServer.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev&nbsp;Class</li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html" target="_top">Frames</a></li>
+<li><a href="TestThrift2HttpServer.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>


[17/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 8d94cde..ab92b9d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html
@@ -26,222 +26,778 @@
 <span class="sourceLineNo">018</span><a name="line.18"></a>
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.thrift;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.conf.Configuration;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.thrift.ThriftServerRunner.ImplType;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.util.Shell.ExitCodeException;<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.slf4j.Logger;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.slf4j.LoggerFactory;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLineParser;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.DefaultParser;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.HelpFormatter;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Options;<a name="line.35"></a>
-<span class="sourceLineNo">036</span><a name="line.36"></a>
-<span class="sourceLineNo">037</span>/**<a name="line.37"></a>
-<span class="sourceLineNo">038</span> * ThriftServer- this class starts up a Thrift server which implements the<a name="line.38"></a>
-<span class="sourceLineNo">039</span> * Hbase API specified in the Hbase.thrift IDL file. The server runs in an<a name="line.39"></a>
-<span class="sourceLineNo">040</span> * independent process.<a name="line.40"></a>
-<span class="sourceLineNo">041</span> */<a name="line.41"></a>
-<span class="sourceLineNo">042</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.42"></a>
-<span class="sourceLineNo">043</span>public class ThriftServer {<a name="line.43"></a>
-<span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>  private static final Logger LOG = LoggerFactory.getLogger(ThriftServer.class);<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>  private static final String MIN_WORKERS_OPTION = "minWorkers";<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  private static final String MAX_WORKERS_OPTION = "workers";<a name="line.48"></a>
-<span class="sourceLineNo">049</span>  private static final String MAX_QUEUE_SIZE_OPTION = "queue";<a name="line.49"></a>
-<span class="sourceLineNo">050</span>  private static final String KEEP_ALIVE_SEC_OPTION = "keepAliveSec";<a name="line.50"></a>
-<span class="sourceLineNo">051</span>  static final String BIND_OPTION = "bind";<a name="line.51"></a>
-<span class="sourceLineNo">052</span>  static final String COMPACT_OPTION = "compact";<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  static final String FRAMED_OPTION = "framed";<a name="line.53"></a>
-<span class="sourceLineNo">054</span>  static final String PORT_OPTION = "port";<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  static final String INFOPORT_OPTION = "infoport";<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>  private static final String DEFAULT_BIND_ADDR = "0.0.0.0";<a name="line.57"></a>
-<span class="sourceLineNo">058</span>  private static final int DEFAULT_LISTEN_PORT = 9090;<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>  private Configuration conf;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  ThriftServerRunner serverRunner;<a name="line.61"></a>
-<span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private InfoServer infoServer;<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private static final String READ_TIMEOUT_OPTION = "readTimeout";<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>  //<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  // Main program and support routines<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  //<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>  public ThriftServer(Configuration conf) {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    this.conf = HBaseConfiguration.create(conf);<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  }<a name="line.73"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.thrift.Constants.BACKLOG_CONF_DEAFULT;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.thrift.Constants.BACKLOG_CONF_KEY;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.thrift.Constants.BIND_CONF_KEY;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.apache.hadoop.hbase.thrift.Constants.BIND_OPTION;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.apache.hadoop.hbase.thrift.Constants.COMPACT_CONF_DEFAULT;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import static org.apache.hadoop.hbase.thrift.Constants.COMPACT_CONF_KEY;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import static org.apache.hadoop.hbase.thrift.Constants.COMPACT_OPTION;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import static org.apache.hadoop.hbase.thrift.Constants.DEFAULT_BIND_ADDR;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import static org.apache.hadoop.hbase.thrift.Constants.DEFAULT_HTTP_MAX_HEADER_SIZE;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import static org.apache.hadoop.hbase.thrift.Constants.DEFAULT_LISTEN_PORT;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import static org.apache.hadoop.hbase.thrift.Constants.FRAMED_CONF_DEFAULT;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import static org.apache.hadoop.hbase.thrift.Constants.FRAMED_CONF_KEY;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import static org.apache.hadoop.hbase.thrift.Constants.FRAMED_OPTION;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import static org.apache.hadoop.hbase.thrift.Constants.HTTP_MAX_THREADS_KEY;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import static org.apache.hadoop.hbase.thrift.Constants.HTTP_MAX_THREADS_KEY_DEFAULT;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import static org.apache.hadoop.hbase.thrift.Constants.HTTP_MIN_THREADS_KEY;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import static org.apache.hadoop.hbase.thrift.Constants.HTTP_MIN_THREADS_KEY_DEFAULT;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import static org.apache.hadoop.hbase.thrift.Constants.INFOPORT_OPTION;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import static org.apache.hadoop.hbase.thrift.Constants.KEEP_ALIVE_SEC_OPTION;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import static org.apache.hadoop.hbase.thrift.Constants.MAX_FRAME_SIZE_CONF_DEFAULT;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import static org.apache.hadoop.hbase.thrift.Constants.MAX_FRAME_SIZE_CONF_KEY;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import static org.apache.hadoop.hbase.thrift.Constants.MAX_QUEUE_SIZE_OPTION;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import static org.apache.hadoop.hbase.thrift.Constants.MAX_WORKERS_OPTION;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import static org.apache.hadoop.hbase.thrift.Constants.MIN_WORKERS_OPTION;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import static org.apache.hadoop.hbase.thrift.Constants.PORT_CONF_KEY;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import static org.apache.hadoop.hbase.thrift.Constants.PORT_OPTION;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import static org.apache.hadoop.hbase.thrift.Constants.READ_TIMEOUT_OPTION;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import static org.apache.hadoop.hbase.thrift.Constants.SELECTOR_NUM_OPTION;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_DNS_INTERFACE_KEY;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_DNS_NAMESERVER_KEY;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_FILTERS;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_HTTP_ALLOW_OPTIONS_METHOD;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_INFO_SERVER_BINDING_ADDRESS;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_INFO_SERVER_BINDING_ADDRESS_DEFAULT;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_INFO_SERVER_PORT;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_INFO_SERVER_PORT_DEFAULT;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_KERBEROS_PRINCIPAL_KEY;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_KEYTAB_FILE_KEY;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_QOP_KEY;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_SELECTOR_NUM;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_ENABLED_KEY;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_INCLUDE_PROTOCOLS_KEY;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_KEYSTORE_PASSWORD_KEY;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_KEYSTORE_STORE_KEY;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_SUPPORT_PROXYUSER_KEY;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import static org.apache.hadoop.hbase.thrift.Constants.USE_HTTP_CONF_KEY;<a name="line.73"></a>
 <span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  private static void printUsageAndExit(Options options, int exitCode)<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      throws ExitCodeException {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    HelpFormatter formatter = new HelpFormatter();<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    formatter.printHelp("Thrift", null, options,<a name="line.78"></a>
-<span class="sourceLineNo">079</span>        "To start the Thrift server run 'hbase-daemon.sh start thrift' or " +<a name="line.79"></a>
-<span class="sourceLineNo">080</span>        "'hbase thrift'\n" +<a name="line.80"></a>
-<span class="sourceLineNo">081</span>        "To shutdown the thrift server run 'hbase-daemon.sh stop " +<a name="line.81"></a>
-<span class="sourceLineNo">082</span>        "thrift' or send a kill signal to the thrift server pid",<a name="line.82"></a>
-<span class="sourceLineNo">083</span>        true);<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    throw new ExitCodeException(exitCode, "");<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>  /**<a name="line.87"></a>
-<span class="sourceLineNo">088</span>   * Start up or shuts down the Thrift server, depending on the arguments.<a name="line.88"></a>
-<span class="sourceLineNo">089</span>   * @param args the arguments to pass in when starting the Thrift server<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   */<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  void doMain(final String[] args) throws Exception {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    processOptions(args);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    serverRunner = new ThriftServerRunner(conf);<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>    // Put up info server.<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    int port = conf.getInt("hbase.thrift.info.port", 9095);<a name="line.96"></a>
-<span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span>    if (port &gt;= 0) {<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      conf.setLong("startcode", System.currentTimeMillis());<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      String a = conf.get("hbase.thrift.info.bindAddress", "0.0.0.0");<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      infoServer = new InfoServer("thrift", a, port, false, conf);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      infoServer.setAttribute("hbase.conf", conf);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      infoServer.start();<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>    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_OPTION, 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">075</span>import java.io.IOException;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import java.net.InetAddress;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import java.net.InetSocketAddress;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import java.net.UnknownHostException;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import java.util.List;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import java.util.Map;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import java.util.concurrent.BlockingQueue;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import java.util.concurrent.ExecutorService;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import java.util.concurrent.TimeUnit;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import javax.security.auth.callback.Callback;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import javax.security.sasl.AuthorizeCallback;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import javax.security.sasl.SaslServer;<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.commons.lang3.ArrayUtils;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.conf.Configuration;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.conf.Configured;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.filter.ParseFilter;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.http.HttpServerUtil;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.security.SaslUtil;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.security.SecurityUtil;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.thrift.generated.Hbase;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.util.DNS;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.util.JvmPauseMonitor;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.util.Strings;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.security.SaslRpcServer;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.security.authorize.ProxyUsers;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.util.Shell.ExitCodeException;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.util.Tool;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.util.ToolRunner;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.thrift.TProcessor;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.thrift.protocol.TBinaryProtocol;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.thrift.protocol.TCompactProtocol;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.thrift.protocol.TProtocolFactory;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.thrift.server.THsHaServer;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.thrift.server.TNonblockingServer;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.thrift.server.TServer;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.thrift.server.TServlet;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.thrift.server.TThreadedSelectorServer;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.thrift.transport.TFramedTransport;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.thrift.transport.TNonblockingServerSocket;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.thrift.transport.TNonblockingServerTransport;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.thrift.transport.TSaslServerTransport;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.thrift.transport.TServerSocket;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.thrift.transport.TServerTransport;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.thrift.transport.TTransportFactory;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.eclipse.jetty.http.HttpVersion;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.eclipse.jetty.server.HttpConfiguration;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.eclipse.jetty.server.HttpConnectionFactory;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.eclipse.jetty.server.SecureRequestCustomizer;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.eclipse.jetty.server.Server;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.eclipse.jetty.server.SslConnectionFactory;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.eclipse.jetty.servlet.ServletContextHandler;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.eclipse.jetty.util.ssl.SslContextFactory;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.eclipse.jetty.util.thread.QueuedThreadPool;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.slf4j.Logger;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.slf4j.LoggerFactory;<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 DefaultParser();<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>    if (cmd.hasOption("help")) {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      printUsageAndExit(options, 1);<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    }<a name="line.151"></a>
+<span class="sourceLineNo">144</span>import org.apache.hbase.thirdparty.com.google.common.base.Joiner;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hbase.thirdparty.com.google.common.base.Splitter;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hbase.thirdparty.com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLineParser;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.DefaultParser;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.HelpFormatter;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Options;<a name="line.151"></a>
 <span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>    // Get port to bind to<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    try {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      if (cmd.hasOption(PORT_OPTION)) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        int listenPort = Integer.parseInt(cmd.getOptionValue(PORT_OPTION));<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        conf.setInt(ThriftServerRunner.PORT_CONF_KEY, listenPort);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      }<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    } catch (NumberFormatException e) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      LOG.error("Could not parse the value provided for the port option", e);<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">153</span>/**<a name="line.153"></a>
+<span class="sourceLineNo">154</span> * ThriftServer- this class starts up a Thrift server which implements the<a name="line.154"></a>
+<span class="sourceLineNo">155</span> * Hbase API specified in the Hbase.thrift IDL file. The server runs in an<a name="line.155"></a>
+<span class="sourceLineNo">156</span> * independent process.<a name="line.156"></a>
+<span class="sourceLineNo">157</span> */<a name="line.157"></a>
+<span class="sourceLineNo">158</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.158"></a>
+<span class="sourceLineNo">159</span>public class ThriftServer  extends Configured implements Tool {<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>  private static final Logger LOG = LoggerFactory.getLogger(ThriftServer.class);<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>    // check for user-defined info server port setting, if so override the conf<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    try {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      if (cmd.hasOption(INFOPORT_OPTION)) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        String val = cmd.getOptionValue(INFOPORT_OPTION);<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        conf.setInt("hbase.thrift.info.port", Integer.parseInt(val));<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        LOG.debug("Web UI port set to " + val);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      }<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    } catch (NumberFormatException e) {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      LOG.error("Could not parse the value provided for the " + INFOPORT_OPTION +<a name="line.172"></a>
-<span class="sourceLineNo">173</span>        " option", e);<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      printUsageAndExit(options, -1);<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>    // Make optional changes to the configuration based on command-line options<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    optionToConf(cmd, MIN_WORKERS_OPTION,<a name="line.178"></a>
-<span class="sourceLineNo">179</span>        conf, TBoundedThreadPoolServer.MIN_WORKER_THREADS_CONF_KEY);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    optionToConf(cmd, MAX_WORKERS_OPTION,<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        conf, TBoundedThreadPoolServer.MAX_WORKER_THREADS_CONF_KEY);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    optionToConf(cmd, MAX_QUEUE_SIZE_OPTION,<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        conf, TBoundedThreadPoolServer.MAX_QUEUED_REQUESTS_CONF_KEY);<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    optionToConf(cmd, KEEP_ALIVE_SEC_OPTION,<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        conf, TBoundedThreadPoolServer.THREAD_KEEP_ALIVE_TIME_SEC_CONF_KEY);<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    optionToConf(cmd, READ_TIMEOUT_OPTION, conf,<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        ThriftServerRunner.THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY);<a name="line.187"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  protected Configuration conf;<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span>  protected InfoServer infoServer;<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>  protected TProcessor processor;<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>  protected ThriftMetrics metrics;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  protected HBaseServiceHandler hbaseServiceHandler;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  protected UserGroupInformation serviceUGI;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>  protected boolean httpEnabled;<a name="line.174"></a>
+<span class="sourceLineNo">175</span><a name="line.175"></a>
+<span class="sourceLineNo">176</span>  protected SaslUtil.QualityOfProtection qop;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  protected String host;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  protected int listenPort;<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>  protected boolean securityEnabled;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  protected boolean doAsEnabled;<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>  protected JvmPauseMonitor pauseMonitor;<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  protected volatile TServer tserver;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  protected volatile Server httpServer;<a name="line.187"></a>
 <span class="sourceLineNo">188</span><a name="line.188"></a>
-<span class="sourceLineNo">189</span>    // Set general thrift server options<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    boolean compact = cmd.hasOption(COMPACT_OPTION) ||<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      conf.getBoolean(ThriftServerRunner.COMPACT_CONF_KEY, false);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    conf.setBoolean(ThriftServerRunner.COMPACT_CONF_KEY, compact);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    boolean framed = cmd.hasOption(FRAMED_OPTION) ||<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      conf.getBoolean(ThriftServerRunner.FRAMED_CONF_KEY, false);<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    conf.setBoolean(ThriftServerRunner.FRAMED_CONF_KEY, framed);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    if (cmd.hasOption(BIND_OPTION)) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      conf.set(ThriftServerRunner.BIND_CONF_KEY, cmd.getOptionValue(BIND_OPTION));<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>    ImplType.setServerImpl(cmd, conf);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>  }<a name="line.201"></a>
-<span class="sourceLineNo">202</span><a name="line.202"></a>
-<span class="sourceLineNo">203</span>  public void stop() {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    if (this.infoServer != null) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      LOG.info("Stopping infoServer");<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      try {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>        this.infoServer.stop();<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      } catch (Exception ex) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>        LOG.error("Failed to stop infoServer", ex);<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>    serverRunner.shutdown();<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>  private static void optionToConf(CommandLine cmd, String option,<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      Configuration conf, String destConfKey) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    if (cmd.hasOption(option)) {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      String value = cmd.getOptionValue(option);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      LOG.info("Set configuration key:" + destConfKey + " value:" + value);<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      conf.set(destConfKey, value);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    }<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  }<a name="line.222"></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>  // Main program and support routines<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>  public ThriftServer(Configuration conf) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    this.conf = HBaseConfiguration.create(conf);<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>  protected void setupParamters() throws IOException {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    // login the server principal (if using secure Hadoop)<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    UserProvider userProvider = UserProvider.instantiate(conf);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    securityEnabled = userProvider.isHadoopSecurityEnabled()<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        &amp;&amp; userProvider.isHBaseSecurityEnabled();<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    if (securityEnabled) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      host = Strings.domainNamePointerToHostName(DNS.getDefaultHost(<a name="line.204"></a>
+<span class="sourceLineNo">205</span>          conf.get(THRIFT_DNS_INTERFACE_KEY, "default"),<a name="line.205"></a>
+<span class="sourceLineNo">206</span>          conf.get(THRIFT_DNS_NAMESERVER_KEY, "default")));<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      userProvider.login(THRIFT_KEYTAB_FILE_KEY, THRIFT_KERBEROS_PRINCIPAL_KEY, host);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    }<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    this.serviceUGI = userProvider.getCurrent().getUGI();<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>    this.listenPort = conf.getInt(PORT_CONF_KEY, DEFAULT_LISTEN_PORT);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    this.metrics = new ThriftMetrics(conf, ThriftMetrics.ThriftServerType.ONE);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    this.pauseMonitor = new JvmPauseMonitor(conf, this.metrics.getSource());<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    this.hbaseServiceHandler = createHandler(conf, userProvider);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    this.hbaseServiceHandler.initMetrics(metrics);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    this.processor = createProcessor();<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
+<span class="sourceLineNo">218</span>    httpEnabled = conf.getBoolean(USE_HTTP_CONF_KEY, false);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    doAsEnabled = conf.getBoolean(THRIFT_SUPPORT_PROXYUSER_KEY, false);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    if (doAsEnabled &amp;&amp; !httpEnabled) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      LOG.warn("Fail to enable the doAs feature. " + USE_HTTP_CONF_KEY + " is not configured");<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>  public static void main(String [] args) throws Exception {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    LOG.info("***** STARTING service '" + ThriftServer.class.getSimpleName() + "' *****");<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    VersionInfo.logVersion();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    int exitCode = 0;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    try {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      new ThriftServer(HBaseConfiguration.create()).doMain(args);<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    } catch (ExitCodeException ex) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      exitCode = ex.getExitCode();<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    LOG.info("***** STOPPING service '" + ThriftServer.class.getSimpleName() + "' *****");<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    System.exit(exitCode);<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">224</span>    String strQop = conf.get(THRIFT_QOP_KEY);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    if (strQop != null) {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      this.qop = SaslUtil.getQop(strQop);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    if (qop != null) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      if (qop != SaslUtil.QualityOfProtection.AUTHENTICATION &amp;&amp;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>          qop != SaslUtil.QualityOfProtection.INTEGRITY &amp;&amp;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>          qop != SaslUtil.QualityOfProtection.PRIVACY) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>        throw new IOException(String.format("Invalid %s: It must be one of %s, %s, or %s.",<a name="line.232"></a>
+<span class="sourceLineNo">233</span>            THRIFT_QOP_KEY,<a name="line.233"></a>
+<span class="sourceLineNo">234</span>            SaslUtil.QualityOfProtection.AUTHENTICATION.name(),<a name="line.234"></a>
+<span class="sourceLineNo">235</span>            SaslUtil.QualityOfProtection.INTEGRITY.name(),<a name="line.235"></a>
+<span class="sourceLineNo">236</span>            SaslUtil.QualityOfProtection.PRIVACY.name()));<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      }<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      checkHttpSecurity(qop, conf);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      if (!securityEnabled) {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        throw new IOException("Thrift server must run in secure mode to support authentication");<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      }<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    registerFilters(conf);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    pauseMonitor.start();<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>  protected void startInfoServer() throws IOException {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    // Put up info server.<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    int port = conf.getInt(THRIFT_INFO_SERVER_PORT , THRIFT_INFO_SERVER_PORT_DEFAULT);<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>    if (port &gt;= 0) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      conf.setLong("startcode", System.currentTimeMillis());<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      String a = conf<a name="line.253"></a>
+<span class="sourceLineNo">254</span>          .get(THRIFT_INFO_SERVER_BINDING_ADDRESS, THRIFT_INFO_SERVER_BINDING_ADDRESS_DEFAULT);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      infoServer = new InfoServer("thrift", a, port, false, conf);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      infoServer.setAttribute("hbase.conf", conf);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      infoServer.start();<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>  protected void checkHttpSecurity(SaslUtil.QualityOfProtection qop, Configuration conf) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    if (qop == SaslUtil.QualityOfProtection.PRIVACY &amp;&amp;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        conf.getBoolean(USE_HTTP_CONF_KEY, false) &amp;&amp;<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        !conf.getBoolean(THRIFT_SSL_ENABLED_KEY, false)) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      throw new IllegalArgumentException("Thrift HTTP Server's QoP is privacy, but " +<a name="line.265"></a>
+<span class="sourceLineNo">266</span>          THRIFT_SSL_ENABLED_KEY + " is false");<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><a name="line.269"></a>
+<span class="sourceLineNo">270</span>  protected HBaseServiceHandler createHandler(Configuration conf, UserProvider userProvider)<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      throws IOException {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    return new ThriftHBaseServiceHandler(conf, userProvider);<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>  protected TProcessor createProcessor() {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    return new Hbase.Processor&lt;&gt;(<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        HbaseHandlerMetricsProxy.newInstance((Hbase.Iface) hbaseServiceHandler, metrics, conf));<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>  protected void printUsageAndExit(Options options, int exitCode)<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      throws ExitCodeException {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    HelpFormatter formatter = new HelpFormatter();<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    formatter.printHelp("Thrift", null, options,<a name="line.283"></a>
+<span class="sourceLineNo">284</span>        "To start the Thrift server run 'hbase-daemon.sh start thrift' or " +<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        "'hbase thrift'\n" +<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        "To shutdown the thrift server run 'hbase-daemon.sh stop " +<a name="line.286"></a>
+<span class="sourceLineNo">287</span>        "thrift' or send a kill signal to the thrift server pid",<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        true);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    throw new ExitCodeException(exitCode, "");<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>   * Setup a HTTP Server using Jetty to serve calls from THttpClient<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   *<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   * @throws IOException IOException<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  protected void setupHTTPServer() throws IOException {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    TServlet thriftHttpServlet = new ThriftHttpServlet(processor, protocolFactory, serviceUGI,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        conf, hbaseServiceHandler, securityEnabled, doAsEnabled);<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>    // Set the default max thread number to 100 to limit<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    // the number of concurrent requests so that Thrfit HTTP server doesn't OOM easily.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    // Jetty set the default max thread number to 250, if we don't set it.<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    //<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    // Our default min thread number 2 is the same as that used by Jetty.<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    int minThreads = conf.getInt(HTTP_MIN_THREADS_KEY,<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        conf.getInt(TBoundedThreadPoolServer.MIN_WORKER_THREADS_CONF_KEY,<a name="line.308"></a>
+<span class="sourceLineNo">309</span>            HTTP_MIN_THREADS_KEY_DEFAULT));<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    int maxThreads = conf.getInt(HTTP_MAX_THREADS_KEY,<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        conf.getInt(TBoundedThreadPoolServer.MAX_WORKER_THREADS_CONF_KEY,<a name="line.311"></a>
+<span class="sourceLineNo">312</span>            HTTP_MAX_THREADS_KEY_DEFAULT));<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    QueuedThreadPool threadPool = new QueuedThreadPool(maxThreads);<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    threadPool.setMinThreads(minThreads);<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    httpServer = new Server(threadPool);<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span>    // Context handler<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    ServletContextHandler ctxHandler = new ServletContextHandler(httpServer, "/",<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        ServletContextHandler.SESSIONS);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    ctxHandler.addServlet(new ServletHolder(thriftHttpServlet), "/*");<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    HttpServerUtil.constrainHttpMethods(ctxHandler,<a name="line.321"></a>
+<span class="sourceLineNo">322</span>        conf.getBoolean(THRIFT_HTTP_ALLOW_OPTIONS_METHOD,<a name="line.322"></a>
+<span class="sourceLineNo">323</span>            THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT));<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // set up Jetty and run the embedded server<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    HttpConfiguration httpConfig = new HttpConfiguration();<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    httpConfig.setSecureScheme("https");<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    httpConfig.setSecurePort(listenPort);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    httpConfig.setHeaderCacheSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    httpConfig.setRequestHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    httpConfig.setResponseHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    httpConfig.setSendServerVersion(false);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    httpConfig.setSendDateHeader(false);<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>    ServerConnector serverConnector;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    if(conf.getBoolean(THRIFT_SSL_ENABLED_KEY, false)) {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      HttpConfiguration httpsConfig = new HttpConfiguration(httpConfig);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      httpsConfig.addCustomizer(new SecureRequestCustomizer());<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>      SslContextFactory sslCtxFactory = new SslContextFactory();<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      String keystore = conf.get(THRIFT_SSL_KEYSTORE_STORE_KEY);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      String password = HBaseConfiguration.getPassword(conf,<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          THRIFT_SSL_KEYSTORE_PASSWORD_KEY, null);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      String keyPassword = HBaseConfiguration.getPassword(conf,<a name="line.344"></a>
+<span class="sourceLineNo">345</span>          THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY, password);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      sslCtxFactory.setKeyStorePath(keystore);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      sslCtxFactory.setKeyStorePassword(password);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      sslCtxFactory.setKeyManagerPassword(keyPassword);<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>      String[] excludeCiphers = conf.getStrings(<a name="line.350"></a>
+<span class="sourceLineNo">351</span>          THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      if (excludeCiphers.length != 0) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        sslCtxFactory.setExcludeCipherSuites(excludeCiphers);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      }<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      String[] includeCiphers = conf.getStrings(<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      if (includeCiphers.length != 0) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        sslCtxFactory.setIncludeCipherSuites(includeCiphers);<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>      // Disable SSLv3 by default due to "Poodle" Vulnerability - CVE-2014-3566<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      String[] excludeProtocols = conf.getStrings(<a name="line.362"></a>
+<span class="sourceLineNo">363</span>          THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY, "SSLv3");<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      if (excludeProtocols.length != 0) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        sslCtxFactory.setExcludeProtocols(excludeProtocols);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      }<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      String[] includeProtocols = conf.getStrings(<a name="line.367"></a>
+<span class="sourceLineNo">368</span>          THRIFT_SSL_INCLUDE_PROTOCOLS_KEY, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      if (includeProtocols.length != 0) {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        sslCtxFactory.setIncludeProtocols(includeProtocols);<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>      serverConnector = new ServerConnector(httpServer,<a name="line.373"></a>
+<span class="sourceLineNo">374</span>          new SslConnectionFactory(sslCtxFactory, HttpVersion.HTTP_1_1.toString()),<a name="line.374"></a>
+<span class="sourceLineNo">375</span>          new HttpConnectionFactory(httpsConfig));<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    } else {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      serverConnector = new ServerConnector(httpServer, new HttpConnectionFactory(httpConfig));<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    }<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    serverConnector.setPort(listenPort);<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    serverConnector.setHost(getBindAddress(conf).getHostAddress());<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    httpServer.addConnector(serverConnector);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    httpServer.setStopAtShutdown(true);<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>    if (doAsEnabled) {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      ProxyUsers.refreshSuperUserGroupsConfiguration(conf);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    }<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    LOG.info("Starting Thrift HTTP Server on {}", Integer.toString(listenPort));<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>  /**<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * Setting up the thrift TServer<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  protected void setupServer() throws Exception {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    // Construct correct ProtocolFactory<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    TProtocolFactory protocolFactory = getProtocolFactory();<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>    ImplType implType = ImplType.getServerImpl(conf);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    TProcessor processorToUse = processor;<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>    // Construct correct TransportFactory<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    TTransportFactory transportFactory;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    if (conf.getBoolean(FRAMED_CONF_KEY, FRAMED_CONF_DEFAULT) || implType.isAlwaysFramed) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      if (qop != null) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        throw new RuntimeException("Thrift server authentication"<a name="line.404"></a>
+<span class="sourceLineNo">405</span>            + " doesn't work with framed transport yet");<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      }<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      transportFactory = new TFramedTransport.Factory(<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          conf.getInt(MAX_FRAME_SIZE_CONF_KEY, MAX_FRAME_SIZE_CONF_DEFAULT) * 1024 * 1024);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      LOG.debug("Using framed transport");<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    } else if (qop == null) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      transportFactory = new TTransportFactory();<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    } else {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      // Extract the name from the principal<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      String thriftKerberosPrincipal = conf.get(THRIFT_KERBEROS_PRINCIPAL_KEY);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      if (thriftKerberosPrincipal == null) {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        throw new IllegalArgumentException(THRIFT_KERBEROS_PRINCIPAL_KEY + " cannot be null");<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      String name = SecurityUtil.getUserFromPrincipal(thriftKerberosPrincipal);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      Map&lt;String, String&gt; saslProperties = SaslUtil.initSaslProperties(qop.name());<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      TSaslServerTransport.Factory saslFactory = new TSaslServerTransport.Factory();<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      saslFactory.addServerDefinition("GSSAPI", name, host, saslProperties,<a name="line.421"></a>
+<span class="sourceLineNo">422</span>          new SaslRpcServer.SaslGssCallbackHandler() {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>            @Override<a name="line.423"></a>
+<span class="sourceLineNo">424</span>            public void handle(Callback[] callbacks)<a name="line.424"></a>
+<span class="sourceLineNo">425</span>                throws UnsupportedCallbackException {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>              AuthorizeCallback ac = null;<a name="line.426"></a>
+<span class="sourceLineNo">427</span>              for (Callback callback : callbacks) {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>                if (callback instanceof AuthorizeCallback) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>                  ac = (AuthorizeCallback) callback;<a name="line.429"></a>
+<span class="sourceLineNo">430</span>                } else {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>                  throw new UnsupportedCallbackException(callback,<a name="line.431"></a>
+<span class="sourceLineNo">432</span>                      "Unrecognized SASL GSSAPI Callback");<a name="line.432"></a>
+<span class="sourceLineNo">433</span>                }<a name="line.433"></a>
+<span class="sourceLineNo">434</span>              }<a name="line.434"></a>
+<span class="sourceLineNo">435</span>              if (ac != null) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>                String authid = ac.getAuthenticationID();<a name="line.436"></a>
+<span class="sourceLineNo">437</span>                String authzid = ac.getAuthorizationID();<a name="line.437"></a>
+<span class="sourceLineNo">438</span>                if (!authid.equals(authzid)) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>                  ac.setAuthorized(false);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>                } else {<a name="line.440"></a>
+<span class="sourceLineNo">441</span>                  ac.setAuthorized(true);<a name="line.441"></a>
+<span class="sourceLineNo">442</span>                  String userName = SecurityUtil.getUserFromPrincipal(authzid);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>                  LOG.info("Effective user: {}", userName);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>                  ac.setAuthorizedID(userName);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>                }<a name="line.445"></a>
+<span class="sourceLineNo">446</span>              }<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>      transportFactory = saslFactory;<a name="line.449"></a>
+<span class="sourceLineNo">450</span><a name="line.450"></a>
+<span class="sourceLineNo">451</span>      // Create a processor wrapper, to get the caller<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      processorToUse = (inProt, outProt) -&gt; {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        TSaslServerTransport saslServerTransport =<a name="line.453"></a>
+<span class="sourceLineNo">454</span>            (TSaslServerTransport)inProt.getTransport();<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        SaslServer saslServer = saslServerTransport.getSaslServer();<a name="line.455"></a>
+<span class="sourceLineNo">456</span>        String principal = saslServer.getAuthorizationID();<a name="line.456"></a>
+<span class="sourceLineNo">457</span>        hbaseServiceHandler.setEffectiveUser(principal);<a name="line.457"></a>
+<span class="sourceLineNo">458</span>        return processor.process(inProt, outProt);<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      };<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 (conf.get(BIND_CONF_KEY) != null &amp;&amp; !implType.canSpecifyBindIP) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      LOG.error("Server types {} don't support IP address binding at the moment. See " +<a name="line.463"></a>
+<span class="sourceLineNo">464</span>              "https://issues.apache.org/jira/browse/HBASE-2155 for details.",<a name="line.464"></a>
+<span class="sourceLineNo">465</span>          Joiner.on(", ").join(ImplType.serversThatCannotSpecifyBindIP()));<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      throw new RuntimeException("-" + BIND_CONF_KEY + " not supported with " + implType);<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
+<span class="sourceLineNo">468</span><a name="line.468"></a>
+<span class="sourceLineNo">469</span>    InetSocketAddress inetSocketAddress = new InetSocketAddress(getBindAddress(conf), listenPort);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    if (implType == ImplType.HS_HA || implType == ImplType.NONBLOCKING ||<a name="line.470"></a>
+<span class="sourceLineNo">471</span>        implType == ImplType.THREADED_SELECTOR) {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      TNonblockingServerTransport serverTransport = new TNonblockingServerSocket(inetSocketAddress);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      if (implType == ImplType.NONBLOCKING) {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>        tserver = getTNonBlockingServer(serverTransport, protocolFactory, processorToUse,<a name="line.474"></a>
+<span class="sourceLineNo">475</span>            transportFactory, inetSocketAddress);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      } else if (implType == ImplType.HS_HA) {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>        tserver = getTHsHaServer(serverTransport, protocolFactory, processorToUse, transportFactory,<a name="line.477"></a>
+<span class="sourceLineNo">478</span>            inetSocketAddress);<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      } else { // THREADED_SELECTOR<a name="line.479"></a>
+<span class="sourceLineNo">480</span>        tserver = getTThreadedSelectorServer(serverTransport, protocolFactory, processorToUse,<a name="line.480"></a>
+<span class="sourceLineNo">481</span>            transportFactory, inetSocketAddress);<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      }<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      LOG.info("starting HBase {} server on {}", implType.simpleClassName(),<a name="line.483"></a>
+<span class="sourceLineNo">484</span>          Integer.toString(listenPort));<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    } else if (implType == ImplType.THREAD_POOL) {<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      this.tserver = getTThreadPoolServer(protocolFactory, processorToUse, transportFactory,<a name="line.486"></a>
+<span class="sourceLineNo">487</span>          inetSocketAddress);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    } else {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      throw new AssertionError("Unsupported Thrift server implementation: " +<a name="line.489"></a>
+<span class="sourceLineNo">490</span>          implType.simpleClassName());<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>    // A sanity check that we instantiated the right type of server.<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    if (tserver.getClass() != implType.serverClass) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      throw new AssertionError("Expected to create Thrift server class " +<a name="line.495"></a>
+<span class="sourceLineNo">496</span>          implType.serverClass.getName() + " but got " +<a name="line.496"></a>
+<span class="sourceLineNo">497</span>          tserver.getClass().getName());<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    }<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>  private TServer getTNonBlockingServer(TNonblockingServerTransport serverTransport,<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      TProtocolFactory protocolFactory, TProcessor processor, TTransportFactory transportFactory,<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      InetSocketAddress inetSocketAddress) {<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    LOG.info("starting HBase Nonblocking Thrift server on " + inetSocketAddress.toString());<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    TNonblockingServer.Args serverArgs = new TNonblockingServer.Args(serverTransport);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    serverArgs.processor(processor);<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    serverArgs.transportFactory(transportFactory);<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    serverArgs.protocolFactory(protocolFactory);<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    return new TNonblockingServer(serverArgs);<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>  private TServer getTHsHaServer(TNonblockingServerTransport serverTransport,<a name="line.512"></a>
+<span class="sourceLineNo">513</span>      TProtocolFactory protocolFactory, TProcessor processor, TTransportFactory transportFactory,<a name="line.513"></a>
+<span class="sourceLineNo">514</span>      InetSocketAddress inetSocketAddress) {<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    LOG.info("starting HBase HsHA Thrift server on " + inetSocketAddress.toString());<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    THsHaServer.Args serverArgs = new THsHaServer.Args(serverTransport);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    int queueSize = conf.getInt(TBoundedThreadPoolServer.MAX_QUEUED_REQUESTS_CONF_KEY,<a name="line.517"></a>
+<span class="sourceLineNo">518</span>        TBoundedThreadPoolServer.DEFAULT_MAX_QUEUED_REQUESTS);<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(queueSize), metrics);<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    int workerThread = conf.getInt(TBoundedThreadPoolServer.MAX_WORKER_THREADS_CONF_KEY,<a name="line.520"></a>
+<span class="sourceLineNo">521</span>        serverArgs.getMaxWorkerThreads());<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    ExecutorService executorService = createExecutor(<a name="line.522"></a>
+<span class="sourceLineNo">523</span>        callQueue, workerThread, workerThread);<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    serverArgs.executorService(executorService).processor(processor)<a name="line.524"></a>
+<span class="sourceLineNo">525</span>        .transportFactory(transportFactory).protocolFactory(protocolFactory);<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    return new THsHaServer(serverArgs);<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>  private TServer getTThreadedSelectorServer(TNonblockingServerTransport serverTransport,<a name="line.529"></a>
+<span class="sourceLineNo">530</span>      TProtocolFactory protocolFactory, TProcessor processor, TTransportFactory transportFactory,<a name="line.530"></a>
+<span class="sourceLineNo">531</span>      InetSocketAddress inetSocketAddress) {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>    LOG.info("starting HBase ThreadedSelector Thrift server on " + inetSocketAddress.toString());<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    TThreadedSelectorServer.Args serverArgs =<a name="line.533"></a>
+<span class="sourceLineNo">534</span>        new HThreadedSelectorServerArgs(serverTransport, conf);<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    int queueSize = conf.getInt(TBoundedThreadPoolServer.MAX_QUEUED_REQUESTS_CONF_KEY,<a name="line.535"></a>
+<span class="sourceLineNo">536</span>        TBoundedThreadPoolServer.DEFAULT_MAX_QUEUED_REQUESTS);<a name="line.536"></a>
+<span class="sourceLineNo">537</span>    CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(queueSize), metrics);<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    int workerThreads = conf.getInt(TBoundedThreadPoolServer.MAX_WORKER_THREADS_CONF_KEY,<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        serverArgs.getWorkerThreads());<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    int selectorThreads = conf.getInt(THRIFT_SELECTOR_NUM, serverArgs.getSelectorThreads());<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    serverArgs.selectorThreads(selectorThreads);<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    ExecutorService executorService = createExecutor(<a name="line.542"></a>
+<span class="sourceLineNo">543</span>        callQueue, workerThreads, workerThreads);<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    serverArgs.executorService(executorService).processor(processor)<a name="line.544"></a>
+<span class="sourceLineNo">545</span>        .transportFactory(transportFactory).protocolFactory(protocolFactory);<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    return new TThreadedSelectorServer(serverArgs);<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>  private TServer getTThreadPoolServer(TProtocolFactory protocolFactory, TProcessor processor,<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      TTransportFactory transportFactory, InetSocketAddress inetSocketAddress) throws Exception {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    LOG.info("starting HBase ThreadPool Thrift server on " + inetSocketAddress.toString());<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    // Thrift's implementation uses '0' as a placeholder for 'use the default.'<a name="line.552"></a>
+<span class="sourceLineNo">553</span>    int backlog = conf.getInt(BACKLOG_CONF_KEY, BACKLOG_CONF_DEAFULT);<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    int readTimeout = conf.getInt(THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY,<a name="line.554"></a>
+<span class="sourceLineNo">555</span>        THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT);<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    TServerTransport serverTransport = new TServerSocket(<a name="line.556"></a>
+<span class="sourceLineNo">557</span>        new TServerSocket.ServerSocketTransportArgs().<a name="line.557"></a>
+<span class="sourceLineNo">558</span>            bindAddr(inetSocketAddress).backlog(backlog).<a name="line.558"></a>
+<span class="sourceLineNo">559</span>            clientTimeout(readTimeout));<a name="line.559"></a>
+<span class="sourceLineNo">560</span><a name="line.560"></a>
+<span class="sourceLineNo">561</span>    TBoundedThreadPoolServer.Args serverArgs =<a name="line.561"></a>
+<span class="sourceLineNo">562</span>        new TBoundedThreadPoolServer.Args(serverTransport, conf);<a name="line.562"></a>
+<span class="sourceLineNo">563</span>    serverArgs.processor(processor).transportFactory(transportFactory)<a name="line.563"></a>
+<span class="sourceLineNo">564</span>        .protocolFactory(protocolFactory);<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    return new TBoundedThreadPoolServer(serverArgs, metrics);<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>  private TProtocolFactory getProtocolFactory() {<a name="line.568"></a>
+<span class="sourceLineNo">569</span>    TProtocolFactory protocolFactory;<a name="line.569"></a>
+<span class="sourceLineNo">570</span><a name="line.570"></a>
+<span class="sourceLineNo">571</span>    if (conf.getBoolean(COMPACT_CONF_KEY, COMPACT_CONF_DEFAULT)) {<a name="line.571"></a>
+<span class="sourceLineNo">572</span>      LOG.debug("Using compact protocol");<a name="line.572"></a>
+<span class="sourceLineNo">573</span>      protocolFactory = new TCompactProtocol.Factory();<a name="line.573"></a>
+<span class="sourceLineNo">574</span>    } else {<a name="line.574"></a>
+<span class="sourceLineNo">575</span>      LOG.debug("Using binary protocol");<a name="line.575"></a>
+<span class="sourceLineNo">576</span>      protocolFactory = new TBinaryProtocol.Factory();<a name="line.576"></a>
+<span class="sourceLineNo">577</span>    }<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>    return protocolFactory;<a name="line.579"></a>
+<span class="sourceLineNo">580</span>  }<a name="line.580"></a>
+<span class="sourceLineNo">581</span><a name="line.581"></a>
+<span class="sourceLineNo">582</span>  ExecutorService createExecutor(BlockingQueue&lt;Runnable&gt; callQueue,<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      int minWorkers, int maxWorkers) {<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    ThreadFactoryBuilder tfb = new ThreadFactoryBuilder();<a name="line.584"></a>
+<span class="sourceLineNo">585</span>    tfb.setDaemon(true);<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    tfb.setNameFormat("thrift-worker-%d");<a name="line.586"></a>
+<span class="sourceLineNo">587</span>    ThreadPoolExecutor threadPool = new THBaseThreadPoolExecutor(minWorkers, maxWorkers,<a name="line.587"></a>
+<span class="sourceLineNo">588</span>        Long.MAX_VALUE, TimeUnit.SECONDS, callQueue, tfb.build(), metrics);<a name="line.588"></a>
+<span class="sourceLineNo">589</span>    threadPool.allowCoreThreadTimeOut(true);<a name="line.589"></a>
+<span class="sourceLineNo">590</span>    return threadPool;<a name="line.590"></a>
+<span class="sourceLineNo">591</span>  }<a name="line.591"></a>
+<span class="sourceLineNo">592</span><a name="line.592"></a>
+<span class="sourceLineNo">593</span>  private InetAddress getBindAddress(Configuration conf)<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      throws UnknownHostException {<a name="line.594"></a>
+<span class="sourceLineNo">595</span>    String bindAddressStr = conf.get(BIND_CONF_KEY, DEFAULT_BIND_ADDR);<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    return InetAddress.getByName(bindAddressStr);<a name="line.596"></a>
+<span class="sourceLineNo">597</span>  }<a name="line.597"></a>
+<span class="sourceLineNo">598</span><a name="line.598"></a>
+<span class="sourceLineNo">599</span><a name="line.599"></a>
+<span class="sourceLineNo">600</span>  public static void registerFilters(Configuration conf) {<a name="line.600"></a>
+<span class="sourceLineNo">601</span>    String[] filters = conf.getStrings(THRIFT_FILTERS);<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    Splitter splitter = Splitter.on(':');<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    if(filters != null) {<a name="line.603"></a>
+<span class="sourceLineNo">604</span>      for(String filterClass: filters) {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>        List&lt;String&gt; filterPart = splitter.splitToList(filterClass);<a name="line.605"></a>
+<span class="sourceLineNo">606</span>        if(filterPart.size() != 2) {<a name="line.606"></a>
+<span class="sourceLineNo">607</span>          LOG.warn("Invalid filter specification " + filterClass + " - skipping");<a name="line.607"></a>
+<span class="sourceLineNo">608</span>        } else {<a name="line.608"></a>
+<span class="sourceLineNo">609</span>          ParseFilter.registerFilter(filterPart.get(0), filterPart.get(1));<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">613</span>  }<a name="line.613"></a>
+<span class="sourceLineNo">614</span><a name="line.614"></a>
+<span class="sourceLineNo">615</span>  /**<a name="line.615"></a>
+<span class="sourceLineNo">616</span>   * Add options to command lines<a name="line.616"></a>
+<span class="sourceLineNo">617</span>   * @param options options<a name="line.617"></a>
+<span class="sourceLineNo">618</span>   */<a name="line.618"></a>
+<span class="sourceLineNo">619</span>  protected void addOptions(Options options) {<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    options.addOption("b", BIND_OPTION, true, "Address to bind " +<a name="line.620"></a>
+<span class="sourceLineNo">621</span>        "the Thrift server to. [default: " + DEFAULT_BIND_ADDR + "]");<a name="line.621"></a>
+<span class="sourceLineNo">622</span>    options.addOption("p", PORT_OPTION, true, "Port to bind to [default: " +<a name="line.622"></a>
+<span class="sourceLineNo">623</span>        DEFAULT_LISTEN_PORT + "]");<a name="line.623"></a>
+<span class="sourceLineNo">624</span>    options.addOption("f", FRAMED_OPTION, false, "Use framed transport");<a name="line.624"></a>
+<span class="sourceLineNo">625</span>    options.addOption("c", COMPACT_OPTION, false, "Use the compact protocol");<a name="line.625"></a>
+<span class="sourceLineNo">626</span>    options.addOption("h", "help", false, "Print help information");<a name="line.626"></a>
+<span class="sourceLineNo">627</span>    options.addOption("s", SELECTOR_NUM_OPTION, true, "How many selector threads to use.");<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    options.addOption(null, INFOPORT_OPTION, true, "Port for web UI");<a name="line.628"></a>
+<span class="sourceLineNo">629</span><a name="line.629"></a>
+<span class="sourceLineNo">630</span>    options.addOption("m", MIN_WORKERS_OPTION, true,<a name="line.630"></a>
+<span class="sourceLineNo">631</span>        "The minimum number of worker threads for " +<a name="line.631"></a>
+<span class="sourceLineNo">632</span>            ImplType.THREAD_POOL.simpleClassName());<a name="line.632"></a>
+<span class="sourceLineNo">633</span><a name="line.633"></a>
+<span class="sourceLineNo">634</span>    options.addOption("w", MAX_WORKERS_OPTION, true,<a name="line.634"></a>
+<span class="sourceLineNo">635</span>        "The maximum number of worker threads for " +<a name="line.635"></a>
+<span class="sourceLineNo">636</span>            ImplType.THREAD_POOL.simpleClassName());<a name="line.636"></a>
+<span class="sourceLineNo">637</span><a name="line.637"></a>
+<span class="sourceLineNo">638</span>    options.addOption("q", MAX_QUEUE_SIZE_OPTION, true,<a name="line.638"></a>
+<span class="sourceLineNo">639</span>        "The maximum number of queued requests in " +<a name="line.639"></a>
+<span class="sourceLineNo">640</span>            ImplType.THREAD_POOL.simpleClassName());<a name="line.640"></a>
+<span class="sou

<TRUNCATED>

[03/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
index f71c161..a8cb53c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -147,9 +147,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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/TestWALSplit.Corruptions.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALSplit.Corruptions</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/IOTestProvider.AllowedOperations.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">IOTestProvider.AllowedOperations</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/FaultyFSLog.FailureType.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">FaultyFSLog.FailureType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALSplit.Corruptions.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALSplit.Corruptions</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index fb914b9..bf2fa0d 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -1176,6 +1176,15 @@
 <li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/HBaseHomePath.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseHomePath</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/HBaseKerberosUtils.html" title="class in org.apache.hadoop.hbase.security"><span class="typeNameLink">HBaseKerberosUtils</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.rest.<a href="org/apache/hadoop/hbase/rest/HBaseRESTTestingUtility.html" title="class in org.apache.hadoop.hbase.rest"><span class="typeNameLink">HBaseRESTTestingUtility</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.HBaseServiceHandler
+<ul>
+<li type="circle">org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler (implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface)
+<ul>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">TestThriftServer.MySlowHBaseHandler</span></a> (implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface)</li>
+</ul>
+</li>
+</ul>
+</li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseTestingUtility.PortAllocator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseTestingUtility.SeenRowTracker</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.hbck.<a href="org/apache/hadoop/hbase/util/hbck/HbckTestingUtil.html" title="class in org.apache.hadoop.hbase.util.hbck"><span class="typeNameLink">HbckTestingUtil</span></a></li>
@@ -3426,6 +3435,7 @@
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestRegexComparator.TestCase.html" title="class in org.apache.hadoop.hbase.filter"><span class="typeNameLink">TestRegexComparator.TestCase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestRegionAssignedToMultipleRegionServers.html" title="class in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">TestRegionAssignedToMultipleRegionServers</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestRegionBypass.html" title="class in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">TestRegionBypass</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">TestRegionCoprocessorHost</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionFavoredNodes</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionIncrement</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionInfoBuilder.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionInfoBuilder</span></a></li>
@@ -3936,11 +3946,16 @@
 <li type="circle">org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandlerWithReadOnly.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">TestThriftHBaseServiceHandlerWithReadOnly</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">TestThriftHttpServer</span></a>
 <ul>
+<li type="circle">org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">TestThrift2HttpServer</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">TestThriftSpnegoHttpServer</span></a></li>
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TestThriftServer.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">TestThriftServer</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">TestThriftServerCmdLine</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">TestThriftServerCmdLine</span></a>
+<ul>
+<li type="circle">org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">TestThrift2ServerCmdLine</span></a></li>
+</ul>
+</li>
 <li type="circle">org.apache.hadoop.hbase.io.hadoopbackport.<a href="org/apache/hadoop/hbase/io/hadoopbackport/TestThrottledInputStream.html" title="class in org.apache.hadoop.hbase.io.hadoopbackport"><span class="typeNameLink">TestThrottledInputStream</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/TestThrottleSettings.html" title="class in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">TestThrottleSettings</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestTimeout.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestTimeout</span></a></li>
@@ -4134,11 +4149,6 @@
 <li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestZKNodeTracker.WaitToGetDataThread.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">TestZKNodeTracker.WaitToGetDataThread</span></a></li>
 </ul>
 </li>
-<li type="circle">org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler (implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface)
-<ul>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">TestThriftServer.MySlowHBaseHandler</span></a> (implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface)</li>
-</ul>
-</li>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Throwable</span></a> (implements java.io.<a href="https://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">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Exception</span></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/serialized-form.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/serialized-form.html b/testdevapidocs/serialized-form.html
index da45683..ff3fb46 100644
--- a/testdevapidocs/serialized-form.html
+++ b/testdevapidocs/serialized-form.html
@@ -2307,41 +2307,41 @@
 <dd>0L</dd>
 </dl>
 </li>
-<li class="blockList"><a name="org.apache.hadoop.hbase.thrift.ThriftHttpServlet">
+<li class="blockList"><a name="org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler.IOErrorWithCause">
 <!--   -->
 </a>
-<h3>Class org.apache.hadoop.hbase.thrift.ThriftHttpServlet extends org.apache.thrift.server.TServlet implements Serializable</h3>
-<dl class="nameValue">
-<dt>serialVersionUID:</dt>
-<dd>1L</dd>
-</dl>
+<h3>Class org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler.IOErrorWithCause extends org.apache.hadoop.hbase.thrift.generated.IOError implements Serializable</h3>
 <ul class="blockList">
 <li class="blockList">
 <h3>Serialized Fields</h3>
 <ul class="blockList">
-<li class="blockList">
-<h4>doAsEnabled</h4>
-<pre>boolean doAsEnabled</pre>
-</li>
 <li class="blockListLast">
-<h4>securityEnabled</h4>
-<pre>boolean securityEnabled</pre>
+<h4>cause</h4>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a> cause</pre>
 </li>
 </ul>
 </li>
 </ul>
 </li>
-<li class="blockList"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.IOErrorWithCause">
+<li class="blockList"><a name="org.apache.hadoop.hbase.thrift.ThriftHttpServlet">
 <!--   -->
 </a>
-<h3>Class org.apache.hadoop.hbase.thrift.ThriftServerRunner.IOErrorWithCause extends org.apache.hadoop.hbase.thrift.generated.IOError implements Serializable</h3>
+<h3>Class org.apache.hadoop.hbase.thrift.ThriftHttpServlet extends org.apache.thrift.server.TServlet implements Serializable</h3>
+<dl class="nameValue">
+<dt>serialVersionUID:</dt>
+<dd>1L</dd>
+</dl>
 <ul class="blockList">
 <li class="blockList">
 <h3>Serialized Fields</h3>
 <ul class="blockList">
+<li class="blockList">
+<h4>doAsEnabled</h4>
+<pre>boolean doAsEnabled</pre>
+</li>
 <li class="blockListLast">
-<h4>cause</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a> cause</pre>
+<h4>securityEnabled</h4>
+<pre>boolean securityEnabled</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/src-html/org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html
new file mode 100644
index 0000000..a2067aa
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html
@@ -0,0 +1,149 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.coprocessor;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.coprocessor.CoprocessorHost.COPROCESSORS_ENABLED_CONF_KEY;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.coprocessor.CoprocessorHost.REGION_COPROCESSOR_CONF_KEY;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.coprocessor.CoprocessorHost.SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.coprocessor.CoprocessorHost.USER_COPROCESSORS_ENABLED_CONF_KEY;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.junit.Assert.assertEquals;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.mockito.Mockito.mock;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import static org.mockito.Mockito.when;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><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.HBaseClassTestRule;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.TableName;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.regionserver.HRegion;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.regionserver.RegionServerServices;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.junit.ClassRule;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.junit.Test;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.junit.experimental.categories.Category;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>@Category({SmallTests.class})<a name="line.44"></a>
+<span class="sourceLineNo">045</span>public class TestRegionCoprocessorHost {<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>  @ClassRule<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.48"></a>
+<span class="sourceLineNo">049</span>      HBaseClassTestRule.forClass(TestRegionCoprocessorHost.class);<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>  @Test<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  public void testLoadDuplicateCoprocessor() throws Exception {<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    Configuration conf = HBaseConfiguration.create();<a name="line.53"></a>
+<span class="sourceLineNo">054</span>    conf.setBoolean(COPROCESSORS_ENABLED_CONF_KEY, true);<a name="line.54"></a>
+<span class="sourceLineNo">055</span>    conf.setBoolean(USER_COPROCESSORS_ENABLED_CONF_KEY, true);<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    conf.setBoolean(SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR, true);<a name="line.56"></a>
+<span class="sourceLineNo">057</span>    conf.set(REGION_COPROCESSOR_CONF_KEY, SimpleRegionObserver.class.getName());<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    TableName tableName = TableName.valueOf("testDoubleLoadingCoprocessor");<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    RegionInfo regionInfo = RegionInfoBuilder.newBuilder(tableName).build();<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    // config a same coprocessor with system coprocessor<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    TableDescriptor tableDesc = TableDescriptorBuilder.newBuilder(tableName)<a name="line.61"></a>
+<span class="sourceLineNo">062</span>        .setCoprocessor(SimpleRegionObserver.class.getName()).build();<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    HRegion region = mock(HRegion.class);<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    when(region.getRegionInfo()).thenReturn(regionInfo);<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    when(region.getTableDescriptor()).thenReturn(tableDesc);<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    RegionServerServices rsServices = mock(RegionServerServices.class);<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    RegionCoprocessorHost host = new RegionCoprocessorHost(region, rsServices, conf);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    // Only one coprocessor SimpleRegionObserver loaded<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    assertEquals(1, host.coprocEnvironments.size());<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>    // Allow to load duplicate coprocessor<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    conf.setBoolean(SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR, false);<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    host = new RegionCoprocessorHost(region, rsServices, conf);<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    // Two duplicate coprocessors loaded<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    assertEquals(2, host.coprocEnvironments.size());<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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 d6439f8..2b32de3 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html
@@ -25,98 +25,98 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.thrift;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import static org.junit.Assert.assertFalse;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.junit.Assert.assertNull;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.junit.Assert.fail;<a name="line.22"></a>
-<span class="sourceLineNo">023</span><a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.net.HttpURLConnection;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.net.URL;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.ArrayList;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.List;<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.HBaseClassTestRule;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.HConstants;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.thrift.generated.Hbase;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.thrift.protocol.TBinaryProtocol;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.thrift.protocol.TProtocol;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.thrift.transport.THttpClient;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.thrift.transport.TTransportException;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.junit.AfterClass;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.junit.Assert;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.junit.BeforeClass;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.junit.ClassRule;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.junit.Rule;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.junit.Test;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.junit.experimental.categories.Category;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.junit.rules.ExpectedException;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.slf4j.Logger;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.slf4j.LoggerFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hbase.thirdparty.com.google.common.base.Joiner;<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> * Start the HBase Thrift HTTP server on a random port through the command-line<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * interface and talk to it from client side.<a name="line.57"></a>
-<span class="sourceLineNo">058</span> */<a name="line.58"></a>
-<span class="sourceLineNo">059</span>@Category({ClientTests.class, LargeTests.class})<a name="line.59"></a>
-<span class="sourceLineNo">060</span>public class TestThriftHttpServer {<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  @ClassRule<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.62"></a>
-<span class="sourceLineNo">063</span>      HBaseClassTestRule.forClass(TestThriftHttpServer.class);<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private static final Logger LOG =<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      LoggerFactory.getLogger(TestThriftHttpServer.class);<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private Thread httpServerThread;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private volatile Exception httpServerException;<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private Exception clientSideException;<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  private ThriftServer thriftServer;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  int port;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  @BeforeClass<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  public static void setUpBeforeClass() throws Exception {<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    TEST_UTIL.getConfiguration().setBoolean("hbase.regionserver.thrift.http", true);<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    TEST_UTIL.getConfiguration().setBoolean("hbase.table.sanity.checks", false);<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    TEST_UTIL.startMiniCluster();<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    //ensure that server time increments every time we do an operation, otherwise<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    //successive puts having the same timestamp will override each other<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    EnvironmentEdgeManagerTestHelper.injectEdge(new IncrementingEnvironmentEdge());<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>  @AfterClass<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  public static void tearDownAfterClass() throws Exception {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    EnvironmentEdgeManager.reset();<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>  @Test<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  public void testExceptionThrownWhenMisConfigured() throws Exception {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    Configuration conf = new Configuration(TEST_UTIL.getConfiguration());<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    conf.set("hbase.thrift.security.qop", "privacy");<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    conf.setBoolean("hbase.thrift.ssl.enabled", false);<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>    ThriftServerRunner runner = null;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    ExpectedException thrown = ExpectedException.none();<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    try {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      thrown.expect(IllegalArgumentException.class);<a name="line.103"></a>
-<span class="sourceLineNo">104</span>      thrown.expectMessage("Thrift HTTP Server's QoP is privacy, " +<a name="line.104"></a>
-<span class="sourceLineNo">105</span>          "but hbase.thrift.ssl.enabled is false");<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      runner = new ThriftServerRunner(conf);<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      fail("Thrift HTTP Server starts up even with wrong security configurations.");<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    } catch (Exception e) {<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>    assertNull(runner);<a name="line.111"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.thrift.Constants.INFOPORT_OPTION;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.thrift.Constants.PORT_OPTION;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.junit.Assert.assertFalse;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.fail;<a name="line.23"></a>
+<span class="sourceLineNo">024</span><a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.net.HttpURLConnection;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.net.URL;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.ArrayList;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.List;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.conf.Configuration;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.HConstants;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.thrift.generated.Hbase;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.thrift.protocol.TBinaryProtocol;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.thrift.protocol.TProtocol;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.thrift.transport.THttpClient;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.thrift.transport.TTransportException;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.junit.AfterClass;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.junit.Assert;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.junit.BeforeClass;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.junit.ClassRule;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.junit.Rule;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.junit.Test;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.junit.experimental.categories.Category;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.junit.rules.ExpectedException;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.slf4j.Logger;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.slf4j.LoggerFactory;<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hbase.thirdparty.com.google.common.base.Joiner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span><a name="line.55"></a>
+<span class="sourceLineNo">056</span>/**<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * Start the HBase Thrift HTTP server on a random port through the command-line<a name="line.57"></a>
+<span class="sourceLineNo">058</span> * interface and talk to it from client side.<a name="line.58"></a>
+<span class="sourceLineNo">059</span> */<a name="line.59"></a>
+<span class="sourceLineNo">060</span>@Category({ClientTests.class, LargeTests.class})<a name="line.60"></a>
+<span class="sourceLineNo">061</span>public class TestThriftHttpServer {<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  @ClassRule<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.63"></a>
+<span class="sourceLineNo">064</span>      HBaseClassTestRule.forClass(TestThriftHttpServer.class);<a name="line.64"></a>
+<span class="sourceLineNo">065</span><a name="line.65"></a>
+<span class="sourceLineNo">066</span>  private static final Logger LOG =<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      LoggerFactory.getLogger(TestThriftHttpServer.class);<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>  protected static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private Thread httpServerThread;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private volatile Exception httpServerException;<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private Exception clientSideException;<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private ThriftServer thriftServer;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  int port;<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>  @BeforeClass<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  public static void setUpBeforeClass() throws Exception {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    TEST_UTIL.getConfiguration().setBoolean("hbase.regionserver.thrift.http", true);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    TEST_UTIL.getConfiguration().setBoolean("hbase.table.sanity.checks", false);<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    TEST_UTIL.startMiniCluster();<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    //ensure that server time increments every time we do an operation, otherwise<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    //successive puts having the same timestamp will override each other<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    EnvironmentEdgeManagerTestHelper.injectEdge(new IncrementingEnvironmentEdge());<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>  @AfterClass<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  public static void tearDownAfterClass() throws Exception {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    EnvironmentEdgeManager.reset();<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>  @Test<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  public void testExceptionThrownWhenMisConfigured() throws Exception {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    Configuration conf = new Configuration(TEST_UTIL.getConfiguration());<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    conf.set("hbase.thrift.security.qop", "privacy");<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    conf.setBoolean("hbase.thrift.ssl.enabled", false);<a name="line.99"></a>
+<span class="sourceLineNo">100</span><a name="line.100"></a>
+<span class="sourceLineNo">101</span>    ThriftServer server = null;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    ExpectedException thrown = ExpectedException.none();<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    try {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      thrown.expect(IllegalArgumentException.class);<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      thrown.expectMessage("Thrift HTTP Server's QoP is privacy, " +<a name="line.105"></a>
+<span class="sourceLineNo">106</span>          "but hbase.thrift.ssl.enabled is false");<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      server = new ThriftServer(conf);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      server.run();<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      fail("Thrift HTTP Server starts up even with wrong security configurations.");<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    } catch (Exception e) {<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><a name="line.113"></a>
 <span class="sourceLineNo">114</span>  private void startHttpServerThread(final String[] args) {<a name="line.114"></a>
@@ -125,7 +125,7 @@
 <span class="sourceLineNo">117</span>    httpServerException = null;<a name="line.117"></a>
 <span class="sourceLineNo">118</span>    httpServerThread = new Thread(() -&gt; {<a name="line.118"></a>
 <span class="sourceLineNo">119</span>      try {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        thriftServer.doMain(args);<a name="line.120"></a>
+<span class="sourceLineNo">120</span>        thriftServer.run(args);<a name="line.120"></a>
 <span class="sourceLineNo">121</span>      } catch (Exception e) {<a name="line.121"></a>
 <span class="sourceLineNo">122</span>        httpServerException = e;<a name="line.122"></a>
 <span class="sourceLineNo">123</span>      }<a name="line.123"></a>
@@ -153,95 +153,99 @@
 <span class="sourceLineNo">145</span>    runThriftServer(1024 * 64);<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>  @Test<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  public void testRunThriftServer() throws Exception {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    runThriftServer(0);<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>  void runThriftServer(int customHeaderSize) throws Exception {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    List&lt;String&gt; args = new ArrayList&lt;&gt;(3);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    port = HBaseTestingUtility.randomFreePort();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    args.add("-" + ThriftServer.PORT_OPTION);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    args.add(String.valueOf(port));<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    args.add("-" + ThriftServer.INFOPORT_OPTION);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    int infoPort = HBaseTestingUtility.randomFreePort();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    args.add(String.valueOf(infoPort));<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    args.add("start");<a name="line.161"></a>
-<span class="sourceLineNo">162</span><a name="line.162"></a>
-<span class="sourceLineNo">163</span>    thriftServer = new ThriftServer(TEST_UTIL.getConfiguration());<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    startHttpServerThread(args.toArray(new String[args.size()]));<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>    // wait up to 10s for the server to start<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    HBaseTestingUtility.waitForHostPort(HConstants.LOCALHOST, port);<a name="line.167"></a>
-<span class="sourceLineNo">168</span><a name="line.168"></a>
-<span class="sourceLineNo">169</span>    String url = "http://" + HConstants.LOCALHOST + ":" + port;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    try {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      checkHttpMethods(url);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      talkToThriftServer(url, customHeaderSize);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    } catch (Exception ex) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      clientSideException = ex;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    } finally {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      stopHttpServerThread();<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>    if (clientSideException != null) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      LOG.error("Thrift client threw an exception " + clientSideException);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (clientSideException instanceof TTransportException) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        throw clientSideException;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      } else {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>        throw new Exception(clientSideException);<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>  }<a name="line.187"></a>
-<span class="sourceLineNo">188</span><a name="line.188"></a>
-<span class="sourceLineNo">189</span>  private void checkHttpMethods(String url) throws Exception {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    // HTTP TRACE method should be disabled for security<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    // See https://www.owasp.org/index.php/Cross_Site_Tracing<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    conn.setRequestMethod("TRACE");<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    conn.connect();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    Assert.assertEquals(HttpURLConnection.HTTP_FORBIDDEN, conn.getResponseCode());<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>  static volatile boolean tableCreated = false;<a name="line.198"></a>
-<span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>  void talkToThriftServer(String url, int customHeaderSize) throws Exception {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    THttpClient httpClient = new THttpClient(url);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    httpClient.open();<a name="line.202"></a>
+<span class="sourceLineNo">148</span>  protected ThriftServer createThriftServer() {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    return new ThriftServer(TEST_UTIL.getConfiguration());<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<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>    runThriftServer(0);<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>
+<span class="sourceLineNo">157</span>  void runThriftServer(int customHeaderSize) throws Exception {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    List&lt;String&gt; args = new ArrayList&lt;&gt;(3);<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("-" + 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_OPTION);<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>    args.add("start");<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span>    thriftServer = createThriftServer();<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    startHttpServerThread(args.toArray(new String[args.size()]));<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>    // wait up to 10s for the server to start<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    HBaseTestingUtility.waitForHostPort(HConstants.LOCALHOST, port);<a name="line.171"></a>
+<span class="sourceLineNo">172</span><a name="line.172"></a>
+<span class="sourceLineNo">173</span>    String url = "http://" + HConstants.LOCALHOST + ":" + port;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    try {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      checkHttpMethods(url);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      talkToThriftServer(url, customHeaderSize);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    } catch (Exception ex) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      clientSideException = ex;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    } finally {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      stopHttpServerThread();<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>    if (clientSideException != null) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      LOG.error("Thrift client threw an exception " + clientSideException);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      if (clientSideException instanceof TTransportException) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        throw clientSideException;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      } else {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        throw new Exception(clientSideException);<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>  }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  private void checkHttpMethods(String url) throws Exception {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    // HTTP TRACE method should be disabled for security<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    // See https://www.owasp.org/index.php/Cross_Site_Tracing<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    conn.setRequestMethod("TRACE");<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    conn.connect();<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    Assert.assertEquals(HttpURLConnection.HTTP_FORBIDDEN, conn.getResponseCode());<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>  protected static volatile boolean tableCreated = false;<a name="line.202"></a>
 <span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span>    if (customHeaderSize &gt; 0) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      StringBuilder sb = new StringBuilder();<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      for (int i = 0; i &lt; customHeaderSize; i++) {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>        sb.append("a");<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      }<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      httpClient.setCustomHeader("User-Agent", sb.toString());<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>    try {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      TProtocol prot;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      prot = new TBinaryProtocol(httpClient);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      Hbase.Client client = new Hbase.Client(prot);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      if (!tableCreated){<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        TestThriftServer.createTestTables(client);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        tableCreated = true;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      TestThriftServer.checkTableList(client);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    } finally {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      httpClient.close();<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>  private void stopHttpServerThread() throws Exception {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    LOG.debug("Stopping " + " Thrift HTTP server");<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    thriftServer.stop();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    httpServerThread.join();<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    if (httpServerException != null) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      LOG.error("Command-line invocation of HBase Thrift server threw an " +<a name="line.231"></a>
-<span class="sourceLineNo">232</span>          "exception", httpServerException);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      throw new Exception(httpServerException);<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">204</span>  protected void talkToThriftServer(String url, int customHeaderSize) throws Exception {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    THttpClient httpClient = new THttpClient(url);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    httpClient.open();<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>    if (customHeaderSize &gt; 0) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      StringBuilder sb = new StringBuilder();<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      for (int i = 0; i &lt; customHeaderSize; i++) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        sb.append("a");<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      }<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      httpClient.setCustomHeader("User-Agent", sb.toString());<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>    try {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      TProtocol prot;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      prot = new TBinaryProtocol(httpClient);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      Hbase.Client client = new Hbase.Client(prot);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      if (!tableCreated){<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        TestThriftServer.createTestTables(client);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>        tableCreated = true;<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      }<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      TestThriftServer.checkTableList(client);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    } finally {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      httpClient.close();<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>  private void stopHttpServerThread() throws Exception {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    LOG.debug("Stopping " + " Thrift HTTP server");<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    thriftServer.stop();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    httpServerThread.join();<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    if (httpServerException != null) {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      LOG.error("Command-line invocation of HBase Thrift server threw an " +<a name="line.235"></a>
+<span class="sourceLineNo">236</span>          "exception", httpServerException);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      throw new Exception(httpServerException);<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>}<a name="line.240"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 60f13e3..ec94f7a 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
@@ -25,36 +25,36 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.thrift;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import static org.junit.Assert.assertArrayEquals;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.junit.Assert.assertEquals;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.junit.Assert.assertFalse;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertTrue;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.junit.Assert.fail;<a name="line.24"></a>
-<span class="sourceLineNo">025</span><a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.io.IOException;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.nio.ByteBuffer;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.ArrayList;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.Collection;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.HashMap;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.List;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.Map;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.conf.Configuration;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.CompatibilityFactory;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.HConstants;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.HRegionInfo;<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.TableName;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Put;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.Table;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.filter.ParseFilter;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.test.MetricsAssertHelper;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler;<a name="line.49"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.thrift.Constants.COALESCE_INC_KEY;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.junit.Assert.assertArrayEquals;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.junit.Assert.assertEquals;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertFalse;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.junit.Assert.assertTrue;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.junit.Assert.fail;<a name="line.25"></a>
+<span class="sourceLineNo">026</span><a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.io.IOException;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.nio.ByteBuffer;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.ArrayList;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.Collection;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.HashMap;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.List;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.Map;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.conf.Configuration;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.CompatibilityFactory;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<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.HRegionInfo;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.TableName;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.Put;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Table;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.filter.ParseFilter;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.test.MetricsAssertHelper;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.49"></a>
 <span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.thrift.generated.BatchMutation;<a name="line.50"></a>
 <span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.thrift.generated.ColumnDescriptor;<a name="line.51"></a>
 <span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.thrift.generated.Hbase;<a name="line.52"></a>
@@ -79,7 +79,7 @@
 <span class="sourceLineNo">071</span>import org.slf4j.LoggerFactory;<a name="line.71"></a>
 <span class="sourceLineNo">072</span><a name="line.72"></a>
 <span class="sourceLineNo">073</span>/**<a name="line.73"></a>
-<span class="sourceLineNo">074</span> * Unit testing for ThriftServerRunner.HBaseHandler, a part of the<a name="line.74"></a>
+<span class="sourceLineNo">074</span> * Unit testing for ThriftServerRunner.HBaseServiceHandler, a part of the<a name="line.74"></a>
 <span class="sourceLineNo">075</span> * org.apache.hadoop.hbase.thrift package.<a name="line.75"></a>
 <span class="sourceLineNo">076</span> */<a name="line.76"></a>
 <span class="sourceLineNo">077</span>@Category({ClientTests.class, LargeTests.class})<a name="line.77"></a>
@@ -121,7 +121,7 @@
 <span class="sourceLineNo">113</span><a name="line.113"></a>
 <span class="sourceLineNo">114</span>  @BeforeClass<a name="line.114"></a>
 <span class="sourceLineNo">115</span>  public static void beforeClass() throws Exception {<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    UTIL.getConfiguration().setBoolean(ThriftServerRunner.COALESCE_INC_KEY, true);<a name="line.116"></a>
+<span class="sourceLineNo">116</span>    UTIL.getConfiguration().setBoolean(COALESCE_INC_KEY, true);<a name="line.116"></a>
 <span class="sourceLineNo">117</span>    UTIL.getConfiguration().setBoolean("hbase.table.sanity.checks", false);<a name="line.117"></a>
 <span class="sourceLineNo">118</span>    UTIL.getConfiguration().setInt("hbase.client.retries.number", 3);<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    UTIL.startMiniCluster();<a name="line.119"></a>
@@ -160,8 +160,8 @@
 <span class="sourceLineNo">152</span>   * IllegalArgument exception.<a name="line.152"></a>
 <span class="sourceLineNo">153</span>   */<a name="line.153"></a>
 <span class="sourceLineNo">154</span>  public void doTestTableCreateDrop() throws Exception {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.156"></a>
+<span class="sourceLineNo">155</span>    ThriftHBaseServiceHandler handler =<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      new ThriftHBaseServiceHandler(UTIL.getConfiguration(),<a name="line.156"></a>
 <span class="sourceLineNo">157</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.157"></a>
 <span class="sourceLineNo">158</span>    doTestTableCreateDrop(handler);<a name="line.158"></a>
 <span class="sourceLineNo">159</span>  }<a name="line.159"></a>
@@ -171,7 +171,7 @@
 <span class="sourceLineNo">163</span>    dropTestTables(handler);<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>  public static final class MySlowHBaseHandler extends ThriftServerRunner.HBaseHandler<a name="line.166"></a>
+<span class="sourceLineNo">166</span>  public static final class MySlowHBaseHandler extends ThriftHBaseServiceHandler<a name="line.166"></a>
 <span class="sourceLineNo">167</span>      implements Hbase.Iface {<a name="line.167"></a>
 <span class="sourceLineNo">168</span><a name="line.168"></a>
 <span class="sourceLineNo">169</span>    protected MySlowHBaseHandler(Configuration c)<a name="line.169"></a>
@@ -238,7 +238,7 @@
 <span class="sourceLineNo">230</span>  private static Hbase.Iface getHandlerForMetricsTest(ThriftMetrics metrics, Configuration conf)<a name="line.230"></a>
 <span class="sourceLineNo">231</span>      throws Exception {<a name="line.231"></a>
 <span class="sourceLineNo">232</span>    Hbase.Iface handler = new MySlowHBaseHandler(conf);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    return HbaseHandlerMetricsProxy.newInstance(handler, metrics, conf);<a name="line.233"></a>
+<span class="sourceLineNo">233</span>    return HbaseHandlerMetricsProxy.newInstance((ThriftHBaseServiceHandler)handler, metrics, conf);<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>  private static ThriftMetrics getMetrics(Configuration conf) throws Exception {<a name="line.236"></a>
@@ -278,15 +278,15 @@
 <span class="sourceLineNo">270</span>  }<a name="line.270"></a>
 <span class="sourceLineNo">271</span><a name="line.271"></a>
 <span class="sourceLineNo">272</span>  public void doTestIncrements() throws Exception {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.274"></a>
+<span class="sourceLineNo">273</span>    ThriftHBaseServiceHandler handler =<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      new ThriftHBaseServiceHandler(UTIL.getConfiguration(),<a name="line.274"></a>
 <span class="sourceLineNo">275</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.275"></a>
 <span class="sourceLineNo">276</span>    createTestTables(handler);<a name="line.276"></a>
 <span class="sourceLineNo">277</span>    doTestIncrements(handler);<a name="line.277"></a>
 <span class="sourceLineNo">278</span>    dropTestTables(handler);<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>  public static void doTestIncrements(HBaseHandler handler) throws Exception {<a name="line.281"></a>
+<span class="sourceLineNo">281</span>  public static void doTestIncrements(ThriftHBaseServiceHandler handler) throws Exception {<a name="line.281"></a>
 <span class="sourceLineNo">282</span>    List&lt;Mutation&gt; mutations = new ArrayList&lt;&gt;(1);<a name="line.282"></a>
 <span class="sourceLineNo">283</span>    mutations.add(new Mutation(false, columnAAname, valueEname, true));<a name="line.283"></a>
 <span class="sourceLineNo">284</span>    mutations.add(new Mutation(false, columnAname, valueEname, true));<a name="line.284"></a>
@@ -326,8 +326,8 @@
 <span class="sourceLineNo">318</span>   * versions.<a name="line.318"></a>
 <span class="sourceLineNo">319</span>   */<a name="line.319"></a>
 <span class="sourceLineNo">320</span>  public void doTestTableMutations() throws Exception {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.322"></a>
+<span class="sourceLineNo">321</span>    ThriftHBaseServiceHandler handler =<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      new ThriftHBaseServiceHandler(UTIL.getConfiguration(),<a name="line.322"></a>
 <span class="sourceLineNo">323</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.323"></a>
 <span class="sourceLineNo">324</span>    doTestTableMutations(handler);<a name="line.324"></a>
 <span class="sourceLineNo">325</span>  }<a name="line.325"></a>
@@ -403,8 +403,8 @@
 <span class="sourceLineNo">395</span>   */<a name="line.395"></a>
 <span class="sourceLineNo">396</span>  public void doTestTableTimestampsAndColumns() throws Exception {<a name="line.396"></a>
 <span class="sourceLineNo">397</span>    // Setup<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.399"></a>
+<span class="sourceLineNo">398</span>    ThriftHBaseServiceHandler handler =<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      new ThriftHBaseServiceHandler(UTIL.getConfiguration(),<a name="line.399"></a>
 <span class="sourceLineNo">400</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.400"></a>
 <span class="sourceLineNo">401</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.401"></a>
 <span class="sourceLineNo">402</span><a name="line.402"></a>
@@ -481,8 +481,8 @@
 <span class="sourceLineNo">473</span>   */<a name="line.473"></a>
 <span class="sourceLineNo">474</span>  public void doTestTableScanners() throws Exception {<a name="line.474"></a>
 <span class="sourceLineNo">475</span>    // Setup<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.477"></a>
+<span class="sourceLineNo">476</span>    ThriftHBaseServiceHandler handler =<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      new ThriftHBaseServiceHandler(UTIL.getConfiguration(),<a name="line.477"></a>
 <span class="sourceLineNo">478</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.478"></a>
 <span class="sourceLineNo">479</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.479"></a>
 <span class="sourceLineNo">480</span><a name="line.480"></a>
@@ -600,8 +600,8 @@
 <span class="sourceLineNo">592</span>   * Tests for GetTableRegions<a name="line.592"></a>
 <span class="sourceLineNo">593</span>   */<a name="line.593"></a>
 <span class="sourceLineNo">594</span>  public void doTestGetTableRegions() throws Exception {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.596"></a>
+<span class="sourceLineNo">595</span>    ThriftHBaseServiceHandler handler =<a name="line.595"></a>
+<span class="sourceLineNo">596</span>      new ThriftHBaseServiceHandler(UTIL.getConfiguration(),<a name="line.596"></a>
 <span class="sourceLineNo">597</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.597"></a>
 <span class="sourceLineNo">598</span>    doTestGetTableRegions(handler);<a name="line.598"></a>
 <span class="sourceLineNo">599</span>  }<a name="line.599"></a>
@@ -628,7 +628,7 @@
 <span class="sourceLineNo">620</span><a name="line.620"></a>
 <span class="sourceLineNo">621</span>    conf.set("hbase.thrift.filters", "MyFilter:filterclass");<a name="line.621"></a>
 <span class="sourceLineNo">622</span><a name="line.622"></a>
-<span class="sourceLineNo">623</span>    ThriftServerRunner.registerFilters(conf);<a name="line.623"></a>
+<span class="sourceLineNo">623</span>    ThriftServer.registerFilters(conf);<a name="line.623"></a>
 <span class="sourceLineNo">624</span><a name="line.624"></a>
 <span class="sourceLineNo">625</span>    Map&lt;String, String&gt; registeredFilters = ParseFilter.getAllFilters();<a name="line.625"></a>
 <span class="sourceLineNo">626</span><a name="line.626"></a>
@@ -636,8 +636,8 @@
 <span class="sourceLineNo">628</span>  }<a name="line.628"></a>
 <span class="sourceLineNo">629</span><a name="line.629"></a>
 <span class="sourceLineNo">630</span>  public void doTestGetRegionInfo() throws Exception {<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.632"></a>
+<span class="sourceLineNo">631</span>    ThriftHBaseServiceHandler handler =<a name="line.631"></a>
+<span class="sourceLineNo">632</span>      new ThriftHBaseServiceHandler(UTIL.getConfiguration(),<a name="line.632"></a>
 <span class="sourceLineNo">633</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.633"></a>
 <span class="sourceLineNo">634</span>    doTestGetRegionInfo(handler);<a name="line.634"></a>
 <span class="sourceLineNo">635</span>  }<a name="line.635"></a>
@@ -663,8 +663,8 @@
 <span class="sourceLineNo">655</span>   * Appends the value to a cell and checks that the cell value is updated properly.<a name="line.655"></a>
 <span class="sourceLineNo">656</span>   */<a name="line.656"></a>
 <span class="sourceLineNo">657</span>  public static void doTestAppend() throws Exception {<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.659"></a>
+<span class="sourceLineNo">658</span>    ThriftHBaseServiceHandler handler =<a name="line.658"></a>
+<span class="sourceLineNo">659</span>      new ThriftHBaseServiceHandler(UTIL.getConfiguration(),<a name="line.659"></a>
 <span class="sourceLineNo">660</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.660"></a>
 <span class="sourceLineNo">661</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.661"></a>
 <span class="sourceLineNo">662</span>    try {<a name="line.662"></a>
@@ -695,8 +695,8 @@
 <span class="sourceLineNo">687</span>   * the checkAndPut succeeds.<a name="line.687"></a>
 <span class="sourceLineNo">688</span>   */<a name="line.688"></a>
 <span class="sourceLineNo">689</span>  public static void doTestCheckAndPut() throws Exception {<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.690"></a>
-<span class="sourceLineNo">691</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.691"></a>
+<span class="sourceLineNo">690</span>    ThriftHBaseServiceHandler handler =<a name="line.690"></a>
+<span class="sourceLineNo">691</span>      new ThriftHBaseServiceHandler(UTIL.getConfiguration(),<a name="line.691"></a>
 <span class="sourceLineNo">692</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.692"></a>
 <span class="sourceLineNo">693</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.693"></a>
 <span class="sourceLineNo">694</span>    try {<a name="line.694"></a>
@@ -737,8 +737,8 @@
 <span class="sourceLineNo">729</span><a name="line.729"></a>
 <span class="sourceLineNo">730</span>    Configuration conf = UTIL.getConfiguration();<a name="line.730"></a>
 <span class="sourceLineNo">731</span>    ThriftMetrics metrics = getMetrics(conf);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    ThriftServerRunner.HBaseHandler hbaseHandler =<a name="line.732"></a>
-<span class="sourceLineNo">733</span>        new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.733"></a>
+<span class="sourceLineNo">732</span>    ThriftHBaseServiceHandler hbaseHandler =<a name="line.732"></a>
+<span class="sourceLineNo">733</span>        new ThriftHBaseServiceHandler(UTIL.getConfiguration(),<a name="line.733"></a>
 <span class="sourceLineNo">734</span>            UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.734"></a>
 <span class="sourceLineNo">735</span>    Hbase.Iface handler = HbaseHandlerMetricsProxy.newInstance(hbaseHandler, metrics, conf);<a name="line.735"></a>
 <span class="sourceLineNo">736</span><a name="line.736"></a>
@@ -871,10 +871,10 @@
 <span class="sourceLineNo">863</span>   * the scanner.<a name="line.863"></a>
 <span class="sourceLineNo">864</span>   *<a name="line.864"></a>
 <span class="sourceLineNo">865</span>   * @param scannerId the scanner to close<a name="line.865"></a>
-<span class="sourceLineNo">866</span>   * @param handler the HBaseHandler interfacing to HBase<a name="line.866"></a>
+<span class="sourceLineNo">866</span>   * @param handler the HBaseServiceHandler interfacing to HBase<a name="line.866"></a>
 <span class="sourceLineNo">867</span>   */<a name="line.867"></a>
 <span class="sourceLineNo">868</span>  private void closeScanner(<a name="line.868"></a>
-<span class="sourceLineNo">869</span>      int scannerId, ThriftServerRunner.HBaseHandler handler) throws Exception {<a name="line.869"></a>
+<span class="sourceLineNo">869</span>      int scannerId, ThriftHBaseServiceHandler handler) throws Exception {<a name="line.869"></a>
 <span class="sourceLineNo">870</span>    handler.scannerGet(scannerId);<a name="line.870"></a>
 <span class="sourceLineNo">871</span>    handler.scannerClose(scannerId);<a name="line.871"></a>
 <span class="sourceLineNo">872</span>  }<a name="line.872"></a>


[48/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 0463965..b02ba85 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3831,7 +3831,7 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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>"Tue Jan  1 14:43:08 UTC 2019"</code></td>
+<td class="colLast"><code>"Wed Jan  2 14:43:57 UTC 2019"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
@@ -3845,7 +3845,7 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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>"262a737dc52f9624e627fb306255daeb"</code></td>
+<td class="colLast"><code>"d799bef05949064497daae3b1629805b"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.url">
@@ -7055,33 +7055,47 @@
 <td class="colLast"><code>true</code></td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.coprocessor.CoprocessorHost.DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;boolean</code></td>
+<td><code><a href="org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR">DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR</a></code></td>
+<td class="colLast"><code>false</code></td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.coprocessor.CoprocessorHost.DEFAULT_USER_COPROCESSORS_ENABLED">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;boolean</code></td>
 <td><code><a href="org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_USER_COPROCESSORS_ENABLED">DEFAULT_USER_COPROCESSORS_ENABLED</a></code></td>
 <td class="colLast"><code>true</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.coprocessor.CoprocessorHost.MASTER_COPROCESSOR_CONF_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/coprocessor/CoprocessorHost.html#MASTER_COPROCESSOR_CONF_KEY">MASTER_COPROCESSOR_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.coprocessor.master.classes"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.coprocessor.CoprocessorHost.REGION_COPROCESSOR_CONF_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/coprocessor/CoprocessorHost.html#REGION_COPROCESSOR_CONF_KEY">REGION_COPROCESSOR_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.coprocessor.region.classes"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.coprocessor.CoprocessorHost.REGIONSERVER_COPROCESSOR_CONF_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/coprocessor/CoprocessorHost.html#REGIONSERVER_COPROCESSOR_CONF_KEY">REGIONSERVER_COPROCESSOR_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.coprocessor.regionserver.classes"</code></td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.coprocessor.CoprocessorHost.SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/coprocessor/CoprocessorHost.html#SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR">SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR</a></code></td>
+<td class="colLast"><code>"hbase.skip.load.duplicate.table.coprocessor"</code></td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.coprocessor.CoprocessorHost.USER_COPROCESSORS_ENABLED_CONF_KEY">
 <!--   -->
@@ -26381,7 +26395,7 @@
 <ul class="blockList">
 <li class="blockList">
 <table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
-<caption><span>org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/HThreadedSelectorServerArgs.html" title="class in org.apache.hadoop.hbase.thrift">HThreadedSelectorServerArgs</a></span><span class="tabEnd">&nbsp;</span></caption>
+<caption><span>org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift">Constants</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>
 <th scope="col">Constant Field</th>
@@ -26389,429 +26403,445 @@
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.HThreadedSelectorServerArgs.ACCEPT_POLICY_CONF_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.BACKLOG_CONF_DEAFULT">
 <!--   -->
-</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/HThreadedSelectorServerArgs.html#ACCEPT_POLICY_CONF_KEY">ACCEPT_POLICY_CONF_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.accept.policy"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#BACKLOG_CONF_DEAFULT">BACKLOG_CONF_DEAFULT</a></code></td>
+<td class="colLast"><code>0</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.HThreadedSelectorServerArgs.ACCEPT_QUEUE_SIZE_PER_THREAD_CONF_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.BACKLOG_CONF_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/HThreadedSelectorServerArgs.html#ACCEPT_QUEUE_SIZE_PER_THREAD_CONF_KEY">ACCEPT_QUEUE_SIZE_PER_THREAD_CONF_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.accept.queue.size.per.selector"</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#BACKLOG_CONF_KEY">BACKLOG_CONF_KEY</a></code></td>
+<td class="colLast"><code>"hbase.regionserver.thrift.backlog"</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.HThreadedSelectorServerArgs.SELECTOR_THREADS_CONF_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.BIND_CONF_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/HThreadedSelectorServerArgs.html#SELECTOR_THREADS_CONF_KEY">SELECTOR_THREADS_CONF_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.selector.threads"</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#BIND_CONF_KEY">BIND_CONF_KEY</a></code></td>
+<td class="colLast"><code>"hbase.regionserver.thrift.ipaddress"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.HThreadedSelectorServerArgs.STOP_TIMEOUT_CONF_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.BIND_OPTION">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/HThreadedSelectorServerArgs.html#STOP_TIMEOUT_CONF_KEY">STOP_TIMEOUT_CONF_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.stop.timeout.seconds"</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#BIND_OPTION">BIND_OPTION</a></code></td>
+<td class="colLast"><code>"bind"</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.HThreadedSelectorServerArgs.WORKER_THREADS_CONF_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.COALESCE_INC_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/HThreadedSelectorServerArgs.html#WORKER_THREADS_CONF_KEY">WORKER_THREADS_CONF_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.worker.threads"</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#COALESCE_INC_KEY">COALESCE_INC_KEY</a></code></td>
+<td class="colLast"><code>"hbase.regionserver.thrift.coalesceIncrement"</code></td>
 </tr>
-</tbody>
-</table>
-</li>
-<li class="blockList">
-<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
-<caption><span>org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/HttpAuthenticationException.html" title="class in org.apache.hadoop.hbase.thrift">HttpAuthenticationException</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th scope="col">Constant Field</th>
-<th class="colLast" scope="col">Value</th>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.COMPACT_CONF_DEFAULT">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;boolean</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#COMPACT_CONF_DEFAULT">COMPACT_CONF_DEFAULT</a></code></td>
+<td class="colLast"><code>false</code></td>
 </tr>
-<tbody>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.HttpAuthenticationException.serialVersionUID">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.COMPACT_CONF_KEY">
 <!--   -->
-</a><code>private&nbsp;static&nbsp;final&nbsp;long</code></td>
-<td><code><a href="org/apache/hadoop/hbase/thrift/HttpAuthenticationException.html#serialVersionUID">serialVersionUID</a></code></td>
-<td class="colLast"><code>0L</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#COMPACT_CONF_KEY">COMPACT_CONF_KEY</a></code></td>
+<td class="colLast"><code>"hbase.regionserver.thrift.compact"</code></td>
 </tr>
-</tbody>
-</table>
-</li>
-<li class="blockList">
-<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
-<caption><span>org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/IncrementCoalescer.html" title="class in org.apache.hadoop.hbase.thrift">IncrementCoalescer</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th scope="col">Constant Field</th>
-<th class="colLast" scope="col">Value</th>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.COMPACT_OPTION">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#COMPACT_OPTION">COMPACT_OPTION</a></code></td>
+<td class="colLast"><code>"compact"</code></td>
 </tr>
-<tbody>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.IncrementCoalescer.CORE_POOL_SIZE">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.DEFAULT_BIND_ADDR">
 <!--   -->
-</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
-<td><code><a href="org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#CORE_POOL_SIZE">CORE_POOL_SIZE</a></code></td>
-<td class="colLast"><code>1</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#DEFAULT_BIND_ADDR">DEFAULT_BIND_ADDR</a></code></td>
+<td class="colLast"><code>"0.0.0.0"</code></td>
 </tr>
-</tbody>
-</table>
-</li>
-<li class="blockList">
-<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
-<caption><span>org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/MetricsThriftServerSource.html" title="interface in org.apache.hadoop.hbase.thrift">MetricsThriftServerSource</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th scope="col">Constant Field</th>
-<th class="colLast" scope="col">Value</th>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.DEFAULT_HTTP_MAX_HEADER_SIZE">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#DEFAULT_HTTP_MAX_HEADER_SIZE">DEFAULT_HTTP_MAX_HEADER_SIZE</a></code></td>
+<td class="colLast"><code>65536</code></td>
 </tr>
-<tbody>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSource.ACTIVE_WORKER_COUNT_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.DEFAULT_LISTEN_PORT">
 <!--   -->
-</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSource.html#ACTIVE_WORKER_COUNT_KEY">ACTIVE_WORKER_COUNT_KEY</a></code></td>
-<td class="colLast"><code>"numActiveWorkers"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#DEFAULT_LISTEN_PORT">DEFAULT_LISTEN_PORT</a></code></td>
+<td class="colLast"><code>9090</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSource.BATCH_GET_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.FRAMED_CONF_DEFAULT">
 <!--   -->
-</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSource.html#BATCH_GET_KEY">BATCH_GET_KEY</a></code></td>
-<td class="colLast"><code>"batchGet"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;boolean</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#FRAMED_CONF_DEFAULT">FRAMED_CONF_DEFAULT</a></code></td>
+<td class="colLast"><code>false</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSource.BATCH_MUTATE_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.FRAMED_CONF_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSource.html#BATCH_MUTATE_KEY">BATCH_MUTATE_KEY</a></code></td>
-<td class="colLast"><code>"batchMutate"</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#FRAMED_CONF_KEY">FRAMED_CONF_KEY</a></code></td>
+<td class="colLast"><code>"hbase.regionserver.thrift.framed"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSource.CALL_QUEUE_LEN_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.FRAMED_OPTION">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSource.html#CALL_QUEUE_LEN_KEY">CALL_QUEUE_LEN_KEY</a></code></td>
-<td class="colLast"><code>"callQueueLen"</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#FRAMED_OPTION">FRAMED_OPTION</a></code></td>
+<td class="colLast"><code>"framed"</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSource.SLOW_THRIFT_CALL_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.HTTP_MAX_THREADS_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSource.html#SLOW_THRIFT_CALL_KEY">SLOW_THRIFT_CALL_KEY</a></code></td>
-<td class="colLast"><code>"slowThriftCall"</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#HTTP_MAX_THREADS_KEY">HTTP_MAX_THREADS_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.http_threads.max"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSource.THRIFT_CALL_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.HTTP_MAX_THREADS_KEY_DEFAULT">
 <!--   -->
-</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSource.html#THRIFT_CALL_KEY">THRIFT_CALL_KEY</a></code></td>
-<td class="colLast"><code>"thriftCall"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#HTTP_MAX_THREADS_KEY_DEFAULT">HTTP_MAX_THREADS_KEY_DEFAULT</a></code></td>
+<td class="colLast"><code>100</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSource.TIME_IN_QUEUE_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.HTTP_MIN_THREADS_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSource.html#TIME_IN_QUEUE_KEY">TIME_IN_QUEUE_KEY</a></code></td>
-<td class="colLast"><code>"timeInQueue"</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#HTTP_MIN_THREADS_KEY">HTTP_MIN_THREADS_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.http_threads.min"</code></td>
 </tr>
-</tbody>
-</table>
-</li>
-<li class="blockList">
-<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
-<caption><span>org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactory.html" title="interface in org.apache.hadoop.hbase.thrift">MetricsThriftServerSourceFactory</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th scope="col">Constant Field</th>
-<th class="colLast" scope="col">Value</th>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.HTTP_MIN_THREADS_KEY_DEFAULT">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#HTTP_MIN_THREADS_KEY_DEFAULT">HTTP_MIN_THREADS_KEY_DEFAULT</a></code></td>
+<td class="colLast"><code>2</code></td>
 </tr>
-<tbody>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSourceFactory.METRICS_DESCRIPTION">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.INFOPORT_OPTION">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSourceFactory.html#METRICS_DESCRIPTION">METRICS_DESCRIPTION</a></code></td>
-<td class="colLast"><code>"Thrift Server Metrics"</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#INFOPORT_OPTION">INFOPORT_OPTION</a></code></td>
+<td class="colLast"><code>"infoport"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSourceFactory.METRICS_NAME">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.KEEP_ALIVE_SEC_OPTION">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSourceFactory.html#METRICS_NAME">METRICS_NAME</a></code></td>
-<td class="colLast"><code>"Thrift"</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#KEEP_ALIVE_SEC_OPTION">KEEP_ALIVE_SEC_OPTION</a></code></td>
+<td class="colLast"><code>"keepAliveSec"</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSourceFactory.THRIFT_ONE_JMX_CONTEXT">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.MAX_FRAME_SIZE_CONF_DEFAULT">
 <!--   -->
-</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSourceFactory.html#THRIFT_ONE_JMX_CONTEXT">THRIFT_ONE_JMX_CONTEXT</a></code></td>
-<td class="colLast"><code>"Thrift,sub=ThriftOne"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#MAX_FRAME_SIZE_CONF_DEFAULT">MAX_FRAME_SIZE_CONF_DEFAULT</a></code></td>
+<td class="colLast"><code>2</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSourceFactory.THRIFT_ONE_METRICS_CONTEXT">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.MAX_FRAME_SIZE_CONF_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSourceFactory.html#THRIFT_ONE_METRICS_CONTEXT">THRIFT_ONE_METRICS_CONTEXT</a></code></td>
-<td class="colLast"><code>"thrift-one"</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#MAX_FRAME_SIZE_CONF_KEY">MAX_FRAME_SIZE_CONF_KEY</a></code></td>
+<td class="colLast"><code>"hbase.regionserver.thrift.framed.max_frame_size_in_mb"</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSourceFactory.THRIFT_TWO_JMX_CONTEXT">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.MAX_QUEUE_SIZE_OPTION">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSourceFactory.html#THRIFT_TWO_JMX_CONTEXT">THRIFT_TWO_JMX_CONTEXT</a></code></td>
-<td class="colLast"><code>"Thrift,sub=ThriftTwo"</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#MAX_QUEUE_SIZE_OPTION">MAX_QUEUE_SIZE_OPTION</a></code></td>
+<td class="colLast"><code>"queue"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSourceFactory.THRIFT_TWO_METRICS_CONTEXT">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.MAX_WORKERS_OPTION">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSourceFactory.html#THRIFT_TWO_METRICS_CONTEXT">THRIFT_TWO_METRICS_CONTEXT</a></code></td>
-<td class="colLast"><code>"thrift-two"</code></td>
-</tr>
-</tbody>
-</table>
-</li>
-<li class="blockList">
-<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
-<caption><span>org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.html" title="class in org.apache.hadoop.hbase.thrift">TBoundedThreadPoolServer</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th scope="col">Constant Field</th>
-<th class="colLast" scope="col">Value</th>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#MAX_WORKERS_OPTION">MAX_WORKERS_OPTION</a></code></td>
+<td class="colLast"><code>"workers"</code></td>
 </tr>
-<tbody>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.TBoundedThreadPoolServer.DEFAULT_MAX_QUEUED_REQUESTS">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.MIN_WORKERS_OPTION">
 <!--   -->
-</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
-<td><code><a href="org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.html#DEFAULT_MAX_QUEUED_REQUESTS">DEFAULT_MAX_QUEUED_REQUESTS</a></code></td>
-<td class="colLast"><code>1000</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#MIN_WORKERS_OPTION">MIN_WORKERS_OPTION</a></code></td>
+<td class="colLast"><code>"minWorkers"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.TBoundedThreadPoolServer.DEFAULT_MAX_WORKER_THREADS">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.PORT_CONF_KEY">
 <!--   -->
-</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
-<td><code><a href="org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.html#DEFAULT_MAX_WORKER_THREADS">DEFAULT_MAX_WORKER_THREADS</a></code></td>
-<td class="colLast"><code>1000</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#PORT_CONF_KEY">PORT_CONF_KEY</a></code></td>
+<td class="colLast"><code>"hbase.regionserver.thrift.port"</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.TBoundedThreadPoolServer.DEFAULT_MIN_WORKER_THREADS">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.PORT_OPTION">
 <!--   -->
-</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
-<td><code><a href="org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.html#DEFAULT_MIN_WORKER_THREADS">DEFAULT_MIN_WORKER_THREADS</a></code></td>
-<td class="colLast"><code>16</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#PORT_OPTION">PORT_OPTION</a></code></td>
+<td class="colLast"><code>"port"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.TBoundedThreadPoolServer.DEFAULT_THREAD_KEEP_ALIVE_TIME_SEC">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.READ_TIMEOUT_OPTION">
 <!--   -->
-</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
-<td><code><a href="org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.html#DEFAULT_THREAD_KEEP_ALIVE_TIME_SEC">DEFAULT_THREAD_KEEP_ALIVE_TIME_SEC</a></code></td>
-<td class="colLast"><code>60</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#READ_TIMEOUT_OPTION">READ_TIMEOUT_OPTION</a></code></td>
+<td class="colLast"><code>"readTimeout"</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.TBoundedThreadPoolServer.MAX_QUEUED_REQUESTS_CONF_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.READONLY_OPTION">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/TBoundedThreadPoolServer.html#MAX_QUEUED_REQUESTS_CONF_KEY">MAX_QUEUED_REQUESTS_CONF_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.maxQueuedRequests"</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#READONLY_OPTION">READONLY_OPTION</a></code></td>
+<td class="colLast"><code>"readonly"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.TBoundedThreadPoolServer.MAX_WORKER_THREADS_CONF_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.SELECTOR_NUM_OPTION">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/TBoundedThreadPoolServer.html#MAX_WORKER_THREADS_CONF_KEY">MAX_WORKER_THREADS_CONF_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.maxWorkerThreads"</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#SELECTOR_NUM_OPTION">SELECTOR_NUM_OPTION</a></code></td>
+<td class="colLast"><code>"selectors"</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.TBoundedThreadPoolServer.MIN_WORKER_THREADS_CONF_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.SERVER_TYPE_CONF_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/TBoundedThreadPoolServer.html#MIN_WORKER_THREADS_CONF_KEY">MIN_WORKER_THREADS_CONF_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.minWorkerThreads"</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#SERVER_TYPE_CONF_KEY">SERVER_TYPE_CONF_KEY</a></code></td>
+<td class="colLast"><code>"hbase.regionserver.thrift.server.type"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.TBoundedThreadPoolServer.QUEUE_FULL_MSG">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_DNS_INTERFACE_KEY">
 <!--   -->
-</a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/TBoundedThreadPoolServer.html#QUEUE_FULL_MSG">QUEUE_FULL_MSG</a></code></td>
-<td class="colLast"><code>"Queue is full, closing connection"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_DNS_INTERFACE_KEY">THRIFT_DNS_INTERFACE_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.dns.interface"</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.TBoundedThreadPoolServer.THREAD_KEEP_ALIVE_TIME_SEC_CONF_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_DNS_NAMESERVER_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/TBoundedThreadPoolServer.html#THREAD_KEEP_ALIVE_TIME_SEC_CONF_KEY">THREAD_KEEP_ALIVE_TIME_SEC_CONF_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.threadKeepAliveTimeSec"</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#THRIFT_DNS_NAMESERVER_KEY">THRIFT_DNS_NAMESERVER_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.dns.nameserver"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.TBoundedThreadPoolServer.TIME_TO_WAIT_AFTER_SHUTDOWN_MS">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_FILTERS">
 <!--   -->
-</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
-<td><code><a href="org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.html#TIME_TO_WAIT_AFTER_SHUTDOWN_MS">TIME_TO_WAIT_AFTER_SHUTDOWN_MS</a></code></td>
-<td class="colLast"><code>5000</code></td>
-</tr>
-</tbody>
-</table>
-</li>
-<li class="blockList">
-<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
-<caption><span>org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHttpServlet</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th scope="col">Constant Field</th>
-<th class="colLast" scope="col">Value</th>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_FILTERS">THRIFT_FILTERS</a></code></td>
+<td class="colLast"><code>"hbase.thrift.filters"</code></td>
 </tr>
-<tbody>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftHttpServlet.NEGOTIATE">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_HTTP_ALLOW_OPTIONS_METHOD">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftHttpServlet.html#NEGOTIATE">NEGOTIATE</a></code></td>
-<td class="colLast"><code>"Negotiate"</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#THRIFT_HTTP_ALLOW_OPTIONS_METHOD">THRIFT_HTTP_ALLOW_OPTIONS_METHOD</a></code></td>
+<td class="colLast"><code>"hbase.thrift.http.allow.options.method"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftHttpServlet.serialVersionUID">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT">
 <!--   -->
-</a><code>private&nbsp;static&nbsp;final&nbsp;long</code></td>
-<td><code><a href="org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html#serialVersionUID">serialVersionUID</a></code></td>
-<td class="colLast"><code>1L</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;boolean</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT">THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT</a></code></td>
+<td class="colLast"><code>false</code></td>
 </tr>
-</tbody>
-</table>
-</li>
-<li class="blockList">
-<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
-<caption><span>org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th scope="col">Constant Field</th>
-<th class="colLast" scope="col">Value</th>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_INFO_SERVER_BINDING_ADDRESS">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_INFO_SERVER_BINDING_ADDRESS">THRIFT_INFO_SERVER_BINDING_ADDRESS</a></code></td>
+<td class="colLast"><code>"hbase.thrift.info.bindAddress"</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_INFO_SERVER_BINDING_ADDRESS_DEFAULT">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_INFO_SERVER_BINDING_ADDRESS_DEFAULT">THRIFT_INFO_SERVER_BINDING_ADDRESS_DEFAULT</a></code></td>
+<td class="colLast"><code>"0.0.0.0"</code></td>
 </tr>
-<tbody>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftMetrics.DEFAULT_SLOW_RESPONSE_NANO_SEC">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_INFO_SERVER_PORT">
 <!--   -->
-</a><code>public&nbsp;static&nbsp;final&nbsp;long</code></td>
-<td><code><a href="org/apache/hadoop/hbase/thrift/ThriftMetrics.html#DEFAULT_SLOW_RESPONSE_NANO_SEC">DEFAULT_SLOW_RESPONSE_NANO_SEC</a></code></td>
-<td class="colLast"><code>10000000L</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_INFO_SERVER_PORT">THRIFT_INFO_SERVER_PORT</a></code></td>
+<td class="colLast"><code>"hbase.thrift.info.port"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftMetrics.SLOW_RESPONSE_NANO_SEC">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_INFO_SERVER_PORT_DEFAULT">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#THRIFT_INFO_SERVER_PORT_DEFAULT">THRIFT_INFO_SERVER_PORT_DEFAULT</a></code></td>
+<td class="colLast"><code>9095</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_KERBEROS_PRINCIPAL_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftMetrics.html#SLOW_RESPONSE_NANO_SEC">SLOW_RESPONSE_NANO_SEC</a></code></td>
-<td class="colLast"><code>"hbase.thrift.slow.response.nano.second"</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#THRIFT_KERBEROS_PRINCIPAL_KEY">THRIFT_KERBEROS_PRINCIPAL_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.kerberos.principal"</code></td>
 </tr>
-</tbody>
-</table>
-</li>
-<li class="blockList">
-<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
-<caption><span>org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th scope="col">Constant Field</th>
-<th class="colLast" scope="col">Value</th>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_KEYTAB_FILE_KEY">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_KEYTAB_FILE_KEY">THRIFT_KEYTAB_FILE_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.keytab.file"</code></td>
 </tr>
-<tbody>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServer.BIND_OPTION">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_QOP_KEY">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServer.html#BIND_OPTION">BIND_OPTION</a></code></td>
-<td class="colLast"><code>"bind"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_QOP_KEY">THRIFT_QOP_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.security.qop"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServer.COMPACT_OPTION">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_QUEUE_SIZE">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServer.html#COMPACT_OPTION">COMPACT_OPTION</a></code></td>
-<td class="colLast"><code>"compact"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_QUEUE_SIZE">THRIFT_QUEUE_SIZE</a></code></td>
+<td class="colLast"><code>"hbase.thrift.queue.size"</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServer.DEFAULT_BIND_ADDR">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_QUEUE_SIZE_DEFAULT">
 <!--   -->
-</a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServer.html#DEFAULT_BIND_ADDR">DEFAULT_BIND_ADDR</a></code></td>
-<td class="colLast"><code>"0.0.0.0"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#THRIFT_QUEUE_SIZE_DEFAULT">THRIFT_QUEUE_SIZE_DEFAULT</a></code></td>
+<td class="colLast"><code>2147483647</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServer.DEFAULT_LISTEN_PORT">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_READONLY_ENABLED">
 <!--   -->
-</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
-<td><code><a href="org/apache/hadoop/hbase/thrift/ThriftServer.html#DEFAULT_LISTEN_PORT">DEFAULT_LISTEN_PORT</a></code></td>
-<td class="colLast"><code>9090</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_READONLY_ENABLED">THRIFT_READONLY_ENABLED</a></code></td>
+<td class="colLast"><code>"hbase.thrift.readonly"</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServer.FRAMED_OPTION">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_READONLY_ENABLED_DEFAULT">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServer.html#FRAMED_OPTION">FRAMED_OPTION</a></code></td>
-<td class="colLast"><code>"framed"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;boolean</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#THRIFT_READONLY_ENABLED_DEFAULT">THRIFT_READONLY_ENABLED_DEFAULT</a></code></td>
+<td class="colLast"><code>false</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServer.INFOPORT_OPTION">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_SELECTOR_NUM">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServer.html#INFOPORT_OPTION">INFOPORT_OPTION</a></code></td>
-<td class="colLast"><code>"infoport"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_SELECTOR_NUM">THRIFT_SELECTOR_NUM</a></code></td>
+<td class="colLast"><code>"hbase.thrift.selector.num"</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServer.KEEP_ALIVE_SEC_OPTION">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT">
 <!--   -->
-</a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServer.html#KEEP_ALIVE_SEC_OPTION">KEEP_ALIVE_SEC_OPTION</a></code></td>
-<td class="colLast"><code>"keepAliveSec"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/Constants.html#THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT">THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT</a></code></td>
+<td class="colLast"><code>60000</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServer.MAX_QUEUE_SIZE_OPTION">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY">
 <!--   -->
-</a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServer.html#MAX_QUEUE_SIZE_OPTION">MAX_QUEUE_SIZE_OPTION</a></code></td>
-<td class="colLast"><code>"queue"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY">THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.server.socket.read.timeout"</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServer.MAX_WORKERS_OPTION">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_SPNEGO_KEYTAB_FILE_KEY">
 <!--   -->
-</a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServer.html#MAX_WORKERS_OPTION">MAX_WORKERS_OPTION</a></code></td>
-<td class="colLast"><code>"workers"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_SPNEGO_KEYTAB_FILE_KEY">THRIFT_SPNEGO_KEYTAB_FILE_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.spnego.keytab.file"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServer.MIN_WORKERS_OPTION">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_SPNEGO_PRINCIPAL_KEY">
 <!--   -->
-</a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServer.html#MIN_WORKERS_OPTION">MIN_WORKERS_OPTION</a></code></td>
-<td class="colLast"><code>"minWorkers"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_SPNEGO_PRINCIPAL_KEY">THRIFT_SPNEGO_PRINCIPAL_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.spnego.principal"</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServer.PORT_OPTION">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_ENABLED_KEY">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServer.html#PORT_OPTION">PORT_OPTION</a></code></td>
-<td class="colLast"><code>"port"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_SSL_ENABLED_KEY">THRIFT_SSL_ENABLED_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.ssl.enabled"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServer.READ_TIMEOUT_OPTION">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY">
 <!--   -->
-</a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServer.html#READ_TIMEOUT_OPTION">READ_TIMEOUT_OPTION</a></code></td>
-<td class="colLast"><code>"readTimeout"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY">THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.ssl.exclude.cipher.suites"</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY">THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.ssl.exclude.protocols"</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY">THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.ssl.include.cipher.suites"</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_INCLUDE_PROTOCOLS_KEY">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_SSL_INCLUDE_PROTOCOLS_KEY">THRIFT_SSL_INCLUDE_PROTOCOLS_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.ssl.include.protocols"</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY">THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.ssl.keystore.keypassword"</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_KEYSTORE_PASSWORD_KEY">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_SSL_KEYSTORE_PASSWORD_KEY">THRIFT_SSL_KEYSTORE_PASSWORD_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.ssl.keystore.password"</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_KEYSTORE_STORE_KEY">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_SSL_KEYSTORE_STORE_KEY">THRIFT_SSL_KEYSTORE_STORE_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.ssl.keystore.store"</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.THRIFT_SUPPORT_PROXYUSER_KEY">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#THRIFT_SUPPORT_PROXYUSER_KEY">THRIFT_SUPPORT_PROXYUSER_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.support.proxyuser"</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.Constants.USE_HTTP_CONF_KEY">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/Constants.html#USE_HTTP_CONF_KEY">USE_HTTP_CONF_KEY</a></code></td>
+<td class="colLast"><code>"hbase.regionserver.thrift.http"</code></td>
 </tr>
 </tbody>
 </table>
 </li>
 <li class="blockList">
 <table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
-<caption><span>org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner</a></span><span class="tabEnd">&nbsp;</span></caption>
+<caption><span>org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>
 <th scope="col">Constant Field</th>
@@ -26819,242 +26849,307 @@
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.BACKLOG_CONF_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.HBaseServiceHandler.CLEANUP_INTERVAL">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#BACKLOG_CONF_KEY">BACKLOG_CONF_KEY</a></code></td>
-<td class="colLast"><code>"hbase.regionserver.thrift.backlog"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/HBaseServiceHandler.html#CLEANUP_INTERVAL">CLEANUP_INTERVAL</a></code></td>
+<td class="colLast"><code>"hbase.thrift.connection.cleanup-interval"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.BIND_CONF_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.HBaseServiceHandler.MAX_IDLETIME">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#BIND_CONF_KEY">BIND_CONF_KEY</a></code></td>
-<td class="colLast"><code>"hbase.regionserver.thrift.ipaddress"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/HBaseServiceHandler.html#MAX_IDLETIME">MAX_IDLETIME</a></code></td>
+<td class="colLast"><code>"hbase.thrift.connection.max-idletime"</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/HThreadedSelectorServerArgs.html" title="class in org.apache.hadoop.hbase.thrift">HThreadedSelectorServerArgs</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
 </tr>
+<tbody>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.COALESCE_INC_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.HThreadedSelectorServerArgs.ACCEPT_POLICY_CONF_KEY">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#COALESCE_INC_KEY">COALESCE_INC_KEY</a></code></td>
-<td class="colLast"><code>"hbase.regionserver.thrift.coalesceIncrement"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/HThreadedSelectorServerArgs.html#ACCEPT_POLICY_CONF_KEY">ACCEPT_POLICY_CONF_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.accept.policy"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.COMPACT_CONF_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.HThreadedSelectorServerArgs.ACCEPT_QUEUE_SIZE_PER_THREAD_CONF_KEY">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#COMPACT_CONF_KEY">COMPACT_CONF_KEY</a></code></td>
-<td class="colLast"><code>"hbase.regionserver.thrift.compact"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/HThreadedSelectorServerArgs.html#ACCEPT_QUEUE_SIZE_PER_THREAD_CONF_KEY">ACCEPT_QUEUE_SIZE_PER_THREAD_CONF_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.accept.queue.size.per.selector"</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.DEFAULT_BIND_ADDR">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.HThreadedSelectorServerArgs.SELECTOR_THREADS_CONF_KEY">
 <!--   -->
-</a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#DEFAULT_BIND_ADDR">DEFAULT_BIND_ADDR</a></code></td>
-<td class="colLast"><code>"0.0.0.0"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/HThreadedSelectorServerArgs.html#SELECTOR_THREADS_CONF_KEY">SELECTOR_THREADS_CONF_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.selector.threads"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.DEFAULT_HTTP_MAX_HEADER_SIZE">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.HThreadedSelectorServerArgs.STOP_TIMEOUT_CONF_KEY">
 <!--   -->
-</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
-<td><code><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#DEFAULT_HTTP_MAX_HEADER_SIZE">DEFAULT_HTTP_MAX_HEADER_SIZE</a></code></td>
-<td class="colLast"><code>65536</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/HThreadedSelectorServerArgs.html#STOP_TIMEOUT_CONF_KEY">STOP_TIMEOUT_CONF_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.stop.timeout.seconds"</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.DEFAULT_LISTEN_PORT">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.HThreadedSelectorServerArgs.WORKER_THREADS_CONF_KEY">
 <!--   -->
-</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
-<td><code><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#DEFAULT_LISTEN_PORT">DEFAULT_LISTEN_PORT</a></code></td>
-<td class="colLast"><code>9090</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/HThreadedSelectorServerArgs.html#WORKER_THREADS_CONF_KEY">WORKER_THREADS_CONF_KEY</a></code></td>
+<td class="colLast"><code>"hbase.thrift.worker.threads"</code></td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.FRAMED_CONF_KEY">
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/HttpAuthenticationException.html" title="class in org.apache.hadoop.hbase.thrift">HttpAuthenticationException</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.HttpAuthenticationException.serialVersionUID">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#FRAMED_CONF_KEY">FRAMED_CONF_KEY</a></code></td>
-<td class="colLast"><code>"hbase.regionserver.thrift.framed"</code></td>
+</a><code>private&nbsp;static&nbsp;final&nbsp;long</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/HttpAuthenticationException.html#serialVersionUID">serialVersionUID</a></code></td>
+<td class="colLast"><code>0L</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/IncrementCoalescer.html" title="class in org.apache.hadoop.hbase.thrift">IncrementCoalescer</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
 </tr>
+<tbody>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.HREGION_VERSION">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.IncrementCoalescer.CORE_POOL_SIZE">
 <!--   -->
-</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
-<td><code><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#HREGION_VERSION">HREGION_VERSION</a></code></td>
+</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#CORE_POOL_SIZE">CORE_POOL_SIZE</a></code></td>
 <td class="colLast"><code>1</code></td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.HTTP_MAX_THREADS_KEY">
-<!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#HTTP_MAX_THREADS_KEY">HTTP_MAX_THREADS_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.http_threads.max"</code></td>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/MetricsThriftServerSource.html" title="interface in org.apache.hadoop.hbase.thrift">MetricsThriftServerSource</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
 </tr>
+<tbody>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.HTTP_MIN_THREADS_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSource.ACTIVE_WORKER_COUNT_KEY">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#HTTP_MIN_THREADS_KEY">HTTP_MIN_THREADS_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.http_threads.min"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSource.html#ACTIVE_WORKER_COUNT_KEY">ACTIVE_WORKER_COUNT_KEY</a></code></td>
+<td class="colLast"><code>"numActiveWorkers"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.MAX_FRAME_SIZE_CONF_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSource.BATCH_GET_KEY">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#MAX_FRAME_SIZE_CONF_KEY">MAX_FRAME_SIZE_CONF_KEY</a></code></td>
-<td class="colLast"><code>"hbase.regionserver.thrift.framed.max_frame_size_in_mb"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSource.html#BATCH_GET_KEY">BATCH_GET_KEY</a></code></td>
+<td class="colLast"><code>"batchGet"</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.PORT_CONF_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSource.BATCH_MUTATE_KEY">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#PORT_CONF_KEY">PORT_CONF_KEY</a></code></td>
-<td class="colLast"><code>"hbase.regionserver.thrift.port"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSource.html#BATCH_MUTATE_KEY">BATCH_MUTATE_KEY</a></code></td>
+<td class="colLast"><code>"batchMutate"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.SERVER_TYPE_CONF_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSource.CALL_QUEUE_LEN_KEY">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#SERVER_TYPE_CONF_KEY">SERVER_TYPE_CONF_KEY</a></code></td>
-<td class="colLast"><code>"hbase.regionserver.thrift.server.type"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSource.html#CALL_QUEUE_LEN_KEY">CALL_QUEUE_LEN_KEY</a></code></td>
+<td class="colLast"><code>"callQueueLen"</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_DNS_INTERFACE_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSource.SLOW_THRIFT_CALL_KEY">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#THRIFT_DNS_INTERFACE_KEY">THRIFT_DNS_INTERFACE_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.dns.interface"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSource.html#SLOW_THRIFT_CALL_KEY">SLOW_THRIFT_CALL_KEY</a></code></td>
+<td class="colLast"><code>"slowThriftCall"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_DNS_NAMESERVER_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSource.THRIFT_CALL_KEY">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#THRIFT_DNS_NAMESERVER_KEY">THRIFT_DNS_NAMESERVER_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.dns.nameserver"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSource.html#THRIFT_CALL_KEY">THRIFT_CALL_KEY</a></code></td>
+<td class="colLast"><code>"thriftCall"</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_KERBEROS_PRINCIPAL_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSource.TIME_IN_QUEUE_KEY">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#THRIFT_KERBEROS_PRINCIPAL_KEY">THRIFT_KERBEROS_PRINCIPAL_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.kerberos.principal"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSource.html#TIME_IN_QUEUE_KEY">TIME_IN_QUEUE_KEY</a></code></td>
+<td class="colLast"><code>"timeInQueue"</code></td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_KEYTAB_FILE_KEY">
-<!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#THRIFT_KEYTAB_FILE_KEY">THRIFT_KEYTAB_FILE_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.keytab.file"</code></td>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactory.html" title="interface in org.apache.hadoop.hbase.thrift">MetricsThriftServerSourceFactory</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
 </tr>
+<tbody>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_QOP_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSourceFactory.METRICS_DESCRIPTION">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#THRIFT_QOP_KEY">THRIFT_QOP_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.security.qop"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSourceFactory.html#METRICS_DESCRIPTION">METRICS_DESCRIPTION</a></code></td>
+<td class="colLast"><code>"Thrift Server Metrics"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSourceFactory.METRICS_NAME">
 <!--   -->
-</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
-<td><code><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT">THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT</a></code></td>
-<td class="colLast"><code>60000</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSourceFactory.html#METRICS_NAME">METRICS_NAME</a></code></td>
+<td class="colLast"><code>"Thrift"</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSourceFactory.THRIFT_ONE_JMX_CONTEXT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY">THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.server.socket.read.timeout"</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactory.html#THRIFT_ONE_JMX_CONTEXT">THRIFT_ONE_JMX_CONTEXT</a></code></td>
+<td class="colLast"><code>"Thrift,sub=ThriftOne"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SPNEGO_KEYTAB_FILE_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSourceFactory.THRIFT_ONE_METRICS_CONTEXT">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#THRIFT_SPNEGO_KEYTAB_FILE_KEY">THRIFT_SPNEGO_KEYTAB_FILE_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.spnego.keytab.file"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSourceFactory.html#THRIFT_ONE_METRICS_CONTEXT">THRIFT_ONE_METRICS_CONTEXT</a></code></td>
+<td class="colLast"><code>"thrift-one"</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SPNEGO_PRINCIPAL_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSourceFactory.THRIFT_TWO_JMX_CONTEXT">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#THRIFT_SPNEGO_PRINCIPAL_KEY">THRIFT_SPNEGO_PRINCIPAL_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.spnego.principal"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSourceFactory.html#THRIFT_TWO_JMX_CONTEXT">THRIFT_TWO_JMX_CONTEXT</a></code></td>
+<td class="colLast"><code>"Thrift,sub=ThriftTwo"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SSL_ENABLED_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.MetricsThriftServerSourceFactory.THRIFT_TWO_METRICS_CONTEXT">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#THRIFT_SSL_ENABLED_KEY">THRIFT_SSL_ENABLED_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.ssl.enabled"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift/MetricsThriftServerSourceFactory.html#THRIFT_TWO_METRICS_CONTEXT">THRIFT_TWO_METRICS_CONTEXT</a></code></td>
+<td class="colLast"><code>"thrift-two"</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.html" title="class in org.apache.hadoop.hbase.thrift">TBoundedThreadPoolServer</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
 </tr>
+<tbody>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.TBoundedThreadPoolServer.DEFAULT_MAX_QUEUED_REQUESTS">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY">THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.ssl.exclude.cipher.suites"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.html#DEFAULT_MAX_QUEUED_REQUESTS">DEFAULT_MAX_QUEUED_REQUESTS</a></code></td>
+<td class="colLast"><code>1000</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift.TBoundedThreadPoolServer.DEFAULT_MAX_WORKER_THREADS">
 <!--   -->
-</a><code>static&nbsp;final&nbsp;<a href="https://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/thrift/ThriftServerRunner.html#THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY">THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY</a></code></td>
-<td class="colLast"><code>"hbase.thrift.ssl.exclude.protocols"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code><

<TRUNCATED>

[23/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/src-html/org/apache/hadoop/hbase/thrift/Constants.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/Constants.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/Constants.html
new file mode 100644
index 0000000..d28d77e
--- /dev/null
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/Constants.html
@@ -0,0 +1,223 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.thrift;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>/**<a name="line.22"></a>
+<span class="sourceLineNo">023</span> * Thrift related constants<a name="line.23"></a>
+<span class="sourceLineNo">024</span> */<a name="line.24"></a>
+<span class="sourceLineNo">025</span>@InterfaceAudience.Private<a name="line.25"></a>
+<span class="sourceLineNo">026</span>public final class Constants {<a name="line.26"></a>
+<span class="sourceLineNo">027</span>  private Constants(){}<a name="line.27"></a>
+<span class="sourceLineNo">028</span><a name="line.28"></a>
+<span class="sourceLineNo">029</span>  public static final int DEFAULT_HTTP_MAX_HEADER_SIZE = 64 * 1024; // 64k<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>  public static final String SERVER_TYPE_CONF_KEY =<a name="line.31"></a>
+<span class="sourceLineNo">032</span>      "hbase.regionserver.thrift.server.type";<a name="line.32"></a>
+<span class="sourceLineNo">033</span><a name="line.33"></a>
+<span class="sourceLineNo">034</span>  public static final String COMPACT_CONF_KEY = "hbase.regionserver.thrift.compact";<a name="line.34"></a>
+<span class="sourceLineNo">035</span>  public static final boolean COMPACT_CONF_DEFAULT = false;<a name="line.35"></a>
+<span class="sourceLineNo">036</span><a name="line.36"></a>
+<span class="sourceLineNo">037</span>  public static final String FRAMED_CONF_KEY = "hbase.regionserver.thrift.framed";<a name="line.37"></a>
+<span class="sourceLineNo">038</span>  public static final boolean FRAMED_CONF_DEFAULT = false;<a name="line.38"></a>
+<span class="sourceLineNo">039</span><a name="line.39"></a>
+<span class="sourceLineNo">040</span>  public static final String MAX_FRAME_SIZE_CONF_KEY =<a name="line.40"></a>
+<span class="sourceLineNo">041</span>      "hbase.regionserver.thrift.framed.max_frame_size_in_mb";<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  public static final int MAX_FRAME_SIZE_CONF_DEFAULT = 2;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>  public static final String COALESCE_INC_KEY = "hbase.regionserver.thrift.coalesceIncrement";<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  public static final String USE_HTTP_CONF_KEY = "hbase.regionserver.thrift.http";<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>  public static final String HTTP_MIN_THREADS_KEY = "hbase.thrift.http_threads.min";<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  public static final int HTTP_MIN_THREADS_KEY_DEFAULT = 2;<a name="line.48"></a>
+<span class="sourceLineNo">049</span><a name="line.49"></a>
+<span class="sourceLineNo">050</span>  public static final String HTTP_MAX_THREADS_KEY = "hbase.thrift.http_threads.max";<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  public static final int HTTP_MAX_THREADS_KEY_DEFAULT = 100;<a name="line.51"></a>
+<span class="sourceLineNo">052</span><a name="line.52"></a>
+<span class="sourceLineNo">053</span>  // ssl related configs<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  public static final String THRIFT_SSL_ENABLED_KEY = "hbase.thrift.ssl.enabled";<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  public static final String THRIFT_SSL_KEYSTORE_STORE_KEY = "hbase.thrift.ssl.keystore.store";<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  public static final String THRIFT_SSL_KEYSTORE_PASSWORD_KEY =<a name="line.56"></a>
+<span class="sourceLineNo">057</span>      "hbase.thrift.ssl.keystore.password";<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  public static final String THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY<a name="line.58"></a>
+<span class="sourceLineNo">059</span>      = "hbase.thrift.ssl.keystore.keypassword";<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  public static final String THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY =<a name="line.60"></a>
+<span class="sourceLineNo">061</span>      "hbase.thrift.ssl.exclude.cipher.suites";<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  public static final String THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY =<a name="line.62"></a>
+<span class="sourceLineNo">063</span>      "hbase.thrift.ssl.include.cipher.suites";<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  public static final String THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY =<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      "hbase.thrift.ssl.exclude.protocols";<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  public static final String THRIFT_SSL_INCLUDE_PROTOCOLS_KEY =<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      "hbase.thrift.ssl.include.protocols";<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>  public static final String THRIFT_SUPPORT_PROXYUSER_KEY = "hbase.thrift.support.proxyuser";<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>  //kerberos related configs<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  public static final String THRIFT_DNS_INTERFACE_KEY = "hbase.thrift.dns.interface";<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  public static final String THRIFT_DNS_NAMESERVER_KEY = "hbase.thrift.dns.nameserver";<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  public static final String THRIFT_KERBEROS_PRINCIPAL_KEY = "hbase.thrift.kerberos.principal";<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  public static final String THRIFT_KEYTAB_FILE_KEY = "hbase.thrift.keytab.file";<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  public static final String THRIFT_SPNEGO_PRINCIPAL_KEY = "hbase.thrift.spnego.principal";<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  public static final String THRIFT_SPNEGO_KEYTAB_FILE_KEY = "hbase.thrift.spnego.keytab.file";<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>   * Amount of time in milliseconds before a server thread will timeout<a name="line.81"></a>
+<span class="sourceLineNo">082</span>   * waiting for client to send data on a connected socket. Currently,<a name="line.82"></a>
+<span class="sourceLineNo">083</span>   * applies only to TBoundedThreadPoolServer<a name="line.83"></a>
+<span class="sourceLineNo">084</span>   */<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  public static final String THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY =<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      "hbase.thrift.server.socket.read.timeout";<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  public static final int THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT = 60000;<a name="line.87"></a>
+<span class="sourceLineNo">088</span><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>   * Thrift quality of protection configuration key. Valid values can be:<a name="line.91"></a>
+<span class="sourceLineNo">092</span>   * auth-conf: authentication, integrity and confidentiality checking<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   * auth-int: authentication and integrity checking<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   * auth: authentication only<a name="line.94"></a>
+<span class="sourceLineNo">095</span>   *<a name="line.95"></a>
+<span class="sourceLineNo">096</span>   * This is used to authenticate the callers and support impersonation.<a name="line.96"></a>
+<span class="sourceLineNo">097</span>   * The thrift server and the HBase cluster must run in secure mode.<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   */<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  public static final String THRIFT_QOP_KEY = "hbase.thrift.security.qop";<a name="line.99"></a>
+<span class="sourceLineNo">100</span><a name="line.100"></a>
+<span class="sourceLineNo">101</span>  public static final String BACKLOG_CONF_KEY = "hbase.regionserver.thrift.backlog";<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  public static final int BACKLOG_CONF_DEAFULT = 0;<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>  public static final String BIND_CONF_KEY = "hbase.regionserver.thrift.ipaddress";<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  public static final String DEFAULT_BIND_ADDR = "0.0.0.0";<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  public static final String PORT_CONF_KEY = "hbase.regionserver.thrift.port";<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  public static final int DEFAULT_LISTEN_PORT = 9090;<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>  public static final String THRIFT_HTTP_ALLOW_OPTIONS_METHOD =<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      "hbase.thrift.http.allow.options.method";<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  public static final boolean THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT = false;<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>  public static final String THRIFT_INFO_SERVER_PORT = "hbase.thrift.info.port";<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  public static final int THRIFT_INFO_SERVER_PORT_DEFAULT = 9095;<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>  public static final String THRIFT_INFO_SERVER_BINDING_ADDRESS = "hbase.thrift.info.bindAddress";<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  public static final String THRIFT_INFO_SERVER_BINDING_ADDRESS_DEFAULT = "0.0.0.0";<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  public static final String THRIFT_QUEUE_SIZE = "hbase.thrift.queue.size";<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  public static final int THRIFT_QUEUE_SIZE_DEFAULT = Integer.MAX_VALUE;<a name="line.121"></a>
+<span class="sourceLineNo">122</span><a name="line.122"></a>
+<span class="sourceLineNo">123</span>  public static final String THRIFT_SELECTOR_NUM = "hbase.thrift.selector.num";<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span>  public static final String THRIFT_FILTERS = "hbase.thrift.filters";<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>  // Command line options<a name="line.127"></a>
+<span class="sourceLineNo">128</span><a name="line.128"></a>
+<span class="sourceLineNo">129</span>  public static final String READ_TIMEOUT_OPTION = "readTimeout";<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  public static final String MIN_WORKERS_OPTION = "minWorkers";<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  public static final String MAX_WORKERS_OPTION = "workers";<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  public static final String MAX_QUEUE_SIZE_OPTION = "queue";<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  public static final String SELECTOR_NUM_OPTION = "selectors";<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  public static final String KEEP_ALIVE_SEC_OPTION = "keepAliveSec";<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  public static final String BIND_OPTION = "bind";<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  public static final String COMPACT_OPTION = "compact";<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  public static final String FRAMED_OPTION = "framed";<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  public static final String PORT_OPTION = "port";<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  public static final String INFOPORT_OPTION = "infoport";<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>  //for thrift2 server<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  public static final String READONLY_OPTION ="readonly";<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>  public static final String THRIFT_READONLY_ENABLED = "hbase.thrift.readonly";<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  public static final boolean THRIFT_READONLY_ENABLED_DEFAULT = false;<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><a name="line.150"></a>
+<span class="sourceLineNo">151</span>}<a name="line.151"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/src-html/org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html
new file mode 100644
index 0000000..9efa820
--- /dev/null
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html
@@ -0,0 +1,162 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> *<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
+<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
+<span class="sourceLineNo">012</span> *<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
+<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
+<span class="sourceLineNo">018</span> */<a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.thrift;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.nio.ByteBuffer;<a name="line.22"></a>
+<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.HBaseInterfaceAudience;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.client.Table;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.util.ConnectionCache;<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><a name="line.32"></a>
+<span class="sourceLineNo">033</span>/**<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * abstract class for HBase handler<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * providing a Connection cache and get table/admin method<a name="line.35"></a>
+<span class="sourceLineNo">036</span> */<a name="line.36"></a>
+<span class="sourceLineNo">037</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.37"></a>
+<span class="sourceLineNo">038</span>public abstract class HBaseServiceHandler {<a name="line.38"></a>
+<span class="sourceLineNo">039</span>  public static final String CLEANUP_INTERVAL = "hbase.thrift.connection.cleanup-interval";<a name="line.39"></a>
+<span class="sourceLineNo">040</span>  public static final String MAX_IDLETIME = "hbase.thrift.connection.max-idletime";<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>  protected Configuration conf;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>  protected final ConnectionCache connectionCache;<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>  public HBaseServiceHandler(final Configuration c,<a name="line.46"></a>
+<span class="sourceLineNo">047</span>      final UserProvider userProvider) throws IOException {<a name="line.47"></a>
+<span class="sourceLineNo">048</span>    this.conf = c;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>    int cleanInterval = conf.getInt(CLEANUP_INTERVAL, 10 * 1000);<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    int maxIdleTime = conf.getInt(MAX_IDLETIME, 10 * 60 * 1000);<a name="line.50"></a>
+<span class="sourceLineNo">051</span>    connectionCache = new ConnectionCache(<a name="line.51"></a>
+<span class="sourceLineNo">052</span>        conf, userProvider, cleanInterval, maxIdleTime);<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  }<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  protected ThriftMetrics metrics = null;<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  public void initMetrics(ThriftMetrics metrics) {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    this.metrics = metrics;<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>  public void setEffectiveUser(String effectiveUser) {<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    connectionCache.setEffectiveUser(effectiveUser);<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  }<a name="line.63"></a>
+<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>   * Obtain HBaseAdmin. Creates the instance if it is not already created.<a name="line.66"></a>
+<span class="sourceLineNo">067</span>   */<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  protected Admin getAdmin() throws IOException {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    return connectionCache.getAdmin();<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>  /**<a name="line.72"></a>
+<span class="sourceLineNo">073</span>   * Creates and returns a Table instance from a given table name.<a name="line.73"></a>
+<span class="sourceLineNo">074</span>   *<a name="line.74"></a>
+<span class="sourceLineNo">075</span>   * @param tableName<a name="line.75"></a>
+<span class="sourceLineNo">076</span>   *          name of table<a name="line.76"></a>
+<span class="sourceLineNo">077</span>   * @return Table object<a name="line.77"></a>
+<span class="sourceLineNo">078</span>   * @throws IOException if getting the table fails<a name="line.78"></a>
+<span class="sourceLineNo">079</span>   */<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  protected Table getTable(final byte[] tableName) throws IOException {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    String table = Bytes.toString(tableName);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    return connectionCache.getTable(table);<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>  protected Table getTable(final ByteBuffer tableName) throws IOException {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    return getTable(Bytes.getBytes(tableName));<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><a name="line.89"></a>
+<span class="sourceLineNo">090</span>}<a name="line.90"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 c61210b..2676040 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html
@@ -33,63 +33,69 @@
 <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.thrift.generated.Hbase;<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.slf4j.Logger;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.slf4j.LoggerFactory;<a name="line.30"></a>
-<span class="sourceLineNo">031</span><a name="line.31"></a>
-<span class="sourceLineNo">032</span>/**<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * Converts a Hbase.Iface using InvocationHandler so that it reports process<a name="line.33"></a>
-<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 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>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>  private final Hbase.Iface handler;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>  private final ThriftMetrics metrics;<a name="line.43"></a>
-<span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>  public static Hbase.Iface newInstance(Hbase.Iface handler,<a name="line.45"></a>
-<span class="sourceLineNo">046</span>                                        ThriftMetrics metrics,<a name="line.46"></a>
-<span class="sourceLineNo">047</span>                                        Configuration conf) {<a name="line.47"></a>
-<span class="sourceLineNo">048</span>    return (Hbase.Iface) Proxy.newProxyInstance(<a name="line.48"></a>
-<span class="sourceLineNo">049</span>        handler.getClass().getClassLoader(),<a name="line.49"></a>
-<span class="sourceLineNo">050</span>        new Class[]{Hbase.Iface.class},<a name="line.50"></a>
-<span class="sourceLineNo">051</span>        new HbaseHandlerMetricsProxy(handler, metrics, conf));<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>  private HbaseHandlerMetricsProxy(<a name="line.54"></a>
-<span class="sourceLineNo">055</span>      Hbase.Iface handler, ThriftMetrics metrics, Configuration conf) {<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    this.handler = handler;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    this.metrics = metrics;<a name="line.57"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.thrift2.generated.THBaseService;<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> * Converts a Hbase.Iface using InvocationHandler so that it reports process<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * time of each call to ThriftMetrics.<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 final class HbaseHandlerMetricsProxy implements InvocationHandler {<a name="line.36"></a>
+<span class="sourceLineNo">037</span><a name="line.37"></a>
+<span class="sourceLineNo">038</span>  private final Object handler;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>  private final ThriftMetrics metrics;<a name="line.39"></a>
+<span class="sourceLineNo">040</span><a name="line.40"></a>
+<span class="sourceLineNo">041</span>  public static Hbase.Iface newInstance(Hbase.Iface handler,<a name="line.41"></a>
+<span class="sourceLineNo">042</span>                                        ThriftMetrics metrics,<a name="line.42"></a>
+<span class="sourceLineNo">043</span>                                        Configuration conf) {<a name="line.43"></a>
+<span class="sourceLineNo">044</span>    return (Hbase.Iface) Proxy.newProxyInstance(<a name="line.44"></a>
+<span class="sourceLineNo">045</span>        handler.getClass().getClassLoader(),<a name="line.45"></a>
+<span class="sourceLineNo">046</span>        new Class[]{Hbase.Iface.class},<a name="line.46"></a>
+<span class="sourceLineNo">047</span>        new HbaseHandlerMetricsProxy(handler, metrics, conf));<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  }<a name="line.48"></a>
+<span class="sourceLineNo">049</span><a name="line.49"></a>
+<span class="sourceLineNo">050</span>  // for thrift 2<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  public static THBaseService.Iface newInstance(THBaseService.Iface handler,<a name="line.51"></a>
+<span class="sourceLineNo">052</span>      ThriftMetrics metrics,<a name="line.52"></a>
+<span class="sourceLineNo">053</span>      Configuration conf) {<a name="line.53"></a>
+<span class="sourceLineNo">054</span>    return (THBaseService.Iface) Proxy.newProxyInstance(<a name="line.54"></a>
+<span class="sourceLineNo">055</span>        handler.getClass().getClassLoader(),<a name="line.55"></a>
+<span class="sourceLineNo">056</span>        new Class[]{THBaseService.Iface.class},<a name="line.56"></a>
+<span class="sourceLineNo">057</span>        new HbaseHandlerMetricsProxy(handler, metrics, conf));<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>  @Override<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  public Object invoke(Object proxy, Method m, Object[] args)<a name="line.61"></a>
-<span class="sourceLineNo">062</span>      throws Throwable {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    Object result;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    long start = now();<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    try {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      result = m.invoke(handler, args);<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    } catch (InvocationTargetException e) {<a name="line.67"></a>
-<span class="sourceLineNo">068</span>      metrics.exception(e.getCause());<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      throw e.getTargetException();<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    } catch (Exception e) {<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      metrics.exception(e);<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      throw new RuntimeException(<a name="line.72"></a>
-<span class="sourceLineNo">073</span>          "unexpected invocation exception: " + e.getMessage());<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    } finally {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      long processTime = now() - start;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      metrics.incMethodTime(m.getName(), processTime);<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    }<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    return result;<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>  private static long now() {<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    return System.nanoTime();<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">060</span>  private HbaseHandlerMetricsProxy(<a name="line.60"></a>
+<span class="sourceLineNo">061</span>      Object handler, ThriftMetrics metrics, Configuration conf) {<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    this.handler = handler;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    this.metrics = metrics;<a name="line.63"></a>
+<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>  @Override<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  public Object invoke(Object proxy, Method m, Object[] args)<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      throws Throwable {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    Object result;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    long start = now();<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    try {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      result = m.invoke(handler, args);<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    } catch (InvocationTargetException e) {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      metrics.exception(e.getCause());<a name="line.74"></a>
+<span class="sourceLineNo">075</span>      throw e.getTargetException();<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    } catch (Exception e) {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      metrics.exception(e);<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      throw new RuntimeException(<a name="line.78"></a>
+<span class="sourceLineNo">079</span>          "unexpected invocation exception: " + e.getMessage());<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    } finally {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      long processTime = now() - start;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>      metrics.incMethodTime(m.getName(), processTime);<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    }<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    return result;<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>  private static long now() {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    return System.nanoTime();<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ImplType.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ImplType.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ImplType.html
new file mode 100644
index 0000000..2749bfd
--- /dev/null
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ImplType.html
@@ -0,0 +1,215 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.thrift;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.thrift.Constants.SERVER_TYPE_CONF_KEY;<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.Arrays;<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">026</span>import org.apache.hadoop.conf.Configuration;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.thrift.server.THsHaServer;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.thrift.server.TNonblockingServer;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.thrift.server.TServer;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.thrift.server.TThreadedSelectorServer;<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.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.org.apache.commons.cli.CommandLine;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Option;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.OptionGroup;<a name="line.37"></a>
+<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">039</span>/** An enum of server implementation selections */<a name="line.39"></a>
+<span class="sourceLineNo">040</span>@InterfaceAudience.Private<a name="line.40"></a>
+<span class="sourceLineNo">041</span>public enum ImplType {<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  HS_HA("hsha", true, THsHaServer.class, true),<a name="line.42"></a>
+<span class="sourceLineNo">043</span>  NONBLOCKING("nonblocking", true, TNonblockingServer.class, true),<a name="line.43"></a>
+<span class="sourceLineNo">044</span>  THREAD_POOL("threadpool", false, TBoundedThreadPoolServer.class, true),<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  THREADED_SELECTOR("threadedselector", true, TThreadedSelectorServer.class, true);<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>  private static final Logger LOG = LoggerFactory.getLogger(ImplType.class);<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  public static final ImplType DEFAULT = THREAD_POOL;<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>  final String option;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  final boolean isAlwaysFramed;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  final Class&lt;? extends TServer&gt; serverClass;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  final boolean canSpecifyBindIP;<a name="line.54"></a>
+<span class="sourceLineNo">055</span><a name="line.55"></a>
+<span class="sourceLineNo">056</span>  private ImplType(String option, boolean isAlwaysFramed,<a name="line.56"></a>
+<span class="sourceLineNo">057</span>      Class&lt;? extends TServer&gt; serverClass, boolean canSpecifyBindIP) {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    this.option = option;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    this.isAlwaysFramed = isAlwaysFramed;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    this.serverClass = serverClass;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    this.canSpecifyBindIP = canSpecifyBindIP;<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>  /**<a name="line.64"></a>
+<span class="sourceLineNo">065</span>   * @return &lt;code&gt;-option&lt;/code&gt;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>   */<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  @Override<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  public String toString() {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    return "-" + option;<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>  public String getOption() {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    return option;<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">076</span>  public boolean isAlwaysFramed() {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    return isAlwaysFramed;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  }<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>  public String getDescription() {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    StringBuilder sb = new StringBuilder("Use the " +<a name="line.81"></a>
+<span class="sourceLineNo">082</span>        serverClass.getSimpleName());<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    if (isAlwaysFramed) {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      sb.append(" This implies the framed transport.");<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    }<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    if (this == DEFAULT) {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      sb.append("This is the default.");<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    }<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    return sb.toString();<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>  static OptionGroup createOptionGroup() {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    OptionGroup group = new OptionGroup();<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    for (ImplType t : values()) {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      group.addOption(new Option(t.option, t.getDescription()));<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    }<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    return group;<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>  public static ImplType getServerImpl(Configuration conf) {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    String confType = conf.get(SERVER_TYPE_CONF_KEY, THREAD_POOL.option);<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    for (ImplType t : values()) {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      if (confType.equals(t.option)) {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>        return t;<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>    throw new AssertionError("Unknown server ImplType.option:" + confType);<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>  static void setServerImpl(CommandLine cmd, Configuration conf) {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    ImplType chosenType = null;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    int numChosen = 0;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    for (ImplType t : values()) {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      if (cmd.hasOption(t.option)) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>        chosenType = t;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>        ++numChosen;<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>    if (numChosen &lt; 1) {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      LOG.info("Using default thrift server type");<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      chosenType = DEFAULT;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    } else if (numChosen &gt; 1) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      throw new AssertionError("Exactly one option out of " +<a name="line.123"></a>
+<span class="sourceLineNo">124</span>          Arrays.toString(values()) + " has to be specified");<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    LOG.info("Using thrift server type " + chosenType.option);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    conf.set(SERVER_TYPE_CONF_KEY, chosenType.option);<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 String simpleClassName() {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    return serverClass.getSimpleName();<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>  public static List&lt;String&gt; serversThatCannotSpecifyBindIP() {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    List&lt;String&gt; l = new ArrayList&lt;&gt;();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    for (ImplType t : values()) {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      if (!t.canSpecifyBindIP) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        l.add(t.simpleClassName());<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>    return l;<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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 d7e790d..1648cbc 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
@@ -41,203 +41,203 @@
 <span class="sourceLineNo">033</span>import java.util.concurrent.atomic.LongAdder;<a name="line.33"></a>
 <span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.34"></a>
 <span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.Table;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.thrift.generated.TIncrement;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.metrics2.util.MBeans;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.thrift.TException;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.slf4j.Logger;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.slf4j.LoggerFactory;<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> * This class will coalesce increments from a thift server if<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * hbase.regionserver.thrift.coalesceIncrement is set to true. Turning this<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * config to true will cause the thrift server to queue increments into an<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * instance of this class. The thread pool associated with this class will drain<a name="line.50"></a>
-<span class="sourceLineNo">051</span> * the coalesced increments as the thread is able. This can cause data loss if the<a name="line.51"></a>
-<span class="sourceLineNo">052</span> * thrift server dies or is shut down before everything in the queue is drained.<a name="line.52"></a>
-<span class="sourceLineNo">053</span> *<a name="line.53"></a>
-<span class="sourceLineNo">054</span> */<a name="line.54"></a>
-<span class="sourceLineNo">055</span>@InterfaceAudience.Private<a name="line.55"></a>
-<span class="sourceLineNo">056</span>public class IncrementCoalescer implements IncrementCoalescerMBean {<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>  /**<a name="line.58"></a>
-<span class="sourceLineNo">059</span>   * Used to identify a cell that will be incremented.<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>  static class FullyQualifiedRow {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    private byte[] table;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    private byte[] rowKey;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    private byte[] family;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    private byte[] qualifier;<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>    public FullyQualifiedRow(byte[] table, byte[] rowKey, byte[] fam, byte[] qual) {<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      super();<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      this.table = table;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      this.rowKey = rowKey;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      this.family = fam;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      this.qualifier = qual;<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">076</span>    public byte[] getTable() {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      return table;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>    public void setTable(byte[] table) {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      this.table = table;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public byte[] getRowKey() {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      return rowKey;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>    public void setRowKey(byte[] rowKey) {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      this.rowKey = rowKey;<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>    public byte[] getFamily() {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      return family;<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 void setFamily(byte[] fam) {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      this.family = fam;<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>    public byte[] getQualifier() {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      return qualifier;<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 setQualifier(byte[] qual) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      this.qualifier = qual;<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 int hashCode() {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      final int prime = 31;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      int result = 1;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      result = prime * result + Arrays.hashCode(family);<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      result = prime * result + Arrays.hashCode(qualifier);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      result = prime * result + Arrays.hashCode(rowKey);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      result = prime * result + Arrays.hashCode(table);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      return result;<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>    @Override<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    public boolean equals(Object obj) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      if (this == obj) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>        return true;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      if (obj == null) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        return false;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      if (getClass() != obj.getClass()) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        return false;<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>      FullyQualifiedRow other = (FullyQualifiedRow) obj;<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>      if (!Arrays.equals(family, other.family)) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        return false;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      }<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      if (!Arrays.equals(qualifier, other.qualifier)) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>        return false;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      if (!Arrays.equals(rowKey, other.rowKey)) {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>        return false;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      }<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      if (!Arrays.equals(table, other.table)) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        return false;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      }<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      return true;<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>  static class DaemonThreadFactory implements ThreadFactory {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    static final AtomicInteger poolNumber = new AtomicInteger(1);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    final ThreadGroup group;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    final AtomicInteger threadNumber = new AtomicInteger(1);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    final String namePrefix;<a name="line.154"></a>
-<span class="sourceLineNo">155</span><a name="line.155"></a>
-<span class="sourceLineNo">156</span>    DaemonThreadFactory() {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      SecurityManager s = System.getSecurityManager();<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      group = (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup();<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      namePrefix = "ICV-" + poolNumber.getAndIncrement() + "-thread-";<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 Thread newThread(Runnable r) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      Thread t = new Thread(group, r, namePrefix + threadNumber.getAndIncrement(), 0);<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>      if (!t.isDaemon()) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        t.setDaemon(true);<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      if (t.getPriority() != Thread.NORM_PRIORITY) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        t.setPriority(Thread.NORM_PRIORITY);<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>      return t;<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>  private final LongAdder failedIncrements = new LongAdder();<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  private final LongAdder successfulCoalescings = new LongAdder();<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  private final LongAdder totalIncrements = new LongAdder();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  private final ConcurrentMap&lt;FullyQualifiedRow, Long&gt; countersMap =<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      new ConcurrentHashMap&lt;&gt;(100000, 0.75f, 1500);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  private final ThreadPoolExecutor pool;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  private final HBaseHandler handler;<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  private int maxQueueSize = 500000;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  private static final int CORE_POOL_SIZE = 1;<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>  private static final Logger LOG = LoggerFactory.getLogger(FullyQualifiedRow.class);<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>  @SuppressWarnings("deprecation")<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  public IncrementCoalescer(HBaseHandler hand) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    this.handler = hand;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    LinkedBlockingQueue&lt;Runnable&gt; queue = new LinkedBlockingQueue&lt;&gt;();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    pool =<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        new ThreadPoolExecutor(CORE_POOL_SIZE, CORE_POOL_SIZE, 50, TimeUnit.MILLISECONDS, queue,<a name="line.195"></a>
-<span class="sourceLineNo">196</span>            Threads.newDaemonThreadFactory("IncrementCoalescer"));<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>    MBeans.register("thrift", "Thrift", this);<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>  public boolean queueIncrement(TIncrement inc) throws TException {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    if (!canQueue()) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      failedIncrements.increment();<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      return false;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    return internalQueueTincrement(inc);<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>  public boolean queueIncrements(List&lt;TIncrement&gt; incs) throws TException {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    if (!canQueue()) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      failedIncrements.increment();<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      return false;<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>    for (TIncrement tinc : incs) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      internalQueueTincrement(tinc);<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>    return true;<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>  private boolean internalQueueTincrement(TIncrement inc) throws TException {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    byte[][] famAndQf = CellUtil.parseColumn(inc.getColumn());<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>    if (famAndQf.length != 2) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      return false;<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 internalQueueIncrement(inc.getTable(), inc.getRow(), famAndQf[0], famAndQf[1],<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      inc.getAmmount());<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">036</span>import org.apache.hadoop.hbase.thrift.generated.TIncrement;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.metrics2.util.MBeans;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.thrift.TException;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.yetus.audience.InterfaceAudience;<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">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>/**<a name="line.45"></a>
+<span class="sourceLineNo">046</span> * This class will coalesce increments from a thift server if<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * hbase.regionserver.thrift.coalesceIncrement is set to true. Turning this<a name="line.47"></a>
+<span class="sourceLineNo">048</span> * config to true will cause the thrift server to queue increments into an<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * instance of this class. The thread pool associated with this class will drain<a name="line.49"></a>
+<span class="sourceLineNo">050</span> * the coalesced increments as the thread is able. This can cause data loss if the<a name="line.50"></a>
+<span class="sourceLineNo">051</span> * thrift server dies or is shut down before everything in the queue is drained.<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>@InterfaceAudience.Private<a name="line.54"></a>
+<span class="sourceLineNo">055</span>public class IncrementCoalescer implements IncrementCoalescerMBean {<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>   * Used to identify a cell that will be incremented.<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>  static class FullyQualifiedRow {<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    private byte[] table;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    private byte[] rowKey;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    private byte[] family;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    private byte[] qualifier;<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>    public FullyQualifiedRow(byte[] table, byte[] rowKey, byte[] fam, byte[] qual) {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      super();<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      this.table = table;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      this.rowKey = rowKey;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>      this.family = fam;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      this.qualifier = qual;<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>    public byte[] getTable() {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      return table;<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>    public void setTable(byte[] table) {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      this.table = table;<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 byte[] getRowKey() {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      return rowKey;<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 setRowKey(byte[] rowKey) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      this.rowKey = rowKey;<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 byte[] getFamily() {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      return family;<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 setFamily(byte[] fam) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      this.family = fam;<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>    public byte[] getQualifier() {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      return qualifier;<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>    public void setQualifier(byte[] qual) {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      this.qualifier = qual;<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 int hashCode() {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      final int prime = 31;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      int result = 1;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      result = prime * result + Arrays.hashCode(family);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      result = prime * result + Arrays.hashCode(qualifier);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      result = prime * result + Arrays.hashCode(rowKey);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      result = prime * result + Arrays.hashCode(table);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      return result;<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>    @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) {<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>    @Override<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public Thread newThread(Runnable r) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      Thread t = new Thread(group, r, namePrefix + threadNumber.getAndIncrement(), 0);<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>      if (!t.isDaemon()) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        t.setDaemon(true);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      }<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      if (t.getPriority() != Thread.NORM_PRIORITY) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        t.setPriority(Thread.NORM_PRIORITY);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>      return t;<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>  private final LongAdder failedIncrements = new LongAdder();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  private final LongAdder successfulCoalescings = new LongAdder();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  private final LongAdder totalIncrements = new LongAdder();<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  private final ConcurrentMap&lt;FullyQualifiedRow, Long&gt; countersMap =<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      new ConcurrentHashMap&lt;&gt;(100000, 0.75f, 1500);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  private final ThreadPoolExecutor pool;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  private final ThriftHBaseServiceHandler handler;<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>  private int maxQueueSize = 500000;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>  private static final int CORE_POOL_SIZE = 1;<a name="line.185"></a>
+<span class="sourceLineNo">186</span><a name="line.186"></a>
+<span class="sourceLineNo">187</span>  private static final Logger LOG = LoggerFactory.getLogger(FullyQualifiedRow.class);<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>  @SuppressWarnings("deprecation")<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  public IncrementCoalescer(ThriftHBaseServiceHandler hand) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    this.handler = hand;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    LinkedBlockingQueue&lt;Runnable&gt; queue = new LinkedBlockingQueue&lt;&gt;();<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    pool =<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        new ThreadPoolExecutor(CORE_POOL_SIZE, CORE_POOL_SIZE, 50, TimeUnit.MILLISECONDS, queue,<a name="line.194"></a>
+<span class="sourceLineNo">195</span>            Threads.newDaemonThreadFactory("IncrementCoalescer"));<a name="line.195"></a>
+<span class="sourceLineNo">196</span><a name="line.196"></a>
+<span class="sourceLineNo">197</span>    MBeans.register("thrift", "Thrift", this);<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>  public boolean queueIncrement(TIncrement inc) throws TException {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (!canQueue()) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      failedIncrements.increment();<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      return false;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    return internalQueueTincrement(inc);<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>  public boolean queueIncrements(List&lt;TIncrement&gt; incs) throws TException {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    if (!canQueue()) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      failedIncrements.increment();<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      return false;<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>    for (TIncrement tinc : incs) {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      internalQueueTincrement(tinc);<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>    return true;<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>  private boolean internalQueueTincrement(TIncrement inc) throws TException {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    byte[][] famAndQf = CellUtil.parseColumn(inc.getColumn());<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>    if (famAndQf.length != 2) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      return false;<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>    return internalQueueIncrement(inc.getTable(), inc.getRow(), famAndQf[0], famAndQf[1],<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      inc.getAmmount());<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>  @SuppressWarnings("FutureReturnValueIgnored")<a name="line.232"></a>
 <span class="sourceLineNo">233</span>  private boolean internalQueueIncrement(byte[] tableName, byte[] rowKey, byte[] fam,<a name="line.233"></a>
 <span class="sourceLineNo">234</span>      byte[] qual, long ammount) throws TException {<a name="line.234"></a>
 <span class="sourceLineNo">235</span>    int countersMapSize = countersMap.size();<a name="line.235"></a>


[21/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html
new file mode 100644
index 0000000..5b5b199
--- /dev/null
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html
@@ -0,0 +1,1419 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> *<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
+<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
+<span class="sourceLineNo">012</span> *<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
+<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
+<span class="sourceLineNo">018</span> */<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>package org.apache.hadoop.hbase.thrift;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.thrift.Constants.COALESCE_INC_KEY;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.util.Bytes.getBytes;<a name="line.23"></a>
+<span class="sourceLineNo">024</span><a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.IOException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.nio.ByteBuffer;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.ArrayList;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.Collections;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.HashMap;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.List;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.Map;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.TreeMap;<a name="line.32"></a>
+<span class="sourceLineNo">033</span><a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.conf.Configuration;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.Cell;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.CellBuilder;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.CellBuilderFactory;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.HConstants;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.ServerName;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.TableName;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.client.Append;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.client.Get;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.client.OperationWithAttributes;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.client.Put;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.Result;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.client.Table;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.filter.ParseFilter;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.filter.PrefixFilter;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.filter.WhileMatchFilter;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.thrift.generated.AlreadyExists;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.thrift.generated.BatchMutation;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.thrift.generated.ColumnDescriptor;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.thrift.generated.Hbase;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.thrift.generated.IOError;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.thrift.generated.IllegalArgument;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.thrift.generated.Mutation;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.thrift.generated.TAppend;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.thrift.generated.TCell;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.thrift.generated.TIncrement;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.thrift.generated.TRegionInfo;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.thrift.generated.TRowResult;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.thrift.generated.TScan;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.thrift.TException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.slf4j.Logger;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.slf4j.LoggerFactory;<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<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> * The HBaseServiceHandler is a glue object that connects Thrift RPC calls to the<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * HBase client API primarily defined in the Admin and Table objects.<a name="line.90"></a>
+<span class="sourceLineNo">091</span> */<a name="line.91"></a>
+<span class="sourceLineNo">092</span>@InterfaceAudience.Private<a name="line.92"></a>
+<span class="sourceLineNo">093</span>@SuppressWarnings("deprecation")<a name="line.93"></a>
+<span class="sourceLineNo">094</span>public class ThriftHBaseServiceHandler extends HBaseServiceHandler implements Hbase.Iface {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private static final Logger LOG = LoggerFactory.getLogger(ThriftHBaseServiceHandler.class);<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  public static final int HREGION_VERSION = 1;<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>  // nextScannerId and scannerMap are used to manage scanner state<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  private int nextScannerId = 0;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  private HashMap&lt;Integer, ResultScannerWrapper&gt; scannerMap;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  IncrementCoalescer coalescer;<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>   * Returns a list of all the column families for a given Table.<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   *<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @param table table<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @throws IOException<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   */<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  byte[][] getAllColumns(Table table) throws IOException {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    HColumnDescriptor[] cds = table.getTableDescriptor().getColumnFamilies();<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    byte[][] columns = new byte[cds.length][];<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    for (int i = 0; i &lt; cds.length; i++) {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      columns[i] = Bytes.add(cds[i].getName(),<a name="line.114"></a>
+<span class="sourceLineNo">115</span>          KeyValue.COLUMN_FAMILY_DELIM_ARRAY);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    }<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    return columns;<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>  /**<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * Assigns a unique ID to the scanner and adds the mapping to an internal<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   * hash-map.<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   *<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   * @param scanner the {@link ResultScanner} to add<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   * @return integer scanner id<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  protected synchronized int addScanner(ResultScanner scanner, boolean sortColumns) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    int id = nextScannerId++;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    ResultScannerWrapper resultScannerWrapper =<a name="line.130"></a>
+<span class="sourceLineNo">131</span>        new ResultScannerWrapper(scanner, sortColumns);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    scannerMap.put(id, resultScannerWrapper);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    return id;<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>   * Returns the scanner associated with the specified ID.<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   *<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * @param id the ID of the scanner to get<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   * @return a Scanner, or null if ID was invalid.<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   */<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  private synchronized ResultScannerWrapper getScanner(int id) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    return scannerMap.get(id);<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>   * Removes the scanner associated with the specified ID from the internal<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * id-&amp;gt;scanner hash-map.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   *<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   * @param id the ID of the scanner to remove<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * @return a Scanner, or null if ID was invalid.<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private synchronized ResultScannerWrapper removeScanner(int id) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    return scannerMap.remove(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>
+<span class="sourceLineNo">157</span>  protected ThriftHBaseServiceHandler(final Configuration c,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      final UserProvider userProvider) throws IOException {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    super(c, userProvider);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    scannerMap = new HashMap&lt;&gt;();<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    this.coalescer = new IncrementCoalescer(this);<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><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  @Override<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  public void enableTable(ByteBuffer tableName) throws IOError {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    try{<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      getAdmin().enableTable(getTableName(tableName));<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    } catch (IOException e) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      LOG.warn(e.getMessage(), e);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      throw getIOError(e);<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>  @Override<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  public void disableTable(ByteBuffer tableName) throws IOError{<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    try{<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      getAdmin().disableTable(getTableName(tableName));<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    } catch (IOException e) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      LOG.warn(e.getMessage(), e);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      throw getIOError(e);<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><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @Override<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public boolean isTableEnabled(ByteBuffer tableName) throws IOError {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    try {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      return this.connectionCache.getAdmin().isTableEnabled(getTableName(tableName));<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    } catch (IOException e) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      LOG.warn(e.getMessage(), e);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      throw getIOError(e);<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><a name="line.194"></a>
+<span class="sourceLineNo">195</span>  // ThriftServerRunner.compact should be deprecated and replaced with methods specific to<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  // table and region.<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  @Override<a name="line.197"></a>
+<span class="sourceLineNo">198</span>  public void compact(ByteBuffer tableNameOrRegionName) throws IOError {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    try {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      try {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        getAdmin().compactRegion(getBytes(tableNameOrRegionName));<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      } catch (IllegalArgumentException e) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>        // Invalid region, try table<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        getAdmin().compact(TableName.valueOf(getBytes(tableNameOrRegionName)));<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      }<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    } catch (IOException e) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      LOG.warn(e.getMessage(), e);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      throw getIOError(e);<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><a name="line.211"></a>
+<span class="sourceLineNo">212</span>  // ThriftServerRunner.majorCompact should be deprecated and replaced with methods specific<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  // to table and region.<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  @Override<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  public void majorCompact(ByteBuffer tableNameOrRegionName) throws IOError {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    try {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      try {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        getAdmin().compactRegion(getBytes(tableNameOrRegionName));<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      } catch (IllegalArgumentException e) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        // Invalid region, try table<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        getAdmin().compact(TableName.valueOf(getBytes(tableNameOrRegionName)));<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    } catch (IOException e) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      LOG.warn(e.getMessage(), e);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      throw getIOError(e);<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>  @Override<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  public List&lt;ByteBuffer&gt; getTableNames() throws IOError {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    try {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      TableName[] tableNames = this.getAdmin().listTableNames();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      ArrayList&lt;ByteBuffer&gt; list = new ArrayList&lt;&gt;(tableNames.length);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      for (TableName tableName : tableNames) {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        list.add(ByteBuffer.wrap(tableName.getName()));<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      }<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      return list;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    } catch (IOException e) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      LOG.warn(e.getMessage(), e);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      throw getIOError(e);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    }<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  }<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>   * @return the list of regions in the given table, or an empty list if the table does not exist<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 List&lt;TRegionInfo&gt; getTableRegions(ByteBuffer tableName) throws IOError {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    try (RegionLocator locator = connectionCache.getRegionLocator(getBytes(tableName))) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      List&lt;HRegionLocation&gt; regionLocations = locator.getAllRegionLocations();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      List&lt;TRegionInfo&gt; results = new ArrayList&lt;&gt;(regionLocations.size());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      for (HRegionLocation regionLocation : regionLocations) {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        RegionInfo info = regionLocation.getRegionInfo();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        ServerName serverName = regionLocation.getServerName();<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        TRegionInfo region = new TRegionInfo();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        region.serverName = ByteBuffer.wrap(<a name="line.256"></a>
+<span class="sourceLineNo">257</span>            Bytes.toBytes(serverName.getHostname()));<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        region.port = serverName.getPort();<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        region.startKey = ByteBuffer.wrap(info.getStartKey());<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        region.endKey = ByteBuffer.wrap(info.getEndKey());<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        region.id = info.getRegionId();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        region.name = ByteBuffer.wrap(info.getRegionName());<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        region.version = HREGION_VERSION; // HRegion now not versioned, PB encoding used<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        results.add(region);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      return results;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    } catch (TableNotFoundException e) {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      // Return empty list for non-existing table<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      return Collections.emptyList();<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    } catch (IOException e){<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      LOG.warn(e.getMessage(), e);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      throw getIOError(e);<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>  @Override<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  public List&lt;TCell&gt; get(<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      ByteBuffer tableName, ByteBuffer row, ByteBuffer column,<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      throws IOError {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    byte [][] famAndQf = CellUtil.parseColumn(getBytes(column));<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    if (famAndQf.length == 1) {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      return get(tableName, row, famAndQf[0], null, attributes);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    if (famAndQf.length == 2) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      return get(tableName, row, famAndQf[0], famAndQf[1], attributes);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    }<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    throw new IllegalArgumentException("Invalid familyAndQualifier provided.");<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>   * Note: this internal interface is slightly different from public APIs in regard to handling<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   * of the qualifier. Here we differ from the public Java API in that null != byte[0]. Rather,<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   * we respect qual == null as a request for the entire column family. The caller (<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   * {@link #get(ByteBuffer, ByteBuffer, ByteBuffer, Map)}) interface IS consistent in that the<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   * column is parse like normal.<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   */<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  protected List&lt;TCell&gt; get(ByteBuffer tableName,<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      ByteBuffer row,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      byte[] family,<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      byte[] qualifier,<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    Table table = null;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    try {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      table = getTable(tableName);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      Get get = new Get(getBytes(row));<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      addAttributes(get, attributes);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      if (qualifier == null) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        get.addFamily(family);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      } else {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        get.addColumn(family, qualifier);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      }<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      Result result = table.get(get);<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      return ThriftUtilities.cellFromHBase(result.rawCells());<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    } catch (IOException e) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      LOG.warn(e.getMessage(), e);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      throw getIOError(e);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    } finally {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      closeTable(table);<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>  @Override<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  public List&lt;TCell&gt; getVer(ByteBuffer tableName, ByteBuffer row, ByteBuffer column,<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      int numVersions, Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    byte [][] famAndQf = CellUtil.parseColumn(getBytes(column));<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    if(famAndQf.length == 1) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      return getVer(tableName, row, famAndQf[0], null, numVersions, attributes);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    }<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    if (famAndQf.length == 2) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      return getVer(tableName, row, famAndQf[0], famAndQf[1], numVersions, attributes);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    throw new IllegalArgumentException("Invalid familyAndQualifier provided.");<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><a name="line.336"></a>
+<span class="sourceLineNo">337</span>  /**<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * Note: this public interface is slightly different from public Java APIs in regard to<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * handling of the qualifier. Here we differ from the public Java API in that null != byte[0].<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * Rather, we respect qual == null as a request for the entire column family. If you want to<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * access the entire column family, use<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * {@link #getVer(ByteBuffer, ByteBuffer, ByteBuffer, int, Map)} with a {@code column} value<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   * that lacks a {@code ':'}.<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   */<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  public List&lt;TCell&gt; getVer(ByteBuffer tableName, ByteBuffer row, byte[] family,<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      byte[] qualifier, int numVersions, Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>    Table table = null;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    try {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      table = getTable(tableName);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      Get get = new Get(getBytes(row));<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      addAttributes(get, attributes);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      if (null == qualifier) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        get.addFamily(family);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      } else {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        get.addColumn(family, qualifier);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      }<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      get.setMaxVersions(numVersions);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      Result result = table.get(get);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      return ThriftUtilities.cellFromHBase(result.rawCells());<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    } catch (IOException e) {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      LOG.warn(e.getMessage(), e);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      throw getIOError(e);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    } finally{<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      closeTable(table);<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>  @Override<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  public List&lt;TCell&gt; getVerTs(ByteBuffer tableName, ByteBuffer row, ByteBuffer column,<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      long timestamp, int numVersions, Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    byte [][] famAndQf = CellUtil.parseColumn(getBytes(column));<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    if (famAndQf.length == 1) {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      return getVerTs(tableName, row, famAndQf[0], null, timestamp, numVersions, attributes);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    }<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    if (famAndQf.length == 2) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      return getVerTs(tableName, row, famAndQf[0], famAndQf[1], timestamp, numVersions,<a name="line.377"></a>
+<span class="sourceLineNo">378</span>          attributes);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    }<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    throw new IllegalArgumentException("Invalid familyAndQualifier provided.");<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  }<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>   * Note: this internal interface is slightly different from public APIs in regard to handling<a name="line.384"></a>
+<span class="sourceLineNo">385</span>   * of the qualifier. Here we differ from the public Java API in that null != byte[0]. Rather,<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * we respect qual == null as a request for the entire column family. The caller (<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * {@link #getVerTs(ByteBuffer, ByteBuffer, ByteBuffer, long, int, Map)}) interface IS<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * consistent in that the column is parse like normal.<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   */<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  protected List&lt;TCell&gt; getVerTs(ByteBuffer tableName, ByteBuffer row, byte[] family,<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      byte[] qualifier, long timestamp, int numVersions, Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      throws IOError {<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span>    Table table = null;<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    try {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      table = getTable(tableName);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      Get get = new Get(getBytes(row));<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      addAttributes(get, attributes);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      if (null == qualifier) {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        get.addFamily(family);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      } else {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        get.addColumn(family, qualifier);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      get.setTimeRange(0, timestamp);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      get.setMaxVersions(numVersions);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      Result result = table.get(get);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      return ThriftUtilities.cellFromHBase(result.rawCells());<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    } catch (IOException e) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      LOG.warn(e.getMessage(), e);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      throw getIOError(e);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    } finally{<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      closeTable(table);<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>  @Override<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  public List&lt;TRowResult&gt; getRow(ByteBuffer tableName, ByteBuffer row,<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    return getRowWithColumnsTs(tableName, row, null,<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        HConstants.LATEST_TIMESTAMP,<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        attributes);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  }<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>  @Override<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  public List&lt;TRowResult&gt; getRowWithColumns(ByteBuffer tableName,<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      ByteBuffer row,<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      List&lt;ByteBuffer&gt; columns,<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    return getRowWithColumnsTs(tableName, row, columns,<a name="line.429"></a>
+<span class="sourceLineNo">430</span>        HConstants.LATEST_TIMESTAMP,<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        attributes);<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>  @Override<a name="line.434"></a>
+<span class="sourceLineNo">435</span>  public List&lt;TRowResult&gt; getRowTs(ByteBuffer tableName, ByteBuffer row,<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      long timestamp, Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    return getRowWithColumnsTs(tableName, row, null,<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        timestamp, attributes);<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>  @Override<a name="line.441"></a>
+<span class="sourceLineNo">442</span>  public List&lt;TRowResult&gt; getRowWithColumnsTs(<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      ByteBuffer tableName, ByteBuffer row, List&lt;ByteBuffer&gt; columns,<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      long timestamp, Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.444"></a>
+<span class="sourceLineNo">445</span><a name="line.445"></a>
+<span class="sourceLineNo">446</span>    Table table = null;<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    try {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      table = getTable(tableName);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      if (columns == null) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>        Get get = new Get(getBytes(row));<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        addAttributes(get, attributes);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>        get.setTimeRange(0, timestamp);<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        Result result = table.get(get);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        return ThriftUtilities.rowResultFromHBase(result);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      Get get = new Get(getBytes(row));<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      addAttributes(get, attributes);<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      for(ByteBuffer column : columns) {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>        byte [][] famAndQf = CellUtil.parseColumn(getBytes(column));<a name="line.459"></a>
+<span class="sourceLineNo">460</span>        if (famAndQf.length == 1) {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>          get.addFamily(famAndQf[0]);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>        } else {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>          get.addColumn(famAndQf[0], famAndQf[1]);<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>      get.setTimeRange(0, timestamp);<a name="line.466"></a>
+<span class="sourceLineNo">467</span>      Result result = table.get(get);<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      return ThriftUtilities.rowResultFromHBase(result);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    } catch (IOException e) {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      LOG.warn(e.getMessage(), e);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      throw getIOError(e);<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    } finally{<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      closeTable(table);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
+<span class="sourceLineNo">475</span>  }<a name="line.475"></a>
+<span class="sourceLineNo">476</span><a name="line.476"></a>
+<span class="sourceLineNo">477</span>  @Override<a name="line.477"></a>
+<span class="sourceLineNo">478</span>  public List&lt;TRowResult&gt; getRows(ByteBuffer tableName,<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      List&lt;ByteBuffer&gt; rows,<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.480"></a>
+<span class="sourceLineNo">481</span>      throws IOError {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    return getRowsWithColumnsTs(tableName, rows, null,<a name="line.482"></a>
+<span class="sourceLineNo">483</span>        HConstants.LATEST_TIMESTAMP,<a name="line.483"></a>
+<span class="sourceLineNo">484</span>        attributes);<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>  @Override<a name="line.487"></a>
+<span class="sourceLineNo">488</span>  public List&lt;TRowResult&gt; getRowsWithColumns(ByteBuffer tableName,<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      List&lt;ByteBuffer&gt; rows,<a name="line.489"></a>
+<span class="sourceLineNo">490</span>      List&lt;ByteBuffer&gt; columns,<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    return getRowsWithColumnsTs(tableName, rows, columns,<a name="line.492"></a>
+<span class="sourceLineNo">493</span>        HConstants.LATEST_TIMESTAMP,<a name="line.493"></a>
+<span class="sourceLineNo">494</span>        attributes);<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>  @Override<a name="line.497"></a>
+<span class="sourceLineNo">498</span>  public List&lt;TRowResult&gt; getRowsTs(ByteBuffer tableName,<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      List&lt;ByteBuffer&gt; rows,<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      long timestamp,<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    return getRowsWithColumnsTs(tableName, rows, null,<a name="line.502"></a>
+<span class="sourceLineNo">503</span>        timestamp, attributes);<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>  @Override<a name="line.506"></a>
+<span class="sourceLineNo">507</span>  public List&lt;TRowResult&gt; getRowsWithColumnsTs(ByteBuffer tableName,<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      List&lt;ByteBuffer&gt; rows,<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      List&lt;ByteBuffer&gt; columns, long timestamp,<a name="line.509"></a>
+<span class="sourceLineNo">510</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.510"></a>
+<span class="sourceLineNo">511</span><a name="line.511"></a>
+<span class="sourceLineNo">512</span>    Table table= null;<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    try {<a name="line.513"></a>
+<span class="sourceLineNo">514</span>      List&lt;Get&gt; gets = new ArrayList&lt;&gt;(rows.size());<a name="line.514"></a>
+<span class="sourceLineNo">515</span>      table = getTable(tableName);<a name="line.515"></a>
+<span class="sourceLineNo">516</span>      if (metrics != null) {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>        metrics.incNumRowKeysInBatchGet(rows.size());<a name="line.517"></a>
+<span class="sourceLineNo">518</span>      }<a name="line.518"></a>
+<span class="sourceLineNo">519</span>      for (ByteBuffer row : rows) {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>        Get get = new Get(getBytes(row));<a name="line.520"></a>
+<span class="sourceLineNo">521</span>        addAttributes(get, attributes);<a name="line.521"></a>
+<span class="sourceLineNo">522</span>        if (columns != null) {<a name="line.522"></a>
+<span class="sourceLineNo">523</span><a name="line.523"></a>
+<span class="sourceLineNo">524</span>          for(ByteBuffer column : columns) {<a name="line.524"></a>
+<span class="sourceLineNo">525</span>            byte [][] famAndQf = CellUtil.parseColumn(getBytes(column));<a name="line.525"></a>
+<span class="sourceLineNo">526</span>            if (famAndQf.length == 1) {<a name="line.526"></a>
+<span class="sourceLineNo">527</span>              get.addFamily(famAndQf[0]);<a name="line.527"></a>
+<span class="sourceLineNo">528</span>            } else {<a name="line.528"></a>
+<span class="sourceLineNo">529</span>              get.addColumn(famAndQf[0], famAndQf[1]);<a name="line.529"></a>
+<span class="sourceLineNo">530</span>            }<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>        get.setTimeRange(0, timestamp);<a name="line.533"></a>
+<span class="sourceLineNo">534</span>        gets.add(get);<a name="line.534"></a>
+<span class="sourceLineNo">535</span>      }<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      Result[] result = table.get(gets);<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      return ThriftUtilities.rowResultFromHBase(result);<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    } catch (IOException e) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>      LOG.warn(e.getMessage(), e);<a name="line.539"></a>
+<span class="sourceLineNo">540</span>      throw getIOError(e);<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    } finally{<a name="line.541"></a>
+<span class="sourceLineNo">542</span>      closeTable(table);<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><a name="line.545"></a>
+<span class="sourceLineNo">546</span>  @Override<a name="line.546"></a>
+<span class="sourceLineNo">547</span>  public void deleteAll(<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      ByteBuffer tableName, ByteBuffer row, ByteBuffer column,<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      throws IOError {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    deleteAllTs(tableName, row, column, HConstants.LATEST_TIMESTAMP,<a name="line.551"></a>
+<span class="sourceLineNo">552</span>        attributes);<a name="line.552"></a>
+<span class="sourceLineNo">553</span>  }<a name="line.553"></a>
+<span class="sourceLineNo">554</span><a name="line.554"></a>
+<span class="sourceLineNo">555</span>  @Override<a name="line.555"></a>
+<span class="sourceLineNo">556</span>  public void deleteAllTs(ByteBuffer tableName,<a name="line.556"></a>
+<span class="sourceLineNo">557</span>      ByteBuffer row,<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      ByteBuffer column,<a name="line.558"></a>
+<span class="sourceLineNo">559</span>      long timestamp, Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    Table table = null;<a name="line.560"></a>
+<span class="sourceLineNo">561</span>    try {<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      table = getTable(tableName);<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      Delete delete  = new Delete(getBytes(row));<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      addAttributes(delete, attributes);<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      byte [][] famAndQf = CellUtil.parseColumn(getBytes(column));<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      if (famAndQf.length == 1) {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>        delete.addFamily(famAndQf[0], timestamp);<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      } else {<a name="line.568"></a>
+<span class="sourceLineNo">569</span>        delete.addColumns(famAndQf[0], famAndQf[1], timestamp);<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      }<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      table.delete(delete);<a name="line.571"></a>
+<span class="sourceLineNo">572</span><a name="line.572"></a>
+<span class="sourceLineNo">573</span>    } catch (IOException e) {<a name="line.573"></a>
+<span class="sourceLineNo">574</span>      LOG.warn(e.getMessage(), e);<a name="line.574"></a>
+<span class="sourceLineNo">575</span>      throw getIOError(e);<a name="line.575"></a>
+<span class="sourceLineNo">576</span>    } finally {<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      closeTable(table);<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>  @Override<a name="line.581"></a>
+<span class="sourceLineNo">582</span>  public void deleteAllRow(<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      ByteBuffer tableName, ByteBuffer row,<a name="line.583"></a>
+<span class="sourceLineNo">584</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>    deleteAllRowTs(tableName, row, HConstants.LATEST_TIMESTAMP, attributes);<a name="line.585"></a>
+<span class="sourceLineNo">586</span>  }<a name="line.586"></a>
+<span class="sourceLineNo">587</span><a name="line.587"></a>
+<span class="sourceLineNo">588</span>  @Override<a name="line.588"></a>
+<span class="sourceLineNo">589</span>  public void deleteAllRowTs(<a name="line.589"></a>
+<span class="sourceLineNo">590</span>      ByteBuffer tableName, ByteBuffer row, long timestamp,<a name="line.590"></a>
+<span class="sourceLineNo">591</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.591"></a>
+<span class="sourceLineNo">592</span>    Table table = null;<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    try {<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      table = getTable(tableName);<a name="line.594"></a>
+<span class="sourceLineNo">595</span>      Delete delete  = new Delete(getBytes(row), timestamp);<a name="line.595"></a>
+<span class="sourceLineNo">596</span>      addAttributes(delete, attributes);<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      table.delete(delete);<a name="line.597"></a>
+<span class="sourceLineNo">598</span>    } catch (IOException e) {<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      LOG.warn(e.getMessage(), e);<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      throw getIOError(e);<a name="line.600"></a>
+<span class="sourceLineNo">601</span>    } finally {<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      closeTable(table);<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    }<a name="line.603"></a>
+<span class="sourceLineNo">604</span>  }<a name="line.604"></a>
+<span class="sourceLineNo">605</span><a name="line.605"></a>
+<span class="sourceLineNo">606</span>  @Override<a name="line.606"></a>
+<span class="sourceLineNo">607</span>  public void createTable(ByteBuffer in_tableName,<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      List&lt;ColumnDescriptor&gt; columnFamilies) throws IOError, IllegalArgument, AlreadyExists {<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    TableName tableName = getTableName(in_tableName);<a name="line.609"></a>
+<span class="sourceLineNo">610</span>    try {<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      if (getAdmin().tableExists(tableName)) {<a name="line.611"></a>
+<span class="sourceLineNo">612</span>        throw new AlreadyExists("table name already in use");<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      }<a name="line.613"></a>
+<span class="sourceLineNo">614</span>      HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      for (ColumnDescriptor col : columnFamilies) {<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        HColumnDescriptor colDesc = ThriftUtilities.colDescFromThrift(col);<a name="line.616"></a>
+<span class="sourceLineNo">617</span>        desc.addFamily(colDesc);<a name="line.617"></a>
+<span class="sourceLineNo">618</span>      }<a name="line.618"></a>
+<span class="sourceLineNo">619</span>      getAdmin().createTable(desc);<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    } catch (IOException e) {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>      LOG.warn(e.getMessage(), e);<a name="line.621"></a>
+<span class="sourceLineNo">622</span>      throw getIOError(e);<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    } catch (IllegalArgumentException e) {<a name="line.623"></a>
+<span class="sourceLineNo">624</span>      LOG.warn(e.getMessage(), e);<a name="line.624"></a>
+<span class="sourceLineNo">625</span>      throw new IllegalArgument(Throwables.getStackTraceAsString(e));<a name="line.625"></a>
+<span class="sourceLineNo">626</span>    }<a name="line.626"></a>
+<span class="sourceLineNo">627</span>  }<a name="line.627"></a>
+<span class="sourceLineNo">628</span><a name="line.628"></a>
+<span class="sourceLineNo">629</span>  private static TableName getTableName(ByteBuffer buffer) {<a name="line.629"></a>
+<span class="sourceLineNo">630</span>    return TableName.valueOf(getBytes(buffer));<a name="line.630"></a>
+<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
+<span class="sourceLineNo">632</span><a name="line.632"></a>
+<span class="sourceLineNo">633</span>  @Override<a name="line.633"></a>
+<span class="sourceLineNo">634</span>  public void deleteTable(ByteBuffer in_tableName) throws IOError {<a name="line.634"></a>
+<span class="sourceLineNo">635</span>    TableName tableName = getTableName(in_tableName);<a name="line.635"></a>
+<span class="sourceLineNo">636</span>    if (LOG.isDebugEnabled()) {<a name="line.636"></a>
+<span class="sourceLineNo">637</span>      LOG.debug("deleteTable: table={}", tableName);<a name="line.637"></a>
+<span class="sourceLineNo">638</span>    }<a name="line.638"></a>
+<span class="sourceLineNo">639</span>    try {<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      if (!getAdmin().tableExists(tableName)) {<a name="line.640"></a>
+<span class="sourceLineNo">641</span>        throw new IOException("table does not exist");<a name="line.641"></a>
+<span class="sourceLineNo">642</span>      }<a name="line.642"></a>
+<span class="sourceLineNo">643</span>      getAdmin().deleteTable(tableName);<a name="line.643"></a>
+<span class="sourceLineNo">644</span>    } catch (IOException e) {<a name="line.644"></a>
+<span class="sourceLineNo">645</span>      LOG.warn(e.getMessage(), e);<a name="line.645"></a>
+<span class="sourceLineNo">646</span>      throw getIOError(e);<a name="line.646"></a>
+<span class="sourceLineNo">647</span>    }<a name="line.647"></a>
+<span class="sourceLineNo">648</span>  }<a name="line.648"></a>
+<span class="sourceLineNo">649</span><a name="line.649"></a>
+<span class="sourceLineNo">650</span>  @Override<a name="line.650"></a>
+<span class="sourceLineNo">651</span>  public void mutateRow(ByteBuffer tableName, ByteBuffer row,<a name="line.651"></a>
+<span class="sourceLineNo">652</span>      List&lt;Mutation&gt; mutations, Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.652"></a>
+<span class="sourceLineNo">653</span>      throws IOError, IllegalArgument {<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    mutateRowTs(tableName, row, mutations, HConstants.LATEST_TIMESTAMP, attributes);<a name="line.654"></a>
+<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
+<span class="sourceLineNo">656</span><a name="line.656"></a>
+<span class="sourceLineNo">657</span>  @Override<a name="line.657"></a>
+<span class="sourceLineNo">658</span>  public void mutateRowTs(ByteBuffer tableName, ByteBuffer row,<a name="line.658"></a>
+<span class="sourceLineNo">659</span>      List&lt;Mutation&gt; mutations, long timestamp,<a name="line.659"></a>
+<span class="sourceLineNo">660</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.660"></a>
+<span class="sourceLineNo">661</span>      throws IOError, IllegalArgument {<a name="line.661"></a>
+<span class="sourceLineNo">662</span>    Table table = null;<a name="line.662"></a>
+<span class="sourceLineNo">663</span>    try {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>      table = getTable(tableName);<a name="line.664"></a>
+<span class="sourceLineNo">665</span>      Put put = new Put(getBytes(row), timestamp);<a name="line.665"></a>
+<span class="sourceLineNo">666</span>      addAttributes(put, attributes);<a name="line.666"></a>
+<span class="sourceLineNo">667</span><a name="line.667"></a>
+<span class="sourceLineNo">668</span>      Delete delete = new Delete(getBytes(row));<a name="line.668"></a>
+<span class="sourceLineNo">669</span>      addAttributes(delete, attributes);<a name="line.669"></a>
+<span class="sourceLineNo">670</span>      if (metrics != null) {<a name="line.670"></a>
+<span class="sourceLineNo">671</span>        metrics.incNumRowKeysInBatchMutate(mutations.size());<a name="line.671"></a>
+<span class="sourceLineNo">672</span>      }<a name="line.672"></a>
+<span class="sourceLineNo">673</span><a name="line.673"></a>
+<span class="sourceLineNo">674</span>      // I apologize for all this mess :)<a name="line.674"></a>
+<span class="sourceLineNo">675</span>      CellBuilder builder = CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY);<a name="line.675"></a>
+<span class="sourceLineNo">676</span>      for (Mutation m : mutations) {<a name="line.676"></a>
+<span class="sourceLineNo">677</span>        byte[][] famAndQf = CellUtil.parseColumn(getBytes(m.column));<a name="line.677"></a>
+<span class="sourceLineNo">678</span>        if (m.isDelete) {<a name="line.678"></a>
+<span class="sourceLineNo">679</span>          if (famAndQf.length == 1) {<a name="line.679"></a>
+<span class="sourceLineNo">680</span>            delete.addFamily(famAndQf[0], timestamp);<a name="line.680"></a>
+<span class="sourceLineNo">681</span>          } else {<a name="line.681"></a>
+<span class="sourceLineNo">682</span>            delete.addColumns(famAndQf[0], famAndQf[1], timestamp);<a name="line.682"></a>
+<span class="sourceLineNo">683</span>          }<a name="line.683"></a>
+<span class="sourceLineNo">684</span>          delete.setDurability(m.writeToWAL ? Durability.SYNC_WAL : Durability.SKIP_WAL);<a name="line.684"></a>
+<span class="sourceLineNo">685</span>        } else {<a name="line.685"></a>
+<span class="sourceLineNo">686</span>          if(famAndQf.length == 1) {<a name="line.686"></a>
+<span class="sourceLineNo">687</span>            LOG.warn("No column qualifier specified. Delete is the only mutation supported "<a name="line.687"></a>
+<span class="sourceLineNo">688</span>                + "over the whole column family.");<a name="line.688"></a>
+<span class="sourceLineNo">689</span>          } else {<a name="line.689"></a>
+<span class="sourceLineNo">690</span>            put.add(builder.clear()<a name="line.690"></a>
+<span class="sourceLineNo">691</span>                .setRow(put.getRow())<a name="line.691"></a>
+<span class="sourceLineNo">692</span>                .setFamily(famAndQf[0])<a name="line.692"></a>
+<span class="sourceLineNo">693</span>                .setQualifier(famAndQf[1])<a name="line.693"></a>
+<span class="sourceLineNo">694</span>                .setTimestamp(put.getTimestamp())<a name="line.694"></a>
+<span class="sourceLineNo">695</span>                .setType(Cell.Type.Put)<a name="line.695"></a>
+<span class="sourceLineNo">696</span>                .setValue(m.value != null ? getBytes(m.value)<a name="line.696"></a>
+<span class="sourceLineNo">697</span>                    : HConstants.EMPTY_BYTE_ARRAY)<a name="line.697"></a>
+<span class="sourceLineNo">698</span>                .build());<a name="line.698"></a>
+<span class="sourceLineNo">699</span>          }<a name="line.699"></a>
+<span class="sourceLineNo">700</span>          put.setDurability(m.writeToWAL ? Durability.SYNC_WAL : Durability.SKIP_WAL);<a name="line.700"></a>
+<span class="sourceLineNo">701</span>        }<a name="line.701"></a>
+<span class="sourceLineNo">702</span>      }<a name="line.702"></a>
+<span class="sourceLineNo">703</span>      if (!delete.isEmpty()) {<a name="line.703"></a>
+<span class="sourceLineNo">704</span>        table.delete(delete);<a name="line.704"></a>
+<span class="sourceLineNo">705</span>      }<a name="line.705"></a>
+<span class="sourceLineNo">706</span>      if (!put.isEmpty()) {<a name="line.706"></a>
+<span class="sourceLineNo">707</span>        table.put(put);<a name="line.707"></a>
+<span class="sourceLineNo">708</span>      }<a name="line.708"></a>
+<span class="sourceLineNo">709</span>    } catch (IOException e) {<a name="line.709"></a>
+<span class="sourceLineNo">710</span>      LOG.warn(e.getMessage(), e);<a name="line.710"></a>
+<span class="sourceLineNo">711</span>      throw getIOError(e);<a name="line.711"></a>
+<span class="sourceLineNo">712</span>    } catch (IllegalArgumentException e) {<a name="line.712"></a>
+<span class="sourceLineNo">713</span>      LOG.warn(e.getMessage(), e);<a name="line.713"></a>
+<span class="sourceLineNo">714</span>      throw new IllegalArgument(Throwables.getStackTraceAsString(e));<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    } finally{<a name="line.715"></a>
+<span class="sourceLineNo">716</span>      closeTable(table);<a name="line.716"></a>
+<span class="sourceLineNo">717</span>    }<a name="line.717"></a>
+<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
+<span class="sourceLineNo">719</span><a name="line.719"></a>
+<span class="sourceLineNo">720</span>  @Override<a name="line.720"></a>
+<span class="sourceLineNo">721</span>  public void mutateRows(ByteBuffer tableName, List&lt;BatchMutation&gt; rowBatches,<a name="line.721"></a>
+<span class="sourceLineNo">722</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.722"></a>
+<span class="sourceLineNo">723</span>      throws IOError, IllegalArgument, TException {<a name="line.723"></a>
+<span class="sourceLineNo">724</span>    mutateRowsTs(tableName, rowBatches, HConstants.LATEST_TIMESTAMP, attributes);<a name="line.724"></a>
+<span class="sourceLineNo">725</span>  }<a name="line.725"></a>
+<span class="sourceLineNo">726</span><a name="line.726"></a>
+<span class="sourceLineNo">727</span>  @Override<a name="line.727"></a>
+<span class="sourceLineNo">728</span>  public void mutateRowsTs(<a name="line.728"></a>
+<span class="sourceLineNo">729</span>      ByteBuffer tableName, List&lt;BatchMutation&gt; rowBatches, long timestamp,<a name="line.729"></a>
+<span class="sourceLineNo">730</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.730"></a>
+<span class="sourceLineNo">731</span>      throws IOError, IllegalArgument, TException {<a name="line.731"></a>
+<span class="sourceLineNo">732</span>    List&lt;Put&gt; puts = new ArrayList&lt;&gt;();<a name="line.732"></a>
+<span class="sourceLineNo">733</span>    List&lt;Delete&gt; deletes = new ArrayList&lt;&gt;();<a name="line.733"></a>
+<span class="sourceLineNo">734</span>    CellBuilder builder = CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY);<a name="line.734"></a>
+<span class="sourceLineNo">735</span>    for (BatchMutation batch : rowBatches) {<a name="line.735"></a>
+<span class="sourceLineNo">736</span>      byte[] row = getBytes(batch.row);<a name="line.736"></a>
+<span class="sourceLineNo">737</span>      List&lt;Mutation&gt; mutations = batch.mutations;<a name="line.737"></a>
+<span class="sourceLineNo">738</span>      Delete delete = new Delete(row);<a name="line.738"></a>
+<span class="sourceLineNo">739</span>      addAttributes(delete, attributes);<a name="line.739"></a>
+<span class="sourceLineNo">740</span>      Put put = new Put(row, timestamp);<a name="line.740"></a>
+<span class="sourceLineNo">741</span>      addAttributes(put, attributes);<a name="line.741"></a>
+<span class="sourceLineNo">742</span>      for (Mutation m : mutations) {<a name="line.742"></a>
+<span class="sourceLineNo">743</span>        byte[][] famAndQf = CellUtil.parseColumn(getBytes(m.column));<a name="line.743"></a>
+<span class="sourceLineNo">744</span>        if (m.isDelete) {<a name="line.744"></a>
+<span class="sourceLineNo">745</span>          // no qualifier, family only.<a name="line.745"></a>
+<span class="sourceLineNo">746</span>          if (famAndQf.length == 1) {<a name="line.746"></a>
+<span class="sourceLineNo">747</span>            delete.addFamily(famAndQf[0], timestamp);<a name="line.747"></a>
+<span class="sourceLineNo">748</span>          } else {<a name="line.748"></a>
+<span class="sourceLineNo">749</span>            delete.addColumns(famAndQf[0], famAndQf[1], timestamp);<a name="line.749"></a>
+<span class="sourceLineNo">750</span>          }<a name="line.750"></a>
+<span class="sourceLineNo">751</span>          delete.setDurability(m.writeToWAL ? Durability.SYNC_WAL<a name="line.751"></a>
+<span class="sourceLineNo">752</span>              : Durability.SKIP_WAL);<a name="line.752"></a>
+<span class="sourceLineNo">753</span>        } else {<a name="line.753"></a>
+<span class="sourceLineNo">754</span>          if (famAndQf.length == 1) {<a name="line.754"></a>
+<span class="sourceLineNo">755</span>            LOG.warn("No column qualifier specified. Delete is the only mutation supported "<a name="line.755"></a>
+<span class="sourceLineNo">756</span>                + "over the whole column family.");<a name="line.756"></a>
+<span class="sourceLineNo">757</span>          }<a name="line.757"></a>
+<span class="sourceLineNo">758</span>          if (famAndQf.length == 2) {<a name="line.758"></a>
+<span class="sourceLineNo">759</span>            try {<a name="line.759"></a>
+<span class="sourceLineNo">760</span>              put.add(builder.clear()<a name="line.760"></a>
+<span class="sourceLineNo">761</span>                  .setRow(put.getRow())<a name="line.761"></a>
+<span class="sourceLineNo">762</span>                  .setFamily(famAndQf[0])<a name="line.762"></a>
+<span class="sourceLineNo">763</span>                  .setQualifier(famAndQf[1])<a name="line.763"></a>
+<span class="sourceLineNo">764</span>                  .setTimestamp(put.getTimestamp())<a name="line.764"></a>
+<span class="sourceLineNo">765</span>                  .setType(Cell.Type.Put)<a name="line.765"></a>
+<span class="sourceLineNo">766</span>                  .setValue(m.value != null ? getBytes(m.value)<a name="line.766"></a>
+<span class="sourceLineNo">767</span>                      : HConstants.EMPTY_BYTE_ARRAY)<a name="line.767"></a>
+<span class="sourceLineNo">768</span>                  .build());<a name="line.768"></a>
+<span class="sourceLineNo">769</span>            } catch (IOException e) {<a name="line.769"></a>
+<span class="sourceLineNo">770</span>              throw new IllegalArgumentException(e);<a name="line.770"></a>
+<span class="sourceLineNo">771</span>            }<a name="line.771"></a>
+<span class="sourceLineNo">772</span>          } else {<a name="line.772"></a>
+<span class="sourceLineNo">773</span>            throw new IllegalArgumentException("Invalid famAndQf provided.");<a name="line.773"></a>
+<span class="sourceLineNo">774</span>          }<a name="line.774"></a>
+<span class="sourceLineNo">775</span>          put.setDurability(m.writeToWAL ? Durability.SYNC_WAL : Durability.SKIP_WAL);<a name="line.775"></a>
+<span class="sourceLineNo">776</span>        }<a name="line.776"></a>
+<span class="sourceLineNo">777</span>      }<a name="line.777"></a>
+<span class="sourceLineNo">778</span>      if (!delete.isEmpty()) {<a name="line.778"></a>
+<span class="sourceLineNo">779</span>        deletes.add(delete);<a name="line.779"></a>
+<span class="sourceLineNo">780</span>      }<a name="line.780"></a>
+<span class="sourceLineNo">781</span>      if (!put.isEmpty()) {<a name="line.781"></a>
+<span class="sourceLineNo">782</span>        puts.add(put);<a name="line.782"></a>
+<span class="sourceLineNo">783</span>      }<a name="line.783"></a>
+<span class="sourceLineNo">784</span>    }<a name="line.784"></a>
+<span class="sourceLineNo">785</span><a name="line.785"></a>
+<span class="sourceLineNo">786</span>    Table table = null;<a name="line.786"></a>
+<span class="sourceLineNo">787</span>    try {<a name="line.787"></a>
+<span class="sourceLineNo">788</span>      table = getTable(tableName);<a name="line.788"></a>
+<span class="sourceLineNo">789</span>      if (!puts.isEmpty()) {<a name="line.789"></a>
+<span class="sourceLineNo">790</span>        table.put(puts);<a name="line.790"></a>
+<span class="sourceLineNo">791</span>      }<a name="line.791"></a>
+<span class="sourceLineNo">792</span>      if (!deletes.isEmpty()) {<a name="line.792"></a>
+<span class="sourceLineNo">793</span>        table.delete(deletes);<a name="line.793"></a>
+<span class="sourceLineNo">794</span>      }<a name="line.794"></a>
+<span class="sourceLineNo">795</span>    } catch (IOException e) {<a name="line.795"></a>
+<span class="sourceLineNo">796</span>      LOG.warn(e.getMessage(), e);<a name="line.796"></a>
+<span class="sourceLineNo">797</span>      throw getIOError(e);<a name="line.797"></a>
+<span class="sourceLineNo">798</span>    } catch (IllegalArgumentException e) {<a name="line.798"></a>
+<span class="sourceLineNo">799</span>      LOG.warn(e.getMessage(), e);<a name="line.799"></a>
+<span class="sourceLineNo">800</span>      throw new IllegalArgument(Throwables.getStackTraceAsString(e));<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    } finally{<a name="line.801"></a>
+<span class="sourceLineNo">802</span>      closeTable(table);<a name="line.802"></a>
+<span class="sourceLineNo">803</span>    }<a name="line.803"></a>
+<span class="sourceLineNo">804</span>  }<a name="line.804"></a>
+<span class="sourceLineNo">805</span><a name="line.805"></a>
+<span class="sourceLineNo">806</span>  @Override<a name="line.806"></a>
+<span class="sourceLineNo">807</span>  public long atomicIncrement(<a name="line.807"></a>
+<span class="sourceLineNo">808</span>      ByteBuffer tableName, ByteBuffer row, ByteBuffer column, long amount)<a name="line.808"></a>
+<span class="sourceLineNo">809</span>      throws IOError, IllegalArgument, TException {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>    byte [][] famAndQf = CellUtil.parseColumn(getBytes(column));<a name="line.810"></a>
+<span class="sourceLineNo">811</span>    if(famAndQf.length == 1) {<a name="line.811"></a>
+<span class="sourceLineNo">812</span>      return atomicIncrement(tableName, row, famAndQf[0], HConstants.EMPTY_BYTE_ARRAY, amount);<a name="line.812"></a>
+<span class="sourceLineNo">813</span>    }<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    return atomicIncrement(tableName, row, famAndQf[0], famAndQf[1], amount);<a name="line.814"></a>
+<span class="sourceLineNo">815</span>  }<a name="line.815"></a>
+<span class="sourceLineNo">816</span><a name="line.816"></a>
+<span class="sourceLineNo">817</span>  protected long atomicIncrement(ByteBuffer tableName, ByteBuffer row,<a name="line.817"></a>
+<span class="sourceLineNo">818</span>      byte [] family, byte [] qualifier, long amount)<a name="line.818"></a>
+<span class="sourceLineNo">819</span>      throws IOError, IllegalArgument, TException {<a name="line.819"></a>
+<span class="sourceLineNo">820</span>    Table table = null;<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    try {<a name="line.821"></a>
+<span class="sourceLineNo">822</span>      table = getTable(tableName);<a name="line.822"></a>
+<span class="sourceLineNo">823</span>      return table.incrementColumnValue(<a name="line.823"></a>
+<span class="sourceLineNo">824</span>          getBytes(row), family, qualifier, amount);<a name="line.824"></a>
+<span class="sourceLineNo">825</span>    } catch (IOException e) {<a name="line.825"></a>
+<span class="sourceLineNo">826</span>      LOG.warn(e.getMessage(), e);<a name="line.826"></a>
+<span class="sourceLineNo">827</span>      throw getIOError(e);<a name="line.827"></a>
+<span class="sourceLineNo">828</span>    } finally {<a name="line.828"></a>
+<span class="sourceLineNo">829</span>      closeTable(table);<a name="line.829"></a>
+<span class="sourceLineNo">830</span>    }<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">833</span>  @Override<a name="line.833"></a>
+<span class="sourceLineNo">834</span>  public void scannerClose(int id) throws IOError, IllegalArgument {<a name="line.834"></a>
+<span class="sourceLineNo">835</span>    LOG.debug("scannerClose: id={}", id);<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    ResultScannerWrapper resultScannerWrapper = getScanner(id);<a name="line.836"></a>
+<span class="sourceLineNo">837</span>    if (resultScannerWrapper == null) {<a name="line.837"></a>
+<span class="sourceLineNo">838</span>      LOG.warn("scanner ID is invalid");<a name="line.838"></a>
+<span class="sourceLineNo">839</span>      throw new IllegalArgument("scanner ID is invalid");<a name="line.839"></a>
+<span class="sourceLineNo">840</span>    }<a name="line.840"></a>
+<span class="sourceLineNo">841</span>    resultScannerWrapper.getScanner().close();<a name="line.841"></a>
+<span class="sourceLineNo">842</span>    removeScanner(id);<a name="line.842"></a>
+<span class="sourceLineNo">843</span>  }<a name="line.843"></a>
+<span class="sourceLineNo">844</span><a name="line.844"></a>
+<span class="sourceLineNo">845</span>  @Override<a name="line.845"></a>
+<span class="sourceLineNo">846</span>  public List&lt;TRowResult&gt; scannerGetList(int id,int nbRows)<a name="line.846"></a>
+<span class="sourceLineNo">847</span>      throws IllegalArgument, IOError {<a name="line.847"></a>
+<span class="sourceLineNo">848</span>    LOG.debug("scannerGetList: id={}", id);<a name="line.848"></a>
+<span class="sourceLineNo">849</span>    ResultScannerWrapper resultScannerWrapper = getScanner(id);<a name="line.849"></a>
+<span class="sourceLineNo">850</span>    if (null == resultScannerWrapper) {<a name="line.850"></a>
+<span class="sourceLineNo">851</span>      String message = "scanner ID is invalid";<a name="line.851"></a>
+<span class="sourceLineNo">852</span>      LOG.warn(message);<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      throw new IllegalArgument("scanner ID is invalid");<a name="line.853"></a>
+<span class="sourceLineNo">854</span>    }<a name="line.854"></a>
+<span class="sourceLineNo">855</span><a name="line.855"></a>
+<span class="sourceLineNo">856</span>    Result [] results;<a name="line.856"></a>
+<span class="sourceLineNo">857</span>    try {<a name="line.857"></a>
+<span class="sourceLineNo">858</span>      results = resultScannerWrapper.getScanner().next(nbRows);<a name="line.858"></a>
+<span class="sourceLineNo">859</span>      if (null == results) {<a name="line.859"></a>
+<span class="sourceLineNo">860</span>        return new ArrayList&lt;&gt;();<a name="line.860"></a>
+<span class="sourceLineNo">861</span>      }<a name="line.861"></a>
+<span class="sourceLineNo">862</span>    } catch (IOException e) {<a name="line.862"></a>
+<span class="sourceLineNo">863</span>      LOG.warn(e.getMessage(), e);<a name="line.863"></a>
+<span class="sourceLineNo">864</span>      throw getIOError(e);<a name="line.864"></a>
+<span class="sourceLineNo">865</span>    }<a name="line.865"></a>
+<span class="sourceLineNo">866</span>    return ThriftUtilities.rowResultFromHBase(results, resultScannerWrapper.isColumnSorted());<a name="line.866"></a>
+<span class="sourceLineNo">867</span>  }<a name="line.867"></a>
+<span class="sourceLineNo">868</span><a name="line.868"></a>
+<span class="sourceLineNo">869</span>  @Override<a name="line.869"></a>
+<span class="sourceLineNo">870</span>  public List&lt;TRowResult&gt; scannerGet(int id) throws IllegalArgument, IOError {<a name="line.870"></a>
+<span class="sourceLineNo">871</span>    return scannerGetList(id,1);<a name="line.871"></a>
+<span class="sourceLineNo">872</span>  }<a name="line.872"></a>
+<span class="sourceLineNo">873</span><a name="line.873"></a>
+<span class="sourceLineNo">874</span>  @Override<a name="line.874"></a>
+<span class="sourceLineNo">875</span>  public int scannerOpenWithScan(ByteBuffer tableName, TScan tScan,<a name="line.875"></a>
+<span class="sourceLineNo">876</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.876"></a>
+<span class="sourceLineNo">877</span>      throws IOError {<a name="line.877"></a>
+<span class="sourceLineNo">878</span><a name="line.878"></a>
+<span class="sourceLineNo">879</span>    Table table = null;<a name="line.879"></a>
+<span class="sourceLineNo">880</span>    try {<a name="line.880"></a>
+<span class="sourceLineNo">881</span>      table = getTable(tableName);<a name="line.881"></a>
+<span class="sourceLineNo">882</span>      Scan scan = new Scan();<a name="line.882"></a>
+<span class="sourceLineNo">883</span>      addAttributes(scan, attributes);<a name="line.883"></a>
+<span class="sourceLineNo">884</span>      if (tScan.isSetStartRow()) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>        scan.setStartRow(tScan.getStartRow());<a name="line.885"></a>
+<span class="sourceLineNo">886</span>      }<a name="line.886"></a>
+<span class="sourceLineNo">887</span>      if (tScan.isSetStopRow()) {<a name="line.887"></a>
+<span class="sourceLineNo">888</span>        scan.setStopRow(tScan.getStopRow());<a name="line.888"></a>
+<span class="sourceLineNo">889</span>      }<a name="line.889"></a>
+<span class="sourceLineNo">890</span>      if (tScan.isSetTimestamp()) {<a name="line.890"></a>
+<span class="sourceLineNo">891</span>        scan.setTimeRange(0, tScan.getTimestamp());<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      }<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      if (tScan.isSetCaching()) {<a name="line.893"></a>
+<span class="sourceLineNo">894</span>        scan.setCaching(tScan.getCaching());<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      }<a name="line.895"></a>
+<span class="sourceLineNo">896</span>      if (tScan.isSetBatchSize()) {<a name="line.896"></a>
+<span class="sourceLineNo">897</span>        scan.setBatch(tScan.getBatchSize());<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      }<a name="line.898"></a>
+<span class="sourceLineNo">899</span>      if (tScan.isSetColumns() &amp;&amp; !tScan.getColumns().isEmpty()) {<a name="line.899"></a>
+<span class="sourceLineNo">900</span>        for(ByteBuffer column : tScan.getColumns()) {<a name="line.900"></a>
+<span class="sourceLineNo">901</span>          byte [][] famQf = CellUtil.parseColumn(getBytes(column));<a name="line.901"></a>
+<span class="sourceLineNo">902</span>          if(famQf.length == 1) {<a name="line.902"></a>
+<span class="sourceLineNo">903</span>            scan.addFamily(famQf[0]);<a name="line.903"></a>
+<span class="sourceLineNo">904</span>          } else {<a name="line.904"></a>
+<span class="sourceLineNo">905</span>            scan.addColumn(famQf[0], famQf[1]);<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>      }<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      if (tScan.isSetFilterString()) {<a name="line.909"></a>
+<span class="sourceLineNo">910</span>        ParseFilter parseFilter = new ParseFilter();<a name="line.910"></a>
+<span class="sourceLineNo">911</span>        scan.setFilter(<a name="line.911"></a>
+<span class="sourceLineNo">912</span>            parseFilter.parseFilterString(tScan.getFilterString()));<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      }<a name="line.913"></a>
+<span class="sourceLineNo">914</span>      if (tScan.isSetReversed()) {<a name="line.914"></a>
+<span class="sourceLineNo">915</span>        scan.setReversed(tScan.isReversed());<a name="line.915"></a>
+<span class="sourceLineNo">916</span>      }<a name="line.916"></a>
+<span class="sourceLineNo">917</span>      if (tScan.isSetCacheBlocks()) {<a name="line.917"></a>
+<span class="sourceLineNo">918</span>        scan.setCacheBlocks(tScan.isCacheBlocks());<a name="line.918"></a>
+<span class="sourceLineNo">919</span>      }<a name="line.919"></a>
+<span class="sourceLineNo">920</span>      return addScanner(table.getScanner(scan), tScan.sortColumns);<a name="line.920"></a>
+<span class="sourceLineNo">921</span>    } catch (IOException e) {<a name="line.921"></a>
+<span class="sourceLineNo">922</span>      LOG.warn(e.g

<TRUNCATED>

[13/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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
deleted file mode 100644
index e692633..0000000
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html
+++ /dev/null
@@ -1,2103 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
-<title>Source code</title>
-<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
-</head>
-<body>
-<div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
-<span class="sourceLineNo">009</span> *<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *<a name="line.11"></a>
-<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
-<span class="sourceLineNo">017</span> */<a name="line.17"></a>
-<span class="sourceLineNo">018</span><a name="line.18"></a>
-<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.thrift;<a name="line.19"></a>
-<span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.util.Bytes.getBytes;<a name="line.21"></a>
-<span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.io.IOException;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.net.InetAddress;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.net.InetSocketAddress;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.net.UnknownHostException;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.nio.ByteBuffer;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.security.PrivilegedAction;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.ArrayList;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.Arrays;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.Collections;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.HashMap;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.List;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.Map;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.TreeMap;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.concurrent.BlockingQueue;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.concurrent.ExecutorService;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.concurrent.TimeUnit;<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>import javax.security.auth.callback.Callback;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import javax.security.sasl.AuthorizeCallback;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import javax.security.sasl.SaslServer;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.commons.lang3.ArrayUtils;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.conf.Configuration;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.Cell.Type;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CellBuilder;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.CellBuilderFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.HConstants;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.ServerName;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.TableName;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.client.Append;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.client.Get;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.client.OperationWithAttributes;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.client.Put;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Result;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.client.Table;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.filter.ParseFilter;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.filter.PrefixFilter;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.filter.WhileMatchFilter;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.http.HttpServerUtil;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.security.SaslUtil;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.security.SaslUtil.QualityOfProtection;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.security.SecurityUtil;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.thrift.generated.AlreadyExists;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.thrift.generated.BatchMutation;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.thrift.generated.ColumnDescriptor;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.thrift.generated.Hbase;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.thrift.generated.IOError;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.thrift.generated.IllegalArgument;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.thrift.generated.Mutation;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.thrift.generated.TAppend;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.thrift.generated.TCell;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.thrift.generated.TIncrement;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.thrift.generated.TRegionInfo;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.thrift.generated.TRowResult;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.thrift.generated.TScan;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.util.ConnectionCache;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.util.DNS;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.util.JvmPauseMonitor;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.util.Strings;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.security.SaslRpcServer.SaslGssCallbackHandler;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.security.authorize.ProxyUsers;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.thrift.TException;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.thrift.TProcessor;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.thrift.protocol.TBinaryProtocol;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.thrift.protocol.TCompactProtocol;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.thrift.protocol.TProtocolFactory;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.thrift.server.THsHaServer;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.thrift.server.TNonblockingServer;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.thrift.server.TServer;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.thrift.server.TServlet;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.thrift.server.TThreadedSelectorServer;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.thrift.transport.TFramedTransport;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.thrift.transport.TNonblockingServerSocket;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.thrift.transport.TNonblockingServerTransport;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.thrift.transport.TSaslServerTransport;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.thrift.transport.TServerSocket;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.thrift.transport.TServerTransport;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.thrift.transport.TTransportFactory;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.eclipse.jetty.http.HttpVersion;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.eclipse.jetty.server.HttpConfiguration;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.eclipse.jetty.server.HttpConnectionFactory;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.eclipse.jetty.server.SecureRequestCustomizer;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.eclipse.jetty.server.Server;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.eclipse.jetty.server.SslConnectionFactory;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.eclipse.jetty.servlet.ServletContextHandler;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.eclipse.jetty.util.ssl.SslContextFactory;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.eclipse.jetty.util.thread.QueuedThreadPool;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.slf4j.Logger;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.slf4j.LoggerFactory;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hbase.thirdparty.com.google.common.base.Joiner;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hbase.thirdparty.com.google.common.base.Splitter;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hbase.thirdparty.com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Option;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.OptionGroup;<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> * ThriftServerRunner - this class starts up a Thrift server which implements<a name="line.149"></a>
-<span class="sourceLineNo">150</span> * the Hbase API specified in the Hbase.thrift IDL file.<a name="line.150"></a>
-<span class="sourceLineNo">151</span> */<a name="line.151"></a>
-<span class="sourceLineNo">152</span>@InterfaceAudience.Private<a name="line.152"></a>
-<span class="sourceLineNo">153</span>public class ThriftServerRunner implements Runnable {<a name="line.153"></a>
-<span class="sourceLineNo">154</span><a name="line.154"></a>
-<span class="sourceLineNo">155</span>  private static final Logger LOG = LoggerFactory.getLogger(ThriftServerRunner.class);<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  private static final int DEFAULT_HTTP_MAX_HEADER_SIZE = 64 * 1024; // 64k<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  static final String SERVER_TYPE_CONF_KEY =<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      "hbase.regionserver.thrift.server.type";<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>  static final String BIND_CONF_KEY = "hbase.regionserver.thrift.ipaddress";<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  static final String COMPACT_CONF_KEY = "hbase.regionserver.thrift.compact";<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  static final String FRAMED_CONF_KEY = "hbase.regionserver.thrift.framed";<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  static final String MAX_FRAME_SIZE_CONF_KEY =<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          "hbase.regionserver.thrift.framed.max_frame_size_in_mb";<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  static final String PORT_CONF_KEY = "hbase.regionserver.thrift.port";<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  static final String COALESCE_INC_KEY = "hbase.regionserver.thrift.coalesceIncrement";<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  static final String USE_HTTP_CONF_KEY = "hbase.regionserver.thrift.http";<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  static final String HTTP_MIN_THREADS_KEY = "hbase.thrift.http_threads.min";<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  static final String HTTP_MAX_THREADS_KEY = "hbase.thrift.http_threads.max";<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  static final String THRIFT_SSL_ENABLED_KEY = "hbase.thrift.ssl.enabled";<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  static final String THRIFT_SSL_KEYSTORE_STORE_KEY = "hbase.thrift.ssl.keystore.store";<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  static final String THRIFT_SSL_KEYSTORE_PASSWORD_KEY = "hbase.thrift.ssl.keystore.password";<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  static final String THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY = "hbase.thrift.ssl.keystore.keypassword";<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  static final String THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY =<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      "hbase.thrift.ssl.exclude.cipher.suites";<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  static final String THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY =<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      "hbase.thrift.ssl.include.cipher.suites";<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  static final String THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY = "hbase.thrift.ssl.exclude.protocols";<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  static final String THRIFT_SSL_INCLUDE_PROTOCOLS_KEY = "hbase.thrift.ssl.include.protocols";<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  static final String THRIFT_SUPPORT_PROXYUSER_KEY = "hbase.thrift.support.proxyuser";<a name="line.184"></a>
-<span class="sourceLineNo">185</span><a name="line.185"></a>
-<span class="sourceLineNo">186</span>  static final String THRIFT_DNS_INTERFACE_KEY = "hbase.thrift.dns.interface";<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  static final String THRIFT_DNS_NAMESERVER_KEY = "hbase.thrift.dns.nameserver";<a name="line.187"></a>
-<span class="sourceLineNo">188</span>  static final String THRIFT_KERBEROS_PRINCIPAL_KEY = "hbase.thrift.kerberos.principal";<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  static final String THRIFT_KEYTAB_FILE_KEY = "hbase.thrift.keytab.file";<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  static final String THRIFT_SPNEGO_PRINCIPAL_KEY = "hbase.thrift.spnego.principal";<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  static final String THRIFT_SPNEGO_KEYTAB_FILE_KEY = "hbase.thrift.spnego.keytab.file";<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>   * Amount of time in milliseconds before a server thread will timeout<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * waiting for client to send data on a connected socket. Currently,<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * applies only to TBoundedThreadPoolServer<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   */<a name="line.197"></a>
-<span class="sourceLineNo">198</span>  public static final String THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY =<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    "hbase.thrift.server.socket.read.timeout";<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  public static final int THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT = 60000;<a name="line.200"></a>
-<span class="sourceLineNo">201</span><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>   * Thrift quality of protection configuration key. Valid values can be:<a name="line.204"></a>
-<span class="sourceLineNo">205</span>   * auth-conf: authentication, integrity and confidentiality checking<a name="line.205"></a>
-<span class="sourceLineNo">206</span>   * auth-int: authentication and integrity checking<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   * auth: authentication only<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   *<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   * This is used to authenticate the callers and support impersonation.<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   * The thrift server and the HBase cluster must run in secure mode.<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   */<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  static final String THRIFT_QOP_KEY = "hbase.thrift.security.qop";<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  static final String BACKLOG_CONF_KEY = "hbase.regionserver.thrift.backlog";<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>  private static final String DEFAULT_BIND_ADDR = "0.0.0.0";<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  public static final int DEFAULT_LISTEN_PORT = 9090;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  public static final int HREGION_VERSION = 1;<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>  private final int listenPort;<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>  private Configuration conf;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  volatile TServer tserver;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  volatile Server httpServer;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>  private final Hbase.Iface handler;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  private final ThriftMetrics metrics;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  private final HBaseHandler hbaseHandler;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private final UserGroupInformation serviceUGI;<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private SaslUtil.QualityOfProtection qop;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  private String host;<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>  private final boolean securityEnabled;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  private final boolean doAsEnabled;<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>  private final JvmPauseMonitor pauseMonitor;<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>  static String THRIFT_HTTP_ALLOW_OPTIONS_METHOD = "hbase.thrift.http.allow.options.method";<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  private static boolean THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT = false;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  /** An enum of server implementation selections */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  public enum ImplType {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    HS_HA("hsha", true, THsHaServer.class, true),<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    NONBLOCKING("nonblocking", true, TNonblockingServer.class, true),<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    THREAD_POOL("threadpool", false, TBoundedThreadPoolServer.class, true),<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    THREADED_SELECTOR("threadedselector", true, TThreadedSelectorServer.class, true);<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>    public static final ImplType DEFAULT = THREAD_POOL;<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>    final String option;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    final boolean isAlwaysFramed;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    final Class&lt;? extends TServer&gt; serverClass;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    final boolean canSpecifyBindIP;<a name="line.252"></a>
-<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>    private ImplType(String option, boolean isAlwaysFramed,<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        Class&lt;? extends TServer&gt; serverClass, boolean canSpecifyBindIP) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      this.option = option;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      this.isAlwaysFramed = isAlwaysFramed;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      this.serverClass = serverClass;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      this.canSpecifyBindIP = canSpecifyBindIP;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>    /**<a name="line.262"></a>
-<span class="sourceLineNo">263</span>     * @return &lt;code&gt;-option&lt;/code&gt;<a name="line.263"></a>
-<span class="sourceLineNo">264</span>     */<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    @Override<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    public String toString() {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      return "-" + option;<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>    public String getOption() {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      return option;<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>    public boolean isAlwaysFramed() {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      return isAlwaysFramed;<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>    public String getDescription() {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      StringBuilder sb = new StringBuilder("Use the " +<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          serverClass.getSimpleName());<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      if (isAlwaysFramed) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        sb.append(" This implies the framed transport.");<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      }<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      if (this == DEFAULT) {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        sb.append("This is the default.");<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      return sb.toString();<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    static OptionGroup createOptionGroup() {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      OptionGroup group = new OptionGroup();<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      for (ImplType t : values()) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        group.addOption(new Option(t.option, t.getDescription()));<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      }<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      return group;<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>    public static ImplType getServerImpl(Configuration conf) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      String confType = conf.get(SERVER_TYPE_CONF_KEY, THREAD_POOL.option);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      for (ImplType t : values()) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        if (confType.equals(t.option)) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>          return t;<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>      throw new AssertionError("Unknown server ImplType.option:" + confType);<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>    static void setServerImpl(CommandLine cmd, Configuration conf) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      ImplType chosenType = null;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      int numChosen = 0;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      for (ImplType t : values()) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        if (cmd.hasOption(t.option)) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>          chosenType = t;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>          ++numChosen;<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>      if (numChosen &lt; 1) {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>        LOG.info("Using default thrift server type");<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        chosenType = DEFAULT;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      } else if (numChosen &gt; 1) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        throw new AssertionError("Exactly one option out of " +<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          Arrays.toString(values()) + " has to be specified");<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      LOG.info("Using thrift server type " + chosenType.option);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      conf.set(SERVER_TYPE_CONF_KEY, chosenType.option);<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 String simpleClassName() {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      return serverClass.getSimpleName();<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>    public static List&lt;String&gt; serversThatCannotSpecifyBindIP() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      List&lt;String&gt; l = new ArrayList&lt;&gt;();<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      for (ImplType t : values()) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        if (!t.canSpecifyBindIP) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>          l.add(t.simpleClassName());<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      return l;<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><a name="line.342"></a>
-<span class="sourceLineNo">343</span>  public ThriftServerRunner(Configuration conf) throws IOException {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    // login the server principal (if using secure Hadoop)<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    UserProvider userProvider = UserProvider.instantiate(conf);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    securityEnabled = userProvider.isHadoopSecurityEnabled()<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        &amp;&amp; userProvider.isHBaseSecurityEnabled();<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    if (securityEnabled) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      host = Strings.domainNamePointerToHostName(DNS.getDefaultHost(<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        conf.get(THRIFT_DNS_INTERFACE_KEY, "default"),<a name="line.350"></a>
-<span class="sourceLineNo">351</span>        conf.get(THRIFT_DNS_NAMESERVER_KEY, "default")));<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      userProvider.login(THRIFT_KEYTAB_FILE_KEY, THRIFT_KERBEROS_PRINCIPAL_KEY, host);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    }<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    this.serviceUGI = userProvider.getCurrent().getUGI();<a name="line.354"></a>
-<span class="sourceLineNo">355</span><a name="line.355"></a>
-<span class="sourceLineNo">356</span>    this.conf = HBaseConfiguration.create(conf);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    this.listenPort = conf.getInt(PORT_CONF_KEY, DEFAULT_LISTEN_PORT);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    this.metrics = new ThriftMetrics(conf, ThriftMetrics.ThriftServerType.ONE);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    this.pauseMonitor = new JvmPauseMonitor(conf, this.metrics.getSource());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    this.hbaseHandler = new HBaseHandler(conf, userProvider);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    this.hbaseHandler.initMetrics(metrics);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    this.handler = HbaseHandlerMetricsProxy.newInstance(hbaseHandler, metrics, conf);<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    boolean httpEnabled = conf.getBoolean(USE_HTTP_CONF_KEY, false);<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    doAsEnabled = conf.getBoolean(THRIFT_SUPPORT_PROXYUSER_KEY, false);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    if (doAsEnabled &amp;&amp; !httpEnabled) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      LOG.warn("Fail to enable the doAs feature. " + USE_HTTP_CONF_KEY + " is not configured");<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>    String strQop = conf.get(THRIFT_QOP_KEY);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    if (strQop != null) {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      this.qop = SaslUtil.getQop(strQop);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    }<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    if (qop != null) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      if (qop != QualityOfProtection.AUTHENTICATION &amp;&amp;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>          qop != QualityOfProtection.INTEGRITY &amp;&amp;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>          qop != QualityOfProtection.PRIVACY) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>        throw new IOException(String.format("Invalid %s: It must be one of %s, %s, or %s.",<a name="line.378"></a>
-<span class="sourceLineNo">379</span>                              THRIFT_QOP_KEY,<a name="line.379"></a>
-<span class="sourceLineNo">380</span>                              QualityOfProtection.AUTHENTICATION.name(),<a name="line.380"></a>
-<span class="sourceLineNo">381</span>                              QualityOfProtection.INTEGRITY.name(),<a name="line.381"></a>
-<span class="sourceLineNo">382</span>                              QualityOfProtection.PRIVACY.name()));<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      }<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      checkHttpSecurity(qop, conf);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      if (!securityEnabled) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        throw new IOException("Thrift server must run in secure mode to support authentication");<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><a name="line.390"></a>
-<span class="sourceLineNo">391</span>  private void checkHttpSecurity(QualityOfProtection qop, Configuration conf) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    if (qop == QualityOfProtection.PRIVACY &amp;&amp;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        conf.getBoolean(USE_HTTP_CONF_KEY, false) &amp;&amp;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        !conf.getBoolean(THRIFT_SSL_ENABLED_KEY, false)) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      throw new IllegalArgumentException("Thrift HTTP Server's QoP is privacy, but " +<a name="line.395"></a>
-<span class="sourceLineNo">396</span>          THRIFT_SSL_ENABLED_KEY + " is false");<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 name="line.400"></a>
-<span class="sourceLineNo">401</span>   * Runs the Thrift server<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  @Override<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  public void run() {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    serviceUGI.doAs(new PrivilegedAction&lt;Object&gt;() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      @Override<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      public Object run() {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        try {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>          pauseMonitor.start();<a name="line.409"></a>
-<span class="sourceLineNo">410</span>          if (conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>            setupHTTPServer();<a name="line.411"></a>
-<span class="sourceLineNo">412</span>            httpServer.start();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>            httpServer.join();<a name="line.413"></a>
-<span class="sourceLineNo">414</span>          } else {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>            setupServer();<a name="line.415"></a>
-<span class="sourceLineNo">416</span>            tserver.serve();<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        } catch (Exception e) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>          LOG.error(HBaseMarkers.FATAL, "Cannot run ThriftServer", e);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>          // Crash the process if the ThriftServer is not running<a name="line.420"></a>
-<span class="sourceLineNo">421</span>          System.exit(-1);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        }<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        return null;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    });<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><a name="line.428"></a>
-<span class="sourceLineNo">429</span>  public void shutdown() {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    if (pauseMonitor != null) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      pauseMonitor.stop();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    }<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    if (tserver != null) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      tserver.stop();<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      tserver = null;<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    }<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    if (httpServer != null) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      try {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        httpServer.stop();<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        httpServer = null;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      } catch (Exception e) {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        LOG.error("Problem encountered in shutting down HTTP server", e);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      }<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      httpServer = null;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>  private void setupHTTPServer() throws IOException {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    TProcessor processor = new Hbase.Processor&lt;&gt;(handler);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    TServlet thriftHttpServlet = new ThriftHttpServlet(processor, protocolFactory, serviceUGI,<a name="line.451"></a>
-<span class="sourceLineNo">452</span>        conf, hbaseHandler, securityEnabled, doAsEnabled);<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // Set the default max thread number to 100 to limit<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    // the number of concurrent requests so that Thrfit HTTP server doesn't OOM easily.<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    // Jetty set the default max thread number to 250, if we don't set it.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    //<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    // Our default min thread number 2 is the same as that used by Jetty.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    int minThreads = conf.getInt(HTTP_MIN_THREADS_KEY, 2);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    int maxThreads = conf.getInt(HTTP_MAX_THREADS_KEY, 100);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    QueuedThreadPool threadPool = new QueuedThreadPool(maxThreads);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    threadPool.setMinThreads(minThreads);<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    httpServer = new Server(threadPool);<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>    // Context handler<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    ServletContextHandler ctxHandler = new ServletContextHandler(httpServer, "/",<a name="line.466"></a>
-<span class="sourceLineNo">467</span>            ServletContextHandler.SESSIONS);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    ctxHandler.addServlet(new ServletHolder(thriftHttpServlet), "/*");<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    HttpServerUtil.constrainHttpMethods(ctxHandler,<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      conf.getBoolean(THRIFT_HTTP_ALLOW_OPTIONS_METHOD, THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT));<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>    // set up Jetty and run the embedded server<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    HttpConfiguration httpConfig = new HttpConfiguration();<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    httpConfig.setSecureScheme("https");<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    httpConfig.setSecurePort(listenPort);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    httpConfig.setHeaderCacheSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    httpConfig.setRequestHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    httpConfig.setResponseHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    httpConfig.setSendServerVersion(false);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    httpConfig.setSendDateHeader(false);<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>    ServerConnector serverConnector;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    if(conf.getBoolean(THRIFT_SSL_ENABLED_KEY, false)) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      HttpConfiguration httpsConfig = new HttpConfiguration(httpConfig);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      httpsConfig.addCustomizer(new SecureRequestCustomizer());<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>      SslContextFactory sslCtxFactory = new SslContextFactory();<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      String keystore = conf.get(THRIFT_SSL_KEYSTORE_STORE_KEY);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      String password = HBaseConfiguration.getPassword(conf,<a name="line.489"></a>
-<span class="sourceLineNo">490</span>          THRIFT_SSL_KEYSTORE_PASSWORD_KEY, null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      String keyPassword = HBaseConfiguration.getPassword(conf,<a name="line.491"></a>
-<span class="sourceLineNo">492</span>          THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY, password);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      sslCtxFactory.setKeyStorePath(keystore);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      sslCtxFactory.setKeyStorePassword(password);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      sslCtxFactory.setKeyManagerPassword(keyPassword);<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>      String[] excludeCiphers = conf.getStrings(<a name="line.497"></a>
-<span class="sourceLineNo">498</span>          THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      if (excludeCiphers.length != 0) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        sslCtxFactory.setExcludeCipherSuites(excludeCiphers);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      }<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      String[] includeCiphers = conf.getStrings(<a name="line.502"></a>
-<span class="sourceLineNo">503</span>          THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      if (includeCiphers.length != 0) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        sslCtxFactory.setIncludeCipherSuites(includeCiphers);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      }<a name="line.506"></a>
-<span class="sourceLineNo">507</span><a name="line.507"></a>
-<span class="sourceLineNo">508</span>      // Disable SSLv3 by default due to "Poodle" Vulnerability - CVE-2014-3566<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      String[] excludeProtocols = conf.getStrings(<a name="line.509"></a>
-<span class="sourceLineNo">510</span>          THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY, "SSLv3");<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      if (excludeProtocols.length != 0) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        sslCtxFactory.setExcludeProtocols(excludeProtocols);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      String[] includeProtocols = conf.getStrings(<a name="line.514"></a>
-<span class="sourceLineNo">515</span>          THRIFT_SSL_INCLUDE_PROTOCOLS_KEY, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      if (includeProtocols.length != 0) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>        sslCtxFactory.setIncludeProtocols(includeProtocols);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      }<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>      serverConnector = new ServerConnector(httpServer,<a name="line.520"></a>
-<span class="sourceLineNo">521</span>          new SslConnectionFactory(sslCtxFactory, HttpVersion.HTTP_1_1.toString()),<a name="line.521"></a>
-<span class="sourceLineNo">522</span>          new HttpConnectionFactory(httpsConfig));<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    } else {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      serverConnector = new ServerConnector(httpServer, new HttpConnectionFactory(httpConfig));<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    serverConnector.setPort(listenPort);<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    serverConnector.setHost(getBindAddress(conf).getHostAddress());<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    httpServer.addConnector(serverConnector);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    httpServer.setStopAtShutdown(true);<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>    if (doAsEnabled) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      ProxyUsers.refreshSuperUserGroupsConfiguration(conf);<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>    LOG.info("Starting Thrift HTTP Server on {}", Integer.toString(listenPort));<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>   * Setting up the thrift TServer<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  private void setupServer() throws Exception {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    // Construct correct ProtocolFactory<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    TProtocolFactory protocolFactory = getProtocolFactory();<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    final TProcessor p = new Hbase.Processor&lt;&gt;(handler);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    ImplType implType = ImplType.getServerImpl(conf);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    TProcessor processor = p;<a name="line.547"></a>
-<span class="sourceLineNo">548</span><a name="line.548"></a>
-<span class="sourceLineNo">549</span>    // Construct correct TransportFactory<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    TTransportFactory transportFactory;<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    if (conf.getBoolean(FRAMED_CONF_KEY, false) || implType.isAlwaysFramed) {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      if (qop != null) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        throw new RuntimeException("Thrift server authentication"<a name="line.553"></a>
-<span class="sourceLineNo">554</span>          + " doesn't work with framed transport yet");<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      transportFactory = new TFramedTransport.Factory(<a name="line.556"></a>
-<span class="sourceLineNo">557</span>          conf.getInt(MAX_FRAME_SIZE_CONF_KEY, 2)  * 1024 * 1024);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      LOG.debug("Using framed transport");<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    } else if (qop == null) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      transportFactory = new TTransportFactory();<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    } else {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      // Extract the name from the principal<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      String thriftKerberosPrincipal = conf.get(THRIFT_KERBEROS_PRINCIPAL_KEY);<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      if (thriftKerberosPrincipal == null) {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>        throw new IllegalArgumentException(THRIFT_KERBEROS_PRINCIPAL_KEY + " cannot be null");<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      }<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      String name = SecurityUtil.getUserFromPrincipal(thriftKerberosPrincipal);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      Map&lt;String, String&gt; saslProperties = SaslUtil.initSaslProperties(qop.name());<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      TSaslServerTransport.Factory saslFactory = new TSaslServerTransport.Factory();<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      saslFactory.addServerDefinition("GSSAPI", name, host, saslProperties,<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        new SaslGssCallbackHandler() {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>          @Override<a name="line.572"></a>
-<span class="sourceLineNo">573</span>          public void handle(Callback[] callbacks)<a name="line.573"></a>
-<span class="sourceLineNo">574</span>              throws UnsupportedCallbackException {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>            AuthorizeCallback ac = null;<a name="line.575"></a>
-<span class="sourceLineNo">576</span>            for (Callback callback : callbacks) {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>              if (callback instanceof AuthorizeCallback) {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>                ac = (AuthorizeCallback) callback;<a name="line.578"></a>
-<span class="sourceLineNo">579</span>              } else {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>                throw new UnsupportedCallbackException(callback,<a name="line.580"></a>
-<span class="sourceLineNo">581</span>                    "Unrecognized SASL GSSAPI Callback");<a name="line.581"></a>
-<span class="sourceLineNo">582</span>              }<a name="line.582"></a>
-<span class="sourceLineNo">583</span>            }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>            if (ac != null) {<a name="line.584"></a>
-<span class="sourceLineNo">585</span>              String authid = ac.getAuthenticationID();<a name="line.585"></a>
-<span class="sourceLineNo">586</span>              String authzid = ac.getAuthorizationID();<a name="line.586"></a>
-<span class="sourceLineNo">587</span>              if (!authid.equals(authzid)) {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>                ac.setAuthorized(false);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>              } else {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>                ac.setAuthorized(true);<a name="line.590"></a>
-<span class="sourceLineNo">591</span>                String userName = SecurityUtil.getUserFromPrincipal(authzid);<a name="line.591"></a>
-<span class="sourceLineNo">592</span>                LOG.info("Effective user: {}", userName);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>                ac.setAuthorizedID(userName);<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>          }<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        });<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      transportFactory = saslFactory;<a name="line.598"></a>
-<span class="sourceLineNo">599</span><a name="line.599"></a>
-<span class="sourceLineNo">600</span>      // Create a processor wrapper, to get the caller<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      processor = (inProt, outProt) -&gt; {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>        TSaslServerTransport saslServerTransport =<a name="line.602"></a>
-<span class="sourceLineNo">603</span>          (TSaslServerTransport)inProt.getTransport();<a name="line.603"></a>
-<span class="sourceLineNo">604</span>        SaslServer saslServer = saslServerTransport.getSaslServer();<a name="line.604"></a>
-<span class="sourceLineNo">605</span>        String principal = saslServer.getAuthorizationID();<a name="line.605"></a>
-<span class="sourceLineNo">606</span>        hbaseHandler.setEffectiveUser(principal);<a name="line.606"></a>
-<span class="sourceLineNo">607</span>        return p.process(inProt, outProt);<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      };<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    }<a name="line.609"></a>
-<span class="sourceLineNo">610</span><a name="line.610"></a>
-<span class="sourceLineNo">611</span>    if (conf.get(BIND_CONF_KEY) != null &amp;&amp; !implType.canSpecifyBindIP) {<a name="line.611"></a>
-<span class="sourceLineNo">612</span>      LOG.error("Server types {} don't support IP address binding at the moment. See " +<a name="line.612"></a>
-<span class="sourceLineNo">613</span>          "https://issues.apache.org/jira/browse/HBASE-2155 for details.",<a name="line.613"></a>
-<span class="sourceLineNo">614</span>          Joiner.on(", ").join(ImplType.serversThatCannotSpecifyBindIP()));<a name="line.614"></a>
-<span class="sourceLineNo">615</span>      throw new RuntimeException("-" + BIND_CONF_KEY + " not supported with " + implType);<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>
-<span class="sourceLineNo">618</span>    // Thrift's implementation uses '0' as a placeholder for 'use the default.'<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    int backlog = conf.getInt(BACKLOG_CONF_KEY, 0);<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>    if (implType == ImplType.HS_HA || implType == ImplType.NONBLOCKING ||<a name="line.621"></a>
-<span class="sourceLineNo">622</span>        implType == ImplType.THREADED_SELECTOR) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      InetAddress listenAddress = getBindAddress(conf);<a name="line.623"></a>
-<span class="sourceLineNo">624</span>      TNonblockingServerTransport serverTransport = new TNonblockingServerSocket(<a name="line.624"></a>
-<span class="sourceLineNo">625</span>          new InetSocketAddress(listenAddress, listenPort));<a name="line.625"></a>
-<span class="sourceLineNo">626</span><a name="line.626"></a>
-<span class="sourceLineNo">627</span>      if (implType == ImplType.NONBLOCKING) {<a name="line.627"></a>
-<span class="sourceLineNo">628</span>        TNonblockingServer.Args serverArgs =<a name="line.628"></a>
-<span class="sourceLineNo">629</span>            new TNonblockingServer.Args(serverTransport);<a name="line.629"></a>
-<span class="sourceLineNo">630</span>        serverArgs.processor(processor)<a name="line.630"></a>
-<span class="sourceLineNo">631</span>                  .transportFactory(transportFactory)<a name="line.631"></a>
-<span class="sourceLineNo">632</span>                  .protocolFactory(protocolFactory);<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        tserver = new TNonblockingServer(serverArgs);<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      } else if (implType == ImplType.HS_HA) {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>        THsHaServer.Args serverArgs = new THsHaServer.Args(serverTransport);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>        CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.636"></a>
-<span class="sourceLineNo">637</span>        ExecutorService executorService = createExecutor(<a name="line.637"></a>
-<span class="sourceLineNo">638</span>            callQueue, serverArgs.getMaxWorkerThreads(), serverArgs.getMaxWorkerThreads());<a name="line.638"></a>
-<span class="sourceLineNo">639</span>        serverArgs.executorService(executorService).processor(processor)<a name="line.639"></a>
-<span class="sourceLineNo">640</span>                .transportFactory(transportFactory).protocolFactory(protocolFactory);<a name="line.640"></a>
-<span class="sourceLineNo">641</span>        tserver = new THsHaServer(serverArgs);<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      } else { // THREADED_SELECTOR<a name="line.642"></a>
-<span class="sourceLineNo">643</span>        TThreadedSelectorServer.Args serverArgs =<a name="line.643"></a>
-<span class="sourceLineNo">644</span>            new HThreadedSelectorServerArgs(serverTransport, conf);<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        ExecutorService executorService = createExecutor(<a name="line.646"></a>
-<span class="sourceLineNo">647</span>            callQueue, serverArgs.getWorkerThreads(), serverArgs.getWorkerThreads());<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        serverArgs.executorService(executorService).processor(processor)<a name="line.648"></a>
-<span class="sourceLineNo">649</span>                .transportFactory(transportFactory).protocolFactory(protocolFactory);<a name="line.649"></a>
-<span class="sourceLineNo">650</span>        tserver = new TThreadedSelectorServer(serverArgs);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      }<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      LOG.info("starting HBase {} server on {}", implType.simpleClassName(),<a name="line.652"></a>
-<span class="sourceLineNo">653</span>          Integer.toString(listenPort));<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    } else if (implType == ImplType.THREAD_POOL) {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      // Thread pool server. Get the IP address to bind to.<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      InetAddress listenAddress = getBindAddress(conf);<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      int readTimeout = conf.getInt(THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY,<a name="line.657"></a>
-<span class="sourceLineNo">658</span>          THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT);<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      TServerTransport serverTransport = new TServerSocket(<a name="line.659"></a>
-<span class="sourceLineNo">660</span>          new TServerSocket.ServerSocketTransportArgs().<a name="line.660"></a>
-<span class="sourceLineNo">661</span>              bindAddr(new InetSocketAddress(listenAddress, listenPort)).backlog(backlog).<a name="line.661"></a>
-<span class="sourceLineNo">662</span>              clientTimeout(readTimeout));<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>      TBoundedThreadPoolServer.Args serverArgs =<a name="line.664"></a>
-<span class="sourceLineNo">665</span>          new TBoundedThreadPoolServer.Args(serverTransport, conf);<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      serverArgs.processor(processor).transportFactory(transportFactory)<a name="line.666"></a>
-<span class="sourceLineNo">667</span>              .protocolFactory(protocolFactory);<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      LOG.info("starting " + ImplType.THREAD_POOL.simpleClassName() + " on "<a name="line.668"></a>
-<span class="sourceLineNo">669</span>          + listenAddress + ":" + Integer.toString(listenPort)<a name="line.669"></a>
-<span class="sourceLineNo">670</span>          + " with readTimeout " + readTimeout + "ms; " + serverArgs);<a name="line.670"></a>
-<span class="sourceLineNo">671</span>      this.tserver = new TBoundedThreadPoolServer(serverArgs, metrics);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    } else {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      throw new AssertionError("Unsupported Thrift server implementation: " +<a name="line.673"></a>
-<span class="sourceLineNo">674</span>          implType.simpleClassName());<a name="line.674"></a>
-<span class="sourceLineNo">675</span>    }<a name="line.675"></a>
-<span class="sourceLineNo">676</span><a name="line.676"></a>
-<span class="sourceLineNo">677</span>    // A sanity check that we instantiated the right type of server.<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    if (tserver.getClass() != implType.serverClass) {<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      throw new AssertionError("Expected to create Thrift server class " +<a name="line.679"></a>
-<span class="sourceLineNo">680</span>          implType.serverClass.getName() + " but got " +<a name="line.680"></a>
-<span class="sourceLineNo">681</span>          tserver.getClass().getName());<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    }<a name="line.682"></a>
-<span class="sourceLineNo">683</span><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>    registerFilters(conf);<a name="line.686"></a>
-<span class="sourceLineNo">687</span>  }<a name="line.687"></a>
-<span class="sourceLineNo">688</span><a name="line.688"></a>
-<span class="sourceLineNo">689</span>  private TProtocolFactory getProtocolFactory() {<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    TProtocolFactory protocolFactory;<a name="line.690"></a>
-<span class="sourceLineNo">691</span><a name="line.691"></a>
-<span class="sourceLineNo">692</span>    if (conf.getBoolean(COMPACT_CONF_KEY, false)) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>      LOG.debug("Using compact protocol");<a name="line.693"></a>
-<span class="sourceLineNo">694</span>      protocolFactory = new TCompactProtocol.Factory();<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    } else {<a name="line.695"></a>
-<span class="sourceLineNo">696</span>      LOG.debug("Using binary protocol");<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      protocolFactory = new TBinaryProtocol.Factory();<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    }<a name="line.698"></a>
-<span class="sourceLineNo">699</span><a name="line.699"></a>
-<span class="sourceLineNo">700</span>    return protocolFactory;<a name="line.700"></a>
-<span class="sourceLineNo">701</span>  }<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>  ExecutorService createExecutor(BlockingQueue&lt;Runnable&gt; callQueue,<a name="line.703"></a>
-<span class="sourceLineNo">704</span>                                 int minWorkers, int maxWorkers) {<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    ThreadFactoryBuilder tfb = new ThreadFactoryBuilder();<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    tfb.setDaemon(true);<a name="line.706"></a>
-<span class="sourceLineNo">707</span>    tfb.setNameFormat("thrift-worker-%d");<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    ThreadPoolExecutor threadPool = new THBaseThreadPoolExecutor(minWorkers, maxWorkers,<a name="line.708"></a>
-<span class="sourceLineNo">709</span>            Long.MAX_VALUE, TimeUnit.SECONDS, callQueue, tfb.build(), metrics);<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    threadPool.allowCoreThreadTimeOut(true);<a name="line.710"></a>
-<span class="sourceLineNo">711</span>    return threadPool;<a name="line.711"></a>
-<span class="sourceLineNo">712</span>  }<a name="line.712"></a>
-<span class="sourceLineNo">713</span><a name="line.713"></a>
-<span class="sourceLineNo">714</span>  private InetAddress getBindAddress(Configuration conf)<a name="line.714"></a>
-<span class="sourceLineNo">715</span>      throws UnknownHostException {<a name="line.715"></a>
-<span class="sourceLineNo">716</span>    String bindAddressStr = conf.get(BIND_CONF_KEY, DEFAULT_BIND_ADDR);<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    return InetAddress.getByName(bindAddressStr);<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
-<span class="sourceLineNo">719</span><a name="line.719"></a>
-<span class="sourceLineNo">720</span>  protected static class ResultScannerWrapper {<a name="line.720"></a>
-<span class="sourceLineNo">721</span><a name="line.721"></a>
-<span class="sourceLineNo">722</span>    private final ResultScanner scanner;<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    private final boolean sortColumns;<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    public ResultScannerWrapper(ResultScanner resultScanner,<a name="line.724"></a>
-<span class="sourceLineNo">725</span>                                boolean sortResultColumns) {<a name="line.725"></a>
-<span class="sourceLineNo">726</span>      scanner = resultScanner;<a name="line.726"></a>
-<span class="sourceLineNo">727</span>      sortColumns = sortResultColumns;<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>    public ResultScanner getScanner() {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      return scanner;<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>    public boolean isColumnSorted() {<a name="line.734"></a>
-<span class="sourceLineNo">735</span>      return sortColumns;<a name="line.735"></a>
-<span class="sourceLineNo">736</span>    }<a name="line.736"></a>
-<span class="sourceLineNo">737</span>  }<a name="line.737"></a>
-<span class="sourceLineNo">738</span><a name="line.738"></a>
-<span class="sourceLineNo">739</span>  /**<a name="line.739"></a>
-<span class="sourceLineNo">740</span>   * The HBaseHandler is a glue object that connects Thrift RPC calls to the<a name="line.740"></a>
-<span class="sourceLineNo">741</span>   * HBase client API primarily defined in the Admin and Table objects.<a name="line.741"></a>
-<span class="sourceLineNo">742</span>   */<a name="line.742"></a>
-<span class="sourceLineNo">743</span>  public static class HBaseHandler implements Hbase.Iface {<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    protected Configuration conf;<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    protected static final Logger LOG = LoggerFactory.getLogger(HBaseHandler.class);<a name="line.745"></a>
-<span class="sourceLineNo">746</span><a name="line.746"></a>
-<span class="sourceLineNo">747</span>    // nextScannerId and scannerMap are used to manage scanner state<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    protected int nextScannerId = 0;<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    protected HashMap&lt;Integer, ResultScannerWrapper&gt; scannerMap;<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    private ThriftMetrics metrics = null;<a name="line.750"></a>
-<span class="sourceLineNo">751</span><a name="line.751"></a>
-<span class="sourceLineNo">752</span>    private final ConnectionCache connectionCache;<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    IncrementCoalescer coalescer;<a name="line.753"></a>
-<span class="sourceLineNo">754</span><a name="line.754"></a>
-<span class="sourceLineNo">755</span>    static final String CLEANUP_INTERVAL = "hbase.thrift.connection.cleanup-interval";<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    static final String MAX_IDLETIME = "hbase.thrift.connection.max-idletime";<a name="line.756"></a>
-<span class="sourceLineNo">757</span><a name="line.757"></a>
-<span class="sourceLineNo">758</span>    /**<a name="line.758"></a>
-<span class="sourceLineNo">759</span>     * Returns a list of all the column families for a given Table.<a name="line.759"></a>
-<span class="sourceLineNo">760</span>     *<a name="line.760"></a>
-<span class="sourceLineNo">761</span>     * @param table<a name="line.761"></a>
-<span class="sourceLineNo">762</span>     * @throws IOException<a name="line.762"></a>
-<span class="sourceLineNo">763</span>     */<a name="line.763"></a>
-<span class="sourceLineNo">764</span>    byte[][] getAllColumns(Table table) throws IOException {<a name="line.764"></a>
-<span class="sourceLineNo">765</span>      HColumnDescriptor[] cds = table.getTableDescriptor().getColumnFamilies();<a name="line.765"></a>
-<span class="sourceLineNo">766</span>      byte[][] columns = new byte[cds.length][];<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      for (int i = 0; i &lt; cds.length; i++) {<a name="line.767"></a>
-<span class="sourceLineNo">768</span>        columns[i] = Bytes.add(cds[i].getName(),<a name="line.768"></a>
-<span class="sourceLineNo">769</span>            KeyValue.COLUMN_FAMILY_DELIM_ARRAY);<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      }<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      return columns;<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    }<a name="line.772"></a>
-<span class="sourceLineNo">773</span><a name="line.773"></a>
-<span class="sourceLineNo">774</span>    /**<a name="line.774"></a>
-<span class="sourceLineNo">775</span>     * Creates and returns a Table instance from a given table name.<a name="line.775"></a>
-<span class="sourceLineNo">776</span>     *<a name="line.776"></a>
-<span class="sourceLineNo">777</span>     * @param tableName<a name="line.777"></a>
-<span class="sourceLineNo">778</span>     *          name of table<a name="line.778"></a>
-<span class="sourceLineNo">779</span>     * @return Table object<a name="line.779"></a>
-<span class="sourceLineNo">780</span>     * @throws IOException if getting the table fails<a name="line.780"></a>
-<span class="sourceLineNo">781</span>     */<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    public Table getTable(final byte[] tableName) throws IOException {<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      String table = Bytes.toString(tableName);<a name="line.783"></a>
-<span class="sourceLineNo">784</span>      return connectionCache.getTable(table);<a name="line.784"></a>
-<span class="sourceLineNo">785</span>    }<a name="line.785"></a>
-<span class="sourceLineNo">786</span><a name="line.786"></a>
-<span class="sourceLineNo">787</span>    public Table getTable(final ByteBuffer tableName) throws IOException {<a name="line.787"></a>
-<span class="sourceLineNo">788</span>      return getTable(getBytes(tableName));<a name="line.788"></a>
-<span class="sourceLineNo">789</span>    }<a name="line.789"></a>
-<span class="sourceLineNo">790</span><a name="line.790"></a>
-<span class="sourceLineNo">791</span>    /**<a name="line.791"></a>
-<span class="sourceLineNo">792</span>     * Assigns a unique ID to the scanner and adds the mapping to an internal<a name="line.792"></a>
-<span class="sourceLineNo">793</span>     * hash-map.<a name="line.793"></a>
-<span class="sourceLineNo">794</span>     *<a name="line.794"></a>
-<span class="sourceLineNo">795</span>     * @param scanner the {@link ResultScanner} to add<a name="line.795"></a>
-<span class="sourceLineNo">796</span>     * @return integer scanner id<a name="line.796"></a>
-<span class="sourceLineNo">797</span>     */<a name="line.797"></a>
-<span class="sourceLineNo">798</span>    protected synchronized int addScanner(ResultScanner scanner, boolean sortColumns) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>      int id = nextScannerId++;<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      ResultScannerWrapper resultScannerWrapper = new ResultScannerWrapper(scanner, sortColumns);<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      scannerMap.put(id, resultScannerWrapper);<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      return id;<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    }<a name="line.803"></a>
-<span class="sourceLineNo">804</span><a name="line.804"></a>
-<span class="sourceLineNo">805</span>    /**<a name="line.805"></a>
-<span class="sourceLineNo">806</span>     * Returns the scanner associated with the specified ID.<a name="line.806"></a>
-<span class="sourceLineNo">807</span>     *<a name="line.807"></a>
-<span class="sourceLineNo">808</span>     * @param id the ID of the scanner to get<a name="line.808"></a>
-<span class="sourceLineNo">809</span>     * @return a Scanner, or null if ID was invalid.<a name="line.809"></a>
-<span class="sourceLineNo">810</span>     */<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    protected synchronized ResultScannerWrapper getScanner(int id) {<a name="line.811"></a>
-<span class="sourceLineNo">812</span>      return scannerMap.get(id);<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    }<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>     * Removes the scanner associated with the specified ID from the internal<a name="line.816"></a>
-<span class="sourceLineNo">817</span>     * id-&amp;gt;scanner hash-map.<a name="line.817"></a>
-<span class="sourceLineNo">818</span>     *<a name="line.818"></a>
-<span class="sourceLineNo">819</span>     * @param id the ID of the scanner to remove<a name="line.819"></a>
-<span class="sourceLineNo">820</span>     * @return a Scanner, or null if ID was invalid.<a name="line.820"></a>
-<span class="sourceLineNo">821</span>     */<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    protected synchronized ResultScannerWrapper removeScanner(int id) {<a name="line.822"></a>
-<span class="sourceLineNo">823</span>      return scannerMap.remove(id);<a name="line.823"></a>
-<span class="sourceLineNo">824</span>    }<a name="line.824"></a>
-<span class="sourceLineNo">825</span><a name="line.825"></a>
-<span class="sourceLineNo">826</span>    protected HBaseHandler(final Configuration c,<a name="line.826"></a>
-<span class="sourceLineNo">827</span>        final UserProvider userProvider) throws IOException {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      this.conf = c;<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      scannerMap = new HashMap&lt;&gt;();<a name="line.829"></a>
-<span class="sourceLineNo">830</span>      this.coalescer = new IncrementCoalescer(this);<a name="line.830"></a>
-<span class="sourceLineNo">831</span><a name="line.831"></a>
-<span class="sourceLineNo">832</span>      int cleanInterval = conf.getInt(CLEANUP_INTERVAL, 10 * 1000);<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      int maxIdleTime = conf.getInt(MAX_IDLETIME, 10 * 60 * 1000);<a name="line.833"></a>
-<span class="sourceLineNo">834</span>      connectionCache = new ConnectionCache(<a name="line.834"></a>
-<span class="sourceLineNo">835</span>        conf, userProvider, cleanInterval, maxIdleTime);<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span><a name="line.837"></a>
-<span class="sourceLineNo">838</span>    /**<a name="line.838"></a>
-<span class="sourceLineNo">839</span>     * Obtain HBaseAdmin. Creates the instance if it is not already created.<a name="line.839"></a>
-<span class="sourceLineNo">840</span>     */<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    private Admin getAdmin() throws IOException {<a name="line.841"></a>
-<span class="sourceLineNo">842</span>      return connectionCache.getAdmin();<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    }<a name="line.843"></a>
-<span class="sourceLineNo">844</span><a name="line.844"></a>
-<span class="sourceLineNo">845</span>    void setEffectiveUser(String effectiveUser) {<a name="line.845"></a>
-<span class="sourceLineNo">846</span>      connectionCache.setEffectiveUser(effectiveUser);<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>    @Override<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    public void enableTable(ByteBuffer tableName) throws IOError {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      try{<a name="line.851"></a>
-<span class="sourceLineNo">852</span>        getAdmin().enableTable(getTableName(tableName));<a name="line.852"></a>
-<span class="sourceLineNo">853</span>      } catch (IOException e) {<a name="line.853"></a>
-<span class="sourceLineNo">854</span>        LOG.warn(e.getMessage(), e);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>        throw getIOError(e);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      }<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    }<a name="line.857"></a>
-<span class="sourceLineNo">858</span><a name="line.858"></a>
-<span class="sourceLineNo">859</span>    @Override<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    public void disableTable(ByteBuffer tableName) throws IOError{<a name="line.860"></a>
-<span class="sourceLineNo">861</span>      try{<a name="line.861"></a>
-<span class="sourceLineNo">862</span>        getAdmin().disableTable(getTableName(tableName));<a name="line.862"></a>
-<span class="sourceLineNo">863</span>      } catch (IOException e) {<a name="line.863"></a>
-<span class="sourceLineNo">864</span>        LOG.warn(e.getMessage(), e);<a name="line.864"></a>
-<span class="sourceLineNo">865</span>        throw getIOError(e);<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><a name="line.868"></a>
-<span class="sourceLineNo">869</span>    @Override<a name="line.869"></a>
-<span class="sourceLineNo">870</span>    public boolean isTableEnabled(ByteBuffer tableName) throws IOError {<a name="line.870"></a>
-<span class="sourceLineNo">871</span>      try {<a name="line.871"></a>
-<span class="sourceLineN

<TRUNCATED>

[04/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html b/testdevapidocs/org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html
new file mode 100644
index 0000000..54f2a06
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html
@@ -0,0 +1,374 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>TestThrift2ServerCmdLine (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="TestThrift2ServerCmdLine (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestThrift2ServerCmdLine.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" target="_top">Frames</a></li>
+<li><a href="TestThrift2ServerCmdLine.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.thrift2</div>
+<h2 title="Class TestThrift2ServerCmdLine" class="title">Class TestThrift2ServerCmdLine</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift">org.apache.hadoop.hbase.thrift.TestThriftServerCmdLine</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.thrift2.TestThrift2ServerCmdLine</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html#line.44">TestThrift2ServerCmdLine</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftServerCmdLine</a></pre>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static <a href="https://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/TestThrift2ServerCmdLine.html#TABLENAME">TABLENAME</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.thrift.TestThriftServerCmdLine">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftServerCmdLine</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#implType">implType</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#port">port</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#specifyBindIP">specifyBindIP</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#specifyCompact">specifyCompact</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#specifyFramed">specifyFramed</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#tableCreated">tableCreated</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#TEST_UTIL">TEST_UTIL</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<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>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html#TestThrift2ServerCmdLine-org.apache.hadoop.hbase.thrift.ImplType-boolean-boolean-boolean-">TestThrift2ServerCmdLine</a></span>(org.apache.hadoop.hbase.thrift.ImplType&nbsp;implType,
+                        boolean&nbsp;specifyFramed,
+                        boolean&nbsp;specifyBindIP,
+                        boolean&nbsp;specifyCompact)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.thrift2.ThriftServer</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html#createThriftServer--">createThriftServer</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html#talkToThriftServer--">talkToThriftServer</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.thrift.TestThriftServerCmdLine">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftServerCmdLine</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#getParameters--">getParameters</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#setUpBeforeClass--">setUpBeforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#tearDownAfterClass--">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#testRunThriftServer--">testRunThriftServer</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html#line.46">CLASS_RULE</a></pre>
+</li>
+</ul>
+<a name="TABLENAME">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TABLENAME</h4>
+<pre>private static final&nbsp;<a href="https://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/thrift2/TestThrift2ServerCmdLine.html#line.49">TABLENAME</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift2.TestThrift2ServerCmdLine.TABLENAME">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="TestThrift2ServerCmdLine-org.apache.hadoop.hbase.thrift.ImplType-boolean-boolean-boolean-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestThrift2ServerCmdLine</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html#line.57">TestThrift2ServerCmdLine</a>(org.apache.hadoop.hbase.thrift.ImplType&nbsp;implType,
+                                boolean&nbsp;specifyFramed,
+                                boolean&nbsp;specifyBindIP,
+                                boolean&nbsp;specifyCompact)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="createThriftServer--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createThriftServer</h4>
+<pre>protected&nbsp;org.apache.hadoop.hbase.thrift2.ThriftServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html#line.53">createThriftServer</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#createThriftServer--">createThriftServer</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftServerCmdLine</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="talkToThriftServer--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>talkToThriftServer</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html#line.63">talkToThriftServer</a>()
+                           throws <a href="https://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">Overrides:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#talkToThriftServer--">talkToThriftServer</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftServerCmdLine</a></code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://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>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestThrift2ServerCmdLine.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" target="_top">Frames</a></li>
+<li><a href="TestThrift2ServerCmdLine.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 cdef967..86dc2af 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.1691">TestThriftHBaseServiceHandler.DelayingRegionObserver</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1694">TestThriftHBaseServiceHandler.DelayingRegionObserver</a>
 extends <a href="https://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.1692">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1695">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.1694">delayMillis</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1697">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.1691">DelayingRegionObserver</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1694">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="https://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.1697">getRegionObserver</a>()</pre>
+<pre>public&nbsp;<a href="https://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.1700">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.1702">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.1705">start</a>(org.apache.hadoop.hbase.CoprocessorEnvironment&nbsp;e)
            throws <a href="https://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.1708">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.1711">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="https://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="https://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/849d84a8/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 6cce62f..7053125 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li>Prev&nbsp;Class</li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -109,9 +109,9 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.122">TestThriftHBaseServiceHandler</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.125">TestThriftHBaseServiceHandler</a>
 extends <a href="https://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">Unit testing for ThriftServer.HBaseHandler, a part of the org.apache.hadoop.hbase.thrift2
+<div class="block">Unit testing for ThriftServer.HBaseServiceHandler, a part of the org.apache.hadoop.hbase.thrift2
  package.</div>
 </li>
 </ul>
@@ -462,7 +462,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.125">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.128">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -471,7 +471,7 @@ extends <a href="https://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/thrift2/TestThriftHBaseServiceHandler.html#line.128">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.131">LOG</a></pre>
 </li>
 </ul>
 <a name="UTIL">
@@ -480,7 +480,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>UTIL</h4>
-<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.129">UTIL</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.132">UTIL</a></pre>
 </li>
 </ul>
 <a name="tableAname">
@@ -489,7 +489,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>tableAname</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.132">tableAname</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.135">tableAname</a></pre>
 </li>
 </ul>
 <a name="familyAname">
@@ -498,7 +498,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>familyAname</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.133">familyAname</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.136">familyAname</a></pre>
 </li>
 </ul>
 <a name="familyBname">
@@ -507,7 +507,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>familyBname</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.134">familyBname</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.137">familyBname</a></pre>
 </li>
 </ul>
 <a name="qualifierAname">
@@ -516,7 +516,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>qualifierAname</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.135">qualifierAname</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.138">qualifierAname</a></pre>
 </li>
 </ul>
 <a name="qualifierBname">
@@ -525,7 +525,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>qualifierBname</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.136">qualifierBname</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.139">qualifierBname</a></pre>
 </li>
 </ul>
 <a name="valueAname">
@@ -534,7 +534,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>valueAname</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.137">valueAname</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.140">valueAname</a></pre>
 </li>
 </ul>
 <a name="valueBname">
@@ -543,7 +543,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>valueBname</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.138">valueBname</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.141">valueBname</a></pre>
 </li>
 </ul>
 <a name="families">
@@ -552,7 +552,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>families</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.HColumnDescriptor[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.139">families</a></pre>
+<pre>private static&nbsp;org.apache.hadoop.hbase.HColumnDescriptor[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.142">families</a></pre>
 </li>
 </ul>
 <a name="metricsHelper">
@@ -561,7 +561,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>metricsHelper</h4>
-<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/test/MetricsAssertHelper.html" title="interface in org.apache.hadoop.hbase.test">MetricsAssertHelper</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.145">metricsHelper</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/test/MetricsAssertHelper.html" title="interface in org.apache.hadoop.hbase.test">MetricsAssertHelper</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.148">metricsHelper</a></pre>
 </li>
 </ul>
 <a name="name">
@@ -570,7 +570,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>name</h4>
-<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.149">name</a></pre>
+<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.152">name</a></pre>
 </li>
 </ul>
 </li>
@@ -587,7 +587,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestThriftHBaseServiceHandler</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.122">TestThriftHBaseServiceHandler</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.125">TestThriftHBaseServiceHandler</a>()</pre>
 </li>
 </ul>
 </li>
@@ -604,7 +604,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>assertTColumnValuesEqual</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.152">assertTColumnValuesEqual</a>(<a href="https://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.TColumnValue&gt;&nbsp;columnValuesA,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.155">assertTColumnValuesEqual</a>(<a href="https://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.TColumnValue&gt;&nbsp;columnValuesA,
                                      <a href="https://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.TColumnValue&gt;&nbsp;columnValuesB)</pre>
 </li>
 </ul>
@@ -614,7 +614,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>assertTColumnValueEqual</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.172">assertTColumnValueEqual</a>(org.apache.hadoop.hbase.thrift2.generated.TColumnValue&nbsp;a,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.175">assertTColumnValueEqual</a>(org.apache.hadoop.hbase.thrift2.generated.TColumnValue&nbsp;a,
                                     org.apache.hadoop.hbase.thrift2.generated.TColumnValue&nbsp;b)</pre>
 </li>
 </ul>
@@ -624,7 +624,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>beforeClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.179">beforeClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.182">beforeClass</a>()
                         throws <a href="https://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>
@@ -638,7 +638,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>afterClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.192">afterClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.195">afterClass</a>()
                        throws <a href="https://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>
@@ -652,7 +652,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setup</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.197">setup</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.200">setup</a>()
            throws <a href="https://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>
@@ -666,7 +666,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createHandler</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.thrift2.ThriftHBaseServiceHandler&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.201">createHandler</a>()
+<pre>private&nbsp;org.apache.hadoop.hbase.thrift2.ThriftHBaseServiceHandler&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.204">createHandler</a>()
                                                                          throws org.apache.thrift.TException</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -680,7 +680,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testExists</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.211">testExists</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.214">testExists</a>()
                 throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                        org.apache.thrift.TException</pre>
 <dl>
@@ -696,7 +696,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testExistsAll</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.231">testExistsAll</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.234">testExistsAll</a>()
                    throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                           org.apache.thrift.TException</pre>
 <dl>
@@ -712,7 +712,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testPutGet</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.259">testPutGet</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.262">testPutGet</a>()
                 throws <a href="https://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>
@@ -726,7 +726,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testPutGetMultiple</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.282">testPutGetMultiple</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.285">testPutGetMultiple</a>()
                         throws <a href="https://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>
@@ -740,7 +740,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeleteMultiple</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.312">testDeleteMultiple</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.315">testDeleteMultiple</a>()
                         throws <a href="https://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>
@@ -754,7 +754,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDelete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.340">testDelete</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.343">testDelete</a>()
                 throws <a href="https://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>
@@ -768,7 +768,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeleteAllTimestamps</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.377">testDeleteAllTimestamps</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.380">testDeleteAllTimestamps</a>()
                              throws <a href="https://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>
@@ -782,7 +782,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeleteSingleTimestamp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.417">testDeleteSingleTimestamp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.420">testDeleteSingleTimestamp</a>()
                                throws <a href="https://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>
@@ -796,7 +796,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeleteFamily</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.462">testDeleteFamily</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.465">testDeleteFamily</a>()
                       throws <a href="https://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>
@@ -810,7 +810,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeleteFamilyVersion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.504">testDeleteFamilyVersion</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.507">testDeleteFamilyVersion</a>()
                              throws <a href="https://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>
@@ -824,7 +824,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testIncrement</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.548">testIncrement</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.551">testIncrement</a>()
                    throws <a href="https://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>
@@ -838,7 +838,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testAppend</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.575">testAppend</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.578">testAppend</a>()
                 throws <a href="https://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>
@@ -852,7 +852,7 @@ extends <a href="https://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.606">testCheckAndPut</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.609">testCheckAndPut</a>()
                      throws <a href="https://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>
@@ -868,7 +868,7 @@ extends <a href="https://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.651">testCheckAndDelete</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.654">testCheckAndDelete</a>()
                         throws <a href="https://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>
@@ -884,7 +884,7 @@ extends <a href="https://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.694">testScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.697">testScan</a>()
               throws <a href="https://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>
@@ -898,7 +898,7 @@ extends <a href="https://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.746">testLongLivedScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.749">testLongLivedScan</a>()
                        throws <a href="https://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>
@@ -914,7 +914,7 @@ extends <a href="https://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.792">testReverseScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.795">testReverseScan</a>()
                      throws <a href="https://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>
@@ -928,7 +928,7 @@ extends <a href="https://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.841">testScanWithFilter</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.844">testScanWithFilter</a>()
                         throws <a href="https://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>
@@ -942,7 +942,7 @@ extends <a href="https://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.893">testScanWithColumnFamilyTimeRange</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.896">testScanWithColumnFamilyTimeRange</a>()
                                        throws <a href="https://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>
@@ -956,7 +956,7 @@ extends <a href="https://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.954">testSmallScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.957">testSmallScan</a>()
                    throws <a href="https://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>
@@ -970,7 +970,7 @@ extends <a href="https://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.998">testPutTTL</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1001">testPutTTL</a>()
                 throws <a href="https://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>
@@ -984,7 +984,7 @@ extends <a href="https://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="https://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.1054">pad</a>(int&nbsp;n,
+<pre>private&nbsp;<a href="https://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.1057">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>
@@ -1002,7 +1002,7 @@ extends <a href="https://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.1065">testScanWithBatchSize</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1068">testScanWithBatchSize</a>()
                            throws <a href="https://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>
@@ -1016,7 +1016,7 @@ extends <a href="https://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.1124">testGetScannerResults</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1127">testGetScannerResults</a>()
                            throws <a href="https://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>
@@ -1030,7 +1030,7 @@ extends <a href="https://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.1195">testFilterRegistration</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1198">testFilterRegistration</a>()
                             throws <a href="https://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>
@@ -1044,7 +1044,7 @@ extends <a href="https://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.1204">testMetrics</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1207">testMetrics</a>()
                  throws <a href="https://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>
@@ -1058,7 +1058,7 @@ extends <a href="https://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.1229">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.1232">getMetrics</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
                                                                 throws <a href="https://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>
@@ -1072,7 +1072,7 @@ extends <a href="https://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.1236">testMetricsWithException</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1239">testMetricsWithException</a>()
                               throws <a href="https://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>
@@ -1086,7 +1086,7 @@ extends <a href="https://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.1277">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.1280">testExceptionType</a>(org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface&nbsp;handler,
                                org.apache.hadoop.hbase.thrift.ThriftMetrics&nbsp;metrics,
                                <a href="https://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,
@@ -1099,7 +1099,7 @@ extends <a href="https://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.1307">testMetricsPrecision</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1310">testMetricsPrecision</a>()
                           throws <a href="https://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
 
@@ -1117,7 +1117,7 @@ extends <a href="https://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.1354">testAttribute</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1357">testAttribute</a>()
                    throws <a href="https://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>
@@ -1131,7 +1131,7 @@ extends <a href="https://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.1396">testMutateRow</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1399">testMutateRow</a>()
                    throws <a href="https://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>
@@ -1147,7 +1147,7 @@ extends <a href="https://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.1458">testDurability</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1461">testDurability</a>()
                     throws <a href="https://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
@@ -1164,7 +1164,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckAndMutate</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1520">testCheckAndMutate</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1523">testCheckAndMutate</a>()
                         throws <a href="https://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>
@@ -1178,7 +1178,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testConsistency</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1571">testConsistency</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1574">testConsistency</a>()
                      throws <a href="https://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>
@@ -1192,7 +1192,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDDLOpertions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1602">testDDLOpertions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1605">testDDLOpertions</a>()
                       throws <a href="https://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>
@@ -1206,7 +1206,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testGetTableDescriptor</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1680">testGetTableDescriptor</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1683">testGetTableDescriptor</a>()
                             throws <a href="https://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>
@@ -1242,7 +1242,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 <div class="subNav">
 <ul class="navList">
-<li>Prev&nbsp;Class</li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/thrift2/class-use/TestThrift2HttpServer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/thrift2/class-use/TestThrift2HttpServer.html b/testdevapidocs/org/apache/hadoop/hbase/thrift2/class-use/TestThrift2HttpServer.html
new file mode 100644
index 0000000..9e6dcb7
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift2/class-use/TestThrift2HttpServer.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.thrift2.TestThrift2HttpServer (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.thrift2.TestThrift2HttpServer (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html" title="class in org.apache.hadoop.hbase.thrift2">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift2/class-use/TestThrift2HttpServer.html" target="_top">Frames</a></li>
+<li><a href="TestThrift2HttpServer.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.thrift2.TestThrift2HttpServer" class="title">Uses of Class<br>org.apache.hadoop.hbase.thrift2.TestThrift2HttpServer</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.thrift2.TestThrift2HttpServer</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html" title="class in org.apache.hadoop.hbase.thrift2">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift2/class-use/TestThrift2HttpServer.html" target="_top">Frames</a></li>
+<li><a href="TestThrift2HttpServer.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/thrift2/class-use/TestThrift2ServerCmdLine.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/thrift2/class-use/TestThrift2ServerCmdLine.html b/testdevapidocs/org/apache/hadoop/hbase/thrift2/class-use/TestThrift2ServerCmdLine.html
new file mode 100644
index 0000000..10f2c7a
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift2/class-use/TestThrift2ServerCmdLine.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.thrift2.TestThrift2ServerCmdLine (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.thrift2.TestThrift2ServerCmdLine (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift2/class-use/TestThrift2ServerCmdLine.html" target="_top">Frames</a></li>
+<li><a href="TestThrift2ServerCmdLine.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.thrift2.TestThrift2ServerCmdLine" class="title">Uses of Class<br>org.apache.hadoop.hbase.thrift2.TestThrift2ServerCmdLine</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.thrift2.TestThrift2ServerCmdLine</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift2/class-use/TestThrift2ServerCmdLine.html" target="_top">Frames</a></li>
+<li><a href="TestThrift2ServerCmdLine.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/thrift2/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/thrift2/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/thrift2/package-frame.html
index 1e162c2..0496f8a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/thrift2/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift2/package-frame.html
@@ -13,6 +13,8 @@
 <div class="indexContainer">
 <h2 title="Classes">Classes</h2>
 <ul title="Classes">
+<li><a href="TestThrift2HttpServer.html" title="class in org.apache.hadoop.hbase.thrift2" target="classFrame">TestThrift2HttpServer</a></li>
+<li><a href="TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2" target="classFrame">TestThrift2ServerCmdLine</a></li>
 <li><a href="TestThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2" target="classFrame">TestThriftHBaseServiceHandler</a></li>
 <li><a href="TestThriftHBaseServiceHandler.DelayingRegionObserver.html" title="class in org.apache.hadoop.hbase.thrift2" target="classFrame">TestThriftHBaseServiceHandler.DelayingRegionObserver</a></li>
 <li><a href="TestThriftHBaseServiceHandlerWithLabels.html" title="class in org.apache.hadoop.hbase.thrift2" target="classFrame">TestThriftHBaseServiceHandlerWithLabels</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/thrift2/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/thrift2/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/thrift2/package-summary.html
index f4accd4..e32a1ef 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/thrift2/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift2/package-summary.html
@@ -83,9 +83,17 @@
 </tr>
 <tbody>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html" title="class in org.apache.hadoop.hbase.thrift2">TestThrift2HttpServer</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2">TestThrift2ServerCmdLine</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">TestThriftHBaseServiceHandler</a></td>
 <td class="colLast">
-<div class="block">Unit testing for ThriftServer.HBaseHandler, a part of the org.apache.hadoop.hbase.thrift2
+<div class="block">Unit testing for ThriftServer.HBaseServiceHandler, a part of the org.apache.hadoop.hbase.thrift2
  package.</div>
 </td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/thrift2/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/thrift2/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/thrift2/package-tree.html
index 0e8f121..642705a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/thrift2/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift2/package-tree.html
@@ -85,6 +85,16 @@
 <li type="circle">org.apache.hadoop.hbase.thrift2.<a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">TestThriftHBaseServiceHandler.DelayingRegionObserver</span></a> (implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver)</li>
 <li type="circle">org.apache.hadoop.hbase.thrift2.<a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandlerWithLabels.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">TestThriftHBaseServiceHandlerWithLabels</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift2.<a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandlerWithReadOnly.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">TestThriftHBaseServiceHandlerWithReadOnly</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">TestThriftHttpServer</span></a>
+<ul>
+<li type="circle">org.apache.hadoop.hbase.thrift2.<a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">TestThrift2HttpServer</span></a></li>
+</ul>
+</li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">TestThriftServerCmdLine</span></a>
+<ul>
+<li type="circle">org.apache.hadoop.hbase.thrift2.<a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">TestThrift2ServerCmdLine</span></a></li>
+</ul>
+</li>
 </ul>
 </li>
 </ul>


[12/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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
deleted file mode 100644
index e692633..0000000
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html
+++ /dev/null
@@ -1,2103 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
-<title>Source code</title>
-<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
-</head>
-<body>
-<div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
-<span class="sourceLineNo">009</span> *<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *<a name="line.11"></a>
-<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
-<span class="sourceLineNo">017</span> */<a name="line.17"></a>
-<span class="sourceLineNo">018</span><a name="line.18"></a>
-<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.thrift;<a name="line.19"></a>
-<span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.util.Bytes.getBytes;<a name="line.21"></a>
-<span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.io.IOException;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.net.InetAddress;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.net.InetSocketAddress;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.net.UnknownHostException;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.nio.ByteBuffer;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.security.PrivilegedAction;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.ArrayList;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.Arrays;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.Collections;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.HashMap;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.List;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.Map;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.TreeMap;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.concurrent.BlockingQueue;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.concurrent.ExecutorService;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.concurrent.TimeUnit;<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>import javax.security.auth.callback.Callback;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import javax.security.sasl.AuthorizeCallback;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import javax.security.sasl.SaslServer;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.commons.lang3.ArrayUtils;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.conf.Configuration;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.Cell.Type;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CellBuilder;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.CellBuilderFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.HConstants;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.ServerName;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.TableName;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.client.Append;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.client.Get;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.client.OperationWithAttributes;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.client.Put;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Result;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.client.Table;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.filter.ParseFilter;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.filter.PrefixFilter;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.filter.WhileMatchFilter;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.http.HttpServerUtil;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.security.SaslUtil;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.security.SaslUtil.QualityOfProtection;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.security.SecurityUtil;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.thrift.generated.AlreadyExists;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.thrift.generated.BatchMutation;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.thrift.generated.ColumnDescriptor;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.thrift.generated.Hbase;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.thrift.generated.IOError;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.thrift.generated.IllegalArgument;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.thrift.generated.Mutation;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.thrift.generated.TAppend;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.thrift.generated.TCell;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.thrift.generated.TIncrement;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.thrift.generated.TRegionInfo;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.thrift.generated.TRowResult;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.thrift.generated.TScan;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.util.ConnectionCache;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.util.DNS;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.util.JvmPauseMonitor;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.util.Strings;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.security.SaslRpcServer.SaslGssCallbackHandler;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.security.authorize.ProxyUsers;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.thrift.TException;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.thrift.TProcessor;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.thrift.protocol.TBinaryProtocol;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.thrift.protocol.TCompactProtocol;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.thrift.protocol.TProtocolFactory;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.thrift.server.THsHaServer;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.thrift.server.TNonblockingServer;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.thrift.server.TServer;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.thrift.server.TServlet;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.thrift.server.TThreadedSelectorServer;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.thrift.transport.TFramedTransport;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.thrift.transport.TNonblockingServerSocket;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.thrift.transport.TNonblockingServerTransport;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.thrift.transport.TSaslServerTransport;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.thrift.transport.TServerSocket;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.thrift.transport.TServerTransport;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.thrift.transport.TTransportFactory;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.eclipse.jetty.http.HttpVersion;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.eclipse.jetty.server.HttpConfiguration;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.eclipse.jetty.server.HttpConnectionFactory;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.eclipse.jetty.server.SecureRequestCustomizer;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.eclipse.jetty.server.Server;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.eclipse.jetty.server.SslConnectionFactory;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.eclipse.jetty.servlet.ServletContextHandler;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.eclipse.jetty.util.ssl.SslContextFactory;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.eclipse.jetty.util.thread.QueuedThreadPool;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.slf4j.Logger;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.slf4j.LoggerFactory;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hbase.thirdparty.com.google.common.base.Joiner;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hbase.thirdparty.com.google.common.base.Splitter;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hbase.thirdparty.com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Option;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.OptionGroup;<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> * ThriftServerRunner - this class starts up a Thrift server which implements<a name="line.149"></a>
-<span class="sourceLineNo">150</span> * the Hbase API specified in the Hbase.thrift IDL file.<a name="line.150"></a>
-<span class="sourceLineNo">151</span> */<a name="line.151"></a>
-<span class="sourceLineNo">152</span>@InterfaceAudience.Private<a name="line.152"></a>
-<span class="sourceLineNo">153</span>public class ThriftServerRunner implements Runnable {<a name="line.153"></a>
-<span class="sourceLineNo">154</span><a name="line.154"></a>
-<span class="sourceLineNo">155</span>  private static final Logger LOG = LoggerFactory.getLogger(ThriftServerRunner.class);<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  private static final int DEFAULT_HTTP_MAX_HEADER_SIZE = 64 * 1024; // 64k<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  static final String SERVER_TYPE_CONF_KEY =<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      "hbase.regionserver.thrift.server.type";<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>  static final String BIND_CONF_KEY = "hbase.regionserver.thrift.ipaddress";<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  static final String COMPACT_CONF_KEY = "hbase.regionserver.thrift.compact";<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  static final String FRAMED_CONF_KEY = "hbase.regionserver.thrift.framed";<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  static final String MAX_FRAME_SIZE_CONF_KEY =<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          "hbase.regionserver.thrift.framed.max_frame_size_in_mb";<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  static final String PORT_CONF_KEY = "hbase.regionserver.thrift.port";<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  static final String COALESCE_INC_KEY = "hbase.regionserver.thrift.coalesceIncrement";<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  static final String USE_HTTP_CONF_KEY = "hbase.regionserver.thrift.http";<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  static final String HTTP_MIN_THREADS_KEY = "hbase.thrift.http_threads.min";<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  static final String HTTP_MAX_THREADS_KEY = "hbase.thrift.http_threads.max";<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  static final String THRIFT_SSL_ENABLED_KEY = "hbase.thrift.ssl.enabled";<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  static final String THRIFT_SSL_KEYSTORE_STORE_KEY = "hbase.thrift.ssl.keystore.store";<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  static final String THRIFT_SSL_KEYSTORE_PASSWORD_KEY = "hbase.thrift.ssl.keystore.password";<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  static final String THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY = "hbase.thrift.ssl.keystore.keypassword";<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  static final String THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY =<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      "hbase.thrift.ssl.exclude.cipher.suites";<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  static final String THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY =<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      "hbase.thrift.ssl.include.cipher.suites";<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  static final String THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY = "hbase.thrift.ssl.exclude.protocols";<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  static final String THRIFT_SSL_INCLUDE_PROTOCOLS_KEY = "hbase.thrift.ssl.include.protocols";<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  static final String THRIFT_SUPPORT_PROXYUSER_KEY = "hbase.thrift.support.proxyuser";<a name="line.184"></a>
-<span class="sourceLineNo">185</span><a name="line.185"></a>
-<span class="sourceLineNo">186</span>  static final String THRIFT_DNS_INTERFACE_KEY = "hbase.thrift.dns.interface";<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  static final String THRIFT_DNS_NAMESERVER_KEY = "hbase.thrift.dns.nameserver";<a name="line.187"></a>
-<span class="sourceLineNo">188</span>  static final String THRIFT_KERBEROS_PRINCIPAL_KEY = "hbase.thrift.kerberos.principal";<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  static final String THRIFT_KEYTAB_FILE_KEY = "hbase.thrift.keytab.file";<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  static final String THRIFT_SPNEGO_PRINCIPAL_KEY = "hbase.thrift.spnego.principal";<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  static final String THRIFT_SPNEGO_KEYTAB_FILE_KEY = "hbase.thrift.spnego.keytab.file";<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>   * Amount of time in milliseconds before a server thread will timeout<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * waiting for client to send data on a connected socket. Currently,<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * applies only to TBoundedThreadPoolServer<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   */<a name="line.197"></a>
-<span class="sourceLineNo">198</span>  public static final String THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY =<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    "hbase.thrift.server.socket.read.timeout";<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  public static final int THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT = 60000;<a name="line.200"></a>
-<span class="sourceLineNo">201</span><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>   * Thrift quality of protection configuration key. Valid values can be:<a name="line.204"></a>
-<span class="sourceLineNo">205</span>   * auth-conf: authentication, integrity and confidentiality checking<a name="line.205"></a>
-<span class="sourceLineNo">206</span>   * auth-int: authentication and integrity checking<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   * auth: authentication only<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   *<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   * This is used to authenticate the callers and support impersonation.<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   * The thrift server and the HBase cluster must run in secure mode.<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   */<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  static final String THRIFT_QOP_KEY = "hbase.thrift.security.qop";<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  static final String BACKLOG_CONF_KEY = "hbase.regionserver.thrift.backlog";<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>  private static final String DEFAULT_BIND_ADDR = "0.0.0.0";<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  public static final int DEFAULT_LISTEN_PORT = 9090;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  public static final int HREGION_VERSION = 1;<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>  private final int listenPort;<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>  private Configuration conf;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  volatile TServer tserver;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  volatile Server httpServer;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>  private final Hbase.Iface handler;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  private final ThriftMetrics metrics;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  private final HBaseHandler hbaseHandler;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private final UserGroupInformation serviceUGI;<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private SaslUtil.QualityOfProtection qop;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  private String host;<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>  private final boolean securityEnabled;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  private final boolean doAsEnabled;<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>  private final JvmPauseMonitor pauseMonitor;<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>  static String THRIFT_HTTP_ALLOW_OPTIONS_METHOD = "hbase.thrift.http.allow.options.method";<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  private static boolean THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT = false;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  /** An enum of server implementation selections */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  public enum ImplType {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    HS_HA("hsha", true, THsHaServer.class, true),<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    NONBLOCKING("nonblocking", true, TNonblockingServer.class, true),<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    THREAD_POOL("threadpool", false, TBoundedThreadPoolServer.class, true),<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    THREADED_SELECTOR("threadedselector", true, TThreadedSelectorServer.class, true);<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>    public static final ImplType DEFAULT = THREAD_POOL;<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>    final String option;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    final boolean isAlwaysFramed;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    final Class&lt;? extends TServer&gt; serverClass;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    final boolean canSpecifyBindIP;<a name="line.252"></a>
-<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>    private ImplType(String option, boolean isAlwaysFramed,<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        Class&lt;? extends TServer&gt; serverClass, boolean canSpecifyBindIP) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      this.option = option;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      this.isAlwaysFramed = isAlwaysFramed;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      this.serverClass = serverClass;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      this.canSpecifyBindIP = canSpecifyBindIP;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>    /**<a name="line.262"></a>
-<span class="sourceLineNo">263</span>     * @return &lt;code&gt;-option&lt;/code&gt;<a name="line.263"></a>
-<span class="sourceLineNo">264</span>     */<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    @Override<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    public String toString() {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      return "-" + option;<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>    public String getOption() {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      return option;<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>    public boolean isAlwaysFramed() {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      return isAlwaysFramed;<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>    public String getDescription() {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      StringBuilder sb = new StringBuilder("Use the " +<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          serverClass.getSimpleName());<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      if (isAlwaysFramed) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        sb.append(" This implies the framed transport.");<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      }<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      if (this == DEFAULT) {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        sb.append("This is the default.");<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      return sb.toString();<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    static OptionGroup createOptionGroup() {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      OptionGroup group = new OptionGroup();<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      for (ImplType t : values()) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        group.addOption(new Option(t.option, t.getDescription()));<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      }<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      return group;<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>    public static ImplType getServerImpl(Configuration conf) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      String confType = conf.get(SERVER_TYPE_CONF_KEY, THREAD_POOL.option);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      for (ImplType t : values()) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        if (confType.equals(t.option)) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>          return t;<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>      throw new AssertionError("Unknown server ImplType.option:" + confType);<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>    static void setServerImpl(CommandLine cmd, Configuration conf) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      ImplType chosenType = null;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      int numChosen = 0;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      for (ImplType t : values()) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        if (cmd.hasOption(t.option)) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>          chosenType = t;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>          ++numChosen;<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>      if (numChosen &lt; 1) {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>        LOG.info("Using default thrift server type");<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        chosenType = DEFAULT;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      } else if (numChosen &gt; 1) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        throw new AssertionError("Exactly one option out of " +<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          Arrays.toString(values()) + " has to be specified");<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      LOG.info("Using thrift server type " + chosenType.option);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      conf.set(SERVER_TYPE_CONF_KEY, chosenType.option);<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 String simpleClassName() {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      return serverClass.getSimpleName();<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>    public static List&lt;String&gt; serversThatCannotSpecifyBindIP() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      List&lt;String&gt; l = new ArrayList&lt;&gt;();<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      for (ImplType t : values()) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        if (!t.canSpecifyBindIP) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>          l.add(t.simpleClassName());<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      return l;<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><a name="line.342"></a>
-<span class="sourceLineNo">343</span>  public ThriftServerRunner(Configuration conf) throws IOException {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    // login the server principal (if using secure Hadoop)<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    UserProvider userProvider = UserProvider.instantiate(conf);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    securityEnabled = userProvider.isHadoopSecurityEnabled()<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        &amp;&amp; userProvider.isHBaseSecurityEnabled();<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    if (securityEnabled) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      host = Strings.domainNamePointerToHostName(DNS.getDefaultHost(<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        conf.get(THRIFT_DNS_INTERFACE_KEY, "default"),<a name="line.350"></a>
-<span class="sourceLineNo">351</span>        conf.get(THRIFT_DNS_NAMESERVER_KEY, "default")));<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      userProvider.login(THRIFT_KEYTAB_FILE_KEY, THRIFT_KERBEROS_PRINCIPAL_KEY, host);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    }<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    this.serviceUGI = userProvider.getCurrent().getUGI();<a name="line.354"></a>
-<span class="sourceLineNo">355</span><a name="line.355"></a>
-<span class="sourceLineNo">356</span>    this.conf = HBaseConfiguration.create(conf);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    this.listenPort = conf.getInt(PORT_CONF_KEY, DEFAULT_LISTEN_PORT);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    this.metrics = new ThriftMetrics(conf, ThriftMetrics.ThriftServerType.ONE);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    this.pauseMonitor = new JvmPauseMonitor(conf, this.metrics.getSource());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    this.hbaseHandler = new HBaseHandler(conf, userProvider);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    this.hbaseHandler.initMetrics(metrics);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    this.handler = HbaseHandlerMetricsProxy.newInstance(hbaseHandler, metrics, conf);<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    boolean httpEnabled = conf.getBoolean(USE_HTTP_CONF_KEY, false);<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    doAsEnabled = conf.getBoolean(THRIFT_SUPPORT_PROXYUSER_KEY, false);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    if (doAsEnabled &amp;&amp; !httpEnabled) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      LOG.warn("Fail to enable the doAs feature. " + USE_HTTP_CONF_KEY + " is not configured");<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>    String strQop = conf.get(THRIFT_QOP_KEY);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    if (strQop != null) {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      this.qop = SaslUtil.getQop(strQop);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    }<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    if (qop != null) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      if (qop != QualityOfProtection.AUTHENTICATION &amp;&amp;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>          qop != QualityOfProtection.INTEGRITY &amp;&amp;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>          qop != QualityOfProtection.PRIVACY) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>        throw new IOException(String.format("Invalid %s: It must be one of %s, %s, or %s.",<a name="line.378"></a>
-<span class="sourceLineNo">379</span>                              THRIFT_QOP_KEY,<a name="line.379"></a>
-<span class="sourceLineNo">380</span>                              QualityOfProtection.AUTHENTICATION.name(),<a name="line.380"></a>
-<span class="sourceLineNo">381</span>                              QualityOfProtection.INTEGRITY.name(),<a name="line.381"></a>
-<span class="sourceLineNo">382</span>                              QualityOfProtection.PRIVACY.name()));<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      }<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      checkHttpSecurity(qop, conf);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      if (!securityEnabled) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        throw new IOException("Thrift server must run in secure mode to support authentication");<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><a name="line.390"></a>
-<span class="sourceLineNo">391</span>  private void checkHttpSecurity(QualityOfProtection qop, Configuration conf) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    if (qop == QualityOfProtection.PRIVACY &amp;&amp;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        conf.getBoolean(USE_HTTP_CONF_KEY, false) &amp;&amp;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        !conf.getBoolean(THRIFT_SSL_ENABLED_KEY, false)) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      throw new IllegalArgumentException("Thrift HTTP Server's QoP is privacy, but " +<a name="line.395"></a>
-<span class="sourceLineNo">396</span>          THRIFT_SSL_ENABLED_KEY + " is false");<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 name="line.400"></a>
-<span class="sourceLineNo">401</span>   * Runs the Thrift server<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  @Override<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  public void run() {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    serviceUGI.doAs(new PrivilegedAction&lt;Object&gt;() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      @Override<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      public Object run() {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        try {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>          pauseMonitor.start();<a name="line.409"></a>
-<span class="sourceLineNo">410</span>          if (conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>            setupHTTPServer();<a name="line.411"></a>
-<span class="sourceLineNo">412</span>            httpServer.start();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>            httpServer.join();<a name="line.413"></a>
-<span class="sourceLineNo">414</span>          } else {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>            setupServer();<a name="line.415"></a>
-<span class="sourceLineNo">416</span>            tserver.serve();<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        } catch (Exception e) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>          LOG.error(HBaseMarkers.FATAL, "Cannot run ThriftServer", e);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>          // Crash the process if the ThriftServer is not running<a name="line.420"></a>
-<span class="sourceLineNo">421</span>          System.exit(-1);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        }<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        return null;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    });<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><a name="line.428"></a>
-<span class="sourceLineNo">429</span>  public void shutdown() {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    if (pauseMonitor != null) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      pauseMonitor.stop();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    }<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    if (tserver != null) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      tserver.stop();<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      tserver = null;<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    }<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    if (httpServer != null) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      try {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        httpServer.stop();<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        httpServer = null;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      } catch (Exception e) {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        LOG.error("Problem encountered in shutting down HTTP server", e);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      }<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      httpServer = null;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>  private void setupHTTPServer() throws IOException {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    TProcessor processor = new Hbase.Processor&lt;&gt;(handler);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    TServlet thriftHttpServlet = new ThriftHttpServlet(processor, protocolFactory, serviceUGI,<a name="line.451"></a>
-<span class="sourceLineNo">452</span>        conf, hbaseHandler, securityEnabled, doAsEnabled);<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // Set the default max thread number to 100 to limit<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    // the number of concurrent requests so that Thrfit HTTP server doesn't OOM easily.<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    // Jetty set the default max thread number to 250, if we don't set it.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    //<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    // Our default min thread number 2 is the same as that used by Jetty.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    int minThreads = conf.getInt(HTTP_MIN_THREADS_KEY, 2);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    int maxThreads = conf.getInt(HTTP_MAX_THREADS_KEY, 100);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    QueuedThreadPool threadPool = new QueuedThreadPool(maxThreads);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    threadPool.setMinThreads(minThreads);<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    httpServer = new Server(threadPool);<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>    // Context handler<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    ServletContextHandler ctxHandler = new ServletContextHandler(httpServer, "/",<a name="line.466"></a>
-<span class="sourceLineNo">467</span>            ServletContextHandler.SESSIONS);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    ctxHandler.addServlet(new ServletHolder(thriftHttpServlet), "/*");<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    HttpServerUtil.constrainHttpMethods(ctxHandler,<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      conf.getBoolean(THRIFT_HTTP_ALLOW_OPTIONS_METHOD, THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT));<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>    // set up Jetty and run the embedded server<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    HttpConfiguration httpConfig = new HttpConfiguration();<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    httpConfig.setSecureScheme("https");<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    httpConfig.setSecurePort(listenPort);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    httpConfig.setHeaderCacheSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    httpConfig.setRequestHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    httpConfig.setResponseHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    httpConfig.setSendServerVersion(false);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    httpConfig.setSendDateHeader(false);<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>    ServerConnector serverConnector;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    if(conf.getBoolean(THRIFT_SSL_ENABLED_KEY, false)) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      HttpConfiguration httpsConfig = new HttpConfiguration(httpConfig);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      httpsConfig.addCustomizer(new SecureRequestCustomizer());<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>      SslContextFactory sslCtxFactory = new SslContextFactory();<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      String keystore = conf.get(THRIFT_SSL_KEYSTORE_STORE_KEY);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      String password = HBaseConfiguration.getPassword(conf,<a name="line.489"></a>
-<span class="sourceLineNo">490</span>          THRIFT_SSL_KEYSTORE_PASSWORD_KEY, null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      String keyPassword = HBaseConfiguration.getPassword(conf,<a name="line.491"></a>
-<span class="sourceLineNo">492</span>          THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY, password);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      sslCtxFactory.setKeyStorePath(keystore);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      sslCtxFactory.setKeyStorePassword(password);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      sslCtxFactory.setKeyManagerPassword(keyPassword);<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>      String[] excludeCiphers = conf.getStrings(<a name="line.497"></a>
-<span class="sourceLineNo">498</span>          THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      if (excludeCiphers.length != 0) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        sslCtxFactory.setExcludeCipherSuites(excludeCiphers);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      }<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      String[] includeCiphers = conf.getStrings(<a name="line.502"></a>
-<span class="sourceLineNo">503</span>          THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      if (includeCiphers.length != 0) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        sslCtxFactory.setIncludeCipherSuites(includeCiphers);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      }<a name="line.506"></a>
-<span class="sourceLineNo">507</span><a name="line.507"></a>
-<span class="sourceLineNo">508</span>      // Disable SSLv3 by default due to "Poodle" Vulnerability - CVE-2014-3566<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      String[] excludeProtocols = conf.getStrings(<a name="line.509"></a>
-<span class="sourceLineNo">510</span>          THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY, "SSLv3");<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      if (excludeProtocols.length != 0) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        sslCtxFactory.setExcludeProtocols(excludeProtocols);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      String[] includeProtocols = conf.getStrings(<a name="line.514"></a>
-<span class="sourceLineNo">515</span>          THRIFT_SSL_INCLUDE_PROTOCOLS_KEY, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      if (includeProtocols.length != 0) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>        sslCtxFactory.setIncludeProtocols(includeProtocols);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      }<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>      serverConnector = new ServerConnector(httpServer,<a name="line.520"></a>
-<span class="sourceLineNo">521</span>          new SslConnectionFactory(sslCtxFactory, HttpVersion.HTTP_1_1.toString()),<a name="line.521"></a>
-<span class="sourceLineNo">522</span>          new HttpConnectionFactory(httpsConfig));<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    } else {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      serverConnector = new ServerConnector(httpServer, new HttpConnectionFactory(httpConfig));<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    serverConnector.setPort(listenPort);<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    serverConnector.setHost(getBindAddress(conf).getHostAddress());<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    httpServer.addConnector(serverConnector);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    httpServer.setStopAtShutdown(true);<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>    if (doAsEnabled) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      ProxyUsers.refreshSuperUserGroupsConfiguration(conf);<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>    LOG.info("Starting Thrift HTTP Server on {}", Integer.toString(listenPort));<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>   * Setting up the thrift TServer<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  private void setupServer() throws Exception {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    // Construct correct ProtocolFactory<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    TProtocolFactory protocolFactory = getProtocolFactory();<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    final TProcessor p = new Hbase.Processor&lt;&gt;(handler);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    ImplType implType = ImplType.getServerImpl(conf);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    TProcessor processor = p;<a name="line.547"></a>
-<span class="sourceLineNo">548</span><a name="line.548"></a>
-<span class="sourceLineNo">549</span>    // Construct correct TransportFactory<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    TTransportFactory transportFactory;<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    if (conf.getBoolean(FRAMED_CONF_KEY, false) || implType.isAlwaysFramed) {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      if (qop != null) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        throw new RuntimeException("Thrift server authentication"<a name="line.553"></a>
-<span class="sourceLineNo">554</span>          + " doesn't work with framed transport yet");<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      transportFactory = new TFramedTransport.Factory(<a name="line.556"></a>
-<span class="sourceLineNo">557</span>          conf.getInt(MAX_FRAME_SIZE_CONF_KEY, 2)  * 1024 * 1024);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      LOG.debug("Using framed transport");<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    } else if (qop == null) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      transportFactory = new TTransportFactory();<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    } else {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      // Extract the name from the principal<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      String thriftKerberosPrincipal = conf.get(THRIFT_KERBEROS_PRINCIPAL_KEY);<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      if (thriftKerberosPrincipal == null) {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>        throw new IllegalArgumentException(THRIFT_KERBEROS_PRINCIPAL_KEY + " cannot be null");<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      }<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      String name = SecurityUtil.getUserFromPrincipal(thriftKerberosPrincipal);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      Map&lt;String, String&gt; saslProperties = SaslUtil.initSaslProperties(qop.name());<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      TSaslServerTransport.Factory saslFactory = new TSaslServerTransport.Factory();<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      saslFactory.addServerDefinition("GSSAPI", name, host, saslProperties,<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        new SaslGssCallbackHandler() {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>          @Override<a name="line.572"></a>
-<span class="sourceLineNo">573</span>          public void handle(Callback[] callbacks)<a name="line.573"></a>
-<span class="sourceLineNo">574</span>              throws UnsupportedCallbackException {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>            AuthorizeCallback ac = null;<a name="line.575"></a>
-<span class="sourceLineNo">576</span>            for (Callback callback : callbacks) {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>              if (callback instanceof AuthorizeCallback) {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>                ac = (AuthorizeCallback) callback;<a name="line.578"></a>
-<span class="sourceLineNo">579</span>              } else {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>                throw new UnsupportedCallbackException(callback,<a name="line.580"></a>
-<span class="sourceLineNo">581</span>                    "Unrecognized SASL GSSAPI Callback");<a name="line.581"></a>
-<span class="sourceLineNo">582</span>              }<a name="line.582"></a>
-<span class="sourceLineNo">583</span>            }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>            if (ac != null) {<a name="line.584"></a>
-<span class="sourceLineNo">585</span>              String authid = ac.getAuthenticationID();<a name="line.585"></a>
-<span class="sourceLineNo">586</span>              String authzid = ac.getAuthorizationID();<a name="line.586"></a>
-<span class="sourceLineNo">587</span>              if (!authid.equals(authzid)) {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>                ac.setAuthorized(false);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>              } else {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>                ac.setAuthorized(true);<a name="line.590"></a>
-<span class="sourceLineNo">591</span>                String userName = SecurityUtil.getUserFromPrincipal(authzid);<a name="line.591"></a>
-<span class="sourceLineNo">592</span>                LOG.info("Effective user: {}", userName);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>                ac.setAuthorizedID(userName);<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>          }<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        });<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      transportFactory = saslFactory;<a name="line.598"></a>
-<span class="sourceLineNo">599</span><a name="line.599"></a>
-<span class="sourceLineNo">600</span>      // Create a processor wrapper, to get the caller<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      processor = (inProt, outProt) -&gt; {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>        TSaslServerTransport saslServerTransport =<a name="line.602"></a>
-<span class="sourceLineNo">603</span>          (TSaslServerTransport)inProt.getTransport();<a name="line.603"></a>
-<span class="sourceLineNo">604</span>        SaslServer saslServer = saslServerTransport.getSaslServer();<a name="line.604"></a>
-<span class="sourceLineNo">605</span>        String principal = saslServer.getAuthorizationID();<a name="line.605"></a>
-<span class="sourceLineNo">606</span>        hbaseHandler.setEffectiveUser(principal);<a name="line.606"></a>
-<span class="sourceLineNo">607</span>        return p.process(inProt, outProt);<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      };<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    }<a name="line.609"></a>
-<span class="sourceLineNo">610</span><a name="line.610"></a>
-<span class="sourceLineNo">611</span>    if (conf.get(BIND_CONF_KEY) != null &amp;&amp; !implType.canSpecifyBindIP) {<a name="line.611"></a>
-<span class="sourceLineNo">612</span>      LOG.error("Server types {} don't support IP address binding at the moment. See " +<a name="line.612"></a>
-<span class="sourceLineNo">613</span>          "https://issues.apache.org/jira/browse/HBASE-2155 for details.",<a name="line.613"></a>
-<span class="sourceLineNo">614</span>          Joiner.on(", ").join(ImplType.serversThatCannotSpecifyBindIP()));<a name="line.614"></a>
-<span class="sourceLineNo">615</span>      throw new RuntimeException("-" + BIND_CONF_KEY + " not supported with " + implType);<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>
-<span class="sourceLineNo">618</span>    // Thrift's implementation uses '0' as a placeholder for 'use the default.'<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    int backlog = conf.getInt(BACKLOG_CONF_KEY, 0);<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>    if (implType == ImplType.HS_HA || implType == ImplType.NONBLOCKING ||<a name="line.621"></a>
-<span class="sourceLineNo">622</span>        implType == ImplType.THREADED_SELECTOR) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      InetAddress listenAddress = getBindAddress(conf);<a name="line.623"></a>
-<span class="sourceLineNo">624</span>      TNonblockingServerTransport serverTransport = new TNonblockingServerSocket(<a name="line.624"></a>
-<span class="sourceLineNo">625</span>          new InetSocketAddress(listenAddress, listenPort));<a name="line.625"></a>
-<span class="sourceLineNo">626</span><a name="line.626"></a>
-<span class="sourceLineNo">627</span>      if (implType == ImplType.NONBLOCKING) {<a name="line.627"></a>
-<span class="sourceLineNo">628</span>        TNonblockingServer.Args serverArgs =<a name="line.628"></a>
-<span class="sourceLineNo">629</span>            new TNonblockingServer.Args(serverTransport);<a name="line.629"></a>
-<span class="sourceLineNo">630</span>        serverArgs.processor(processor)<a name="line.630"></a>
-<span class="sourceLineNo">631</span>                  .transportFactory(transportFactory)<a name="line.631"></a>
-<span class="sourceLineNo">632</span>                  .protocolFactory(protocolFactory);<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        tserver = new TNonblockingServer(serverArgs);<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      } else if (implType == ImplType.HS_HA) {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>        THsHaServer.Args serverArgs = new THsHaServer.Args(serverTransport);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>        CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.636"></a>
-<span class="sourceLineNo">637</span>        ExecutorService executorService = createExecutor(<a name="line.637"></a>
-<span class="sourceLineNo">638</span>            callQueue, serverArgs.getMaxWorkerThreads(), serverArgs.getMaxWorkerThreads());<a name="line.638"></a>
-<span class="sourceLineNo">639</span>        serverArgs.executorService(executorService).processor(processor)<a name="line.639"></a>
-<span class="sourceLineNo">640</span>                .transportFactory(transportFactory).protocolFactory(protocolFactory);<a name="line.640"></a>
-<span class="sourceLineNo">641</span>        tserver = new THsHaServer(serverArgs);<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      } else { // THREADED_SELECTOR<a name="line.642"></a>
-<span class="sourceLineNo">643</span>        TThreadedSelectorServer.Args serverArgs =<a name="line.643"></a>
-<span class="sourceLineNo">644</span>            new HThreadedSelectorServerArgs(serverTransport, conf);<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        ExecutorService executorService = createExecutor(<a name="line.646"></a>
-<span class="sourceLineNo">647</span>            callQueue, serverArgs.getWorkerThreads(), serverArgs.getWorkerThreads());<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        serverArgs.executorService(executorService).processor(processor)<a name="line.648"></a>
-<span class="sourceLineNo">649</span>                .transportFactory(transportFactory).protocolFactory(protocolFactory);<a name="line.649"></a>
-<span class="sourceLineNo">650</span>        tserver = new TThreadedSelectorServer(serverArgs);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      }<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      LOG.info("starting HBase {} server on {}", implType.simpleClassName(),<a name="line.652"></a>
-<span class="sourceLineNo">653</span>          Integer.toString(listenPort));<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    } else if (implType == ImplType.THREAD_POOL) {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      // Thread pool server. Get the IP address to bind to.<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      InetAddress listenAddress = getBindAddress(conf);<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      int readTimeout = conf.getInt(THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY,<a name="line.657"></a>
-<span class="sourceLineNo">658</span>          THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT);<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      TServerTransport serverTransport = new TServerSocket(<a name="line.659"></a>
-<span class="sourceLineNo">660</span>          new TServerSocket.ServerSocketTransportArgs().<a name="line.660"></a>
-<span class="sourceLineNo">661</span>              bindAddr(new InetSocketAddress(listenAddress, listenPort)).backlog(backlog).<a name="line.661"></a>
-<span class="sourceLineNo">662</span>              clientTimeout(readTimeout));<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>      TBoundedThreadPoolServer.Args serverArgs =<a name="line.664"></a>
-<span class="sourceLineNo">665</span>          new TBoundedThreadPoolServer.Args(serverTransport, conf);<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      serverArgs.processor(processor).transportFactory(transportFactory)<a name="line.666"></a>
-<span class="sourceLineNo">667</span>              .protocolFactory(protocolFactory);<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      LOG.info("starting " + ImplType.THREAD_POOL.simpleClassName() + " on "<a name="line.668"></a>
-<span class="sourceLineNo">669</span>          + listenAddress + ":" + Integer.toString(listenPort)<a name="line.669"></a>
-<span class="sourceLineNo">670</span>          + " with readTimeout " + readTimeout + "ms; " + serverArgs);<a name="line.670"></a>
-<span class="sourceLineNo">671</span>      this.tserver = new TBoundedThreadPoolServer(serverArgs, metrics);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    } else {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      throw new AssertionError("Unsupported Thrift server implementation: " +<a name="line.673"></a>
-<span class="sourceLineNo">674</span>          implType.simpleClassName());<a name="line.674"></a>
-<span class="sourceLineNo">675</span>    }<a name="line.675"></a>
-<span class="sourceLineNo">676</span><a name="line.676"></a>
-<span class="sourceLineNo">677</span>    // A sanity check that we instantiated the right type of server.<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    if (tserver.getClass() != implType.serverClass) {<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      throw new AssertionError("Expected to create Thrift server class " +<a name="line.679"></a>
-<span class="sourceLineNo">680</span>          implType.serverClass.getName() + " but got " +<a name="line.680"></a>
-<span class="sourceLineNo">681</span>          tserver.getClass().getName());<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    }<a name="line.682"></a>
-<span class="sourceLineNo">683</span><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>    registerFilters(conf);<a name="line.686"></a>
-<span class="sourceLineNo">687</span>  }<a name="line.687"></a>
-<span class="sourceLineNo">688</span><a name="line.688"></a>
-<span class="sourceLineNo">689</span>  private TProtocolFactory getProtocolFactory() {<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    TProtocolFactory protocolFactory;<a name="line.690"></a>
-<span class="sourceLineNo">691</span><a name="line.691"></a>
-<span class="sourceLineNo">692</span>    if (conf.getBoolean(COMPACT_CONF_KEY, false)) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>      LOG.debug("Using compact protocol");<a name="line.693"></a>
-<span class="sourceLineNo">694</span>      protocolFactory = new TCompactProtocol.Factory();<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    } else {<a name="line.695"></a>
-<span class="sourceLineNo">696</span>      LOG.debug("Using binary protocol");<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      protocolFactory = new TBinaryProtocol.Factory();<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    }<a name="line.698"></a>
-<span class="sourceLineNo">699</span><a name="line.699"></a>
-<span class="sourceLineNo">700</span>    return protocolFactory;<a name="line.700"></a>
-<span class="sourceLineNo">701</span>  }<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>  ExecutorService createExecutor(BlockingQueue&lt;Runnable&gt; callQueue,<a name="line.703"></a>
-<span class="sourceLineNo">704</span>                                 int minWorkers, int maxWorkers) {<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    ThreadFactoryBuilder tfb = new ThreadFactoryBuilder();<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    tfb.setDaemon(true);<a name="line.706"></a>
-<span class="sourceLineNo">707</span>    tfb.setNameFormat("thrift-worker-%d");<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    ThreadPoolExecutor threadPool = new THBaseThreadPoolExecutor(minWorkers, maxWorkers,<a name="line.708"></a>
-<span class="sourceLineNo">709</span>            Long.MAX_VALUE, TimeUnit.SECONDS, callQueue, tfb.build(), metrics);<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    threadPool.allowCoreThreadTimeOut(true);<a name="line.710"></a>
-<span class="sourceLineNo">711</span>    return threadPool;<a name="line.711"></a>
-<span class="sourceLineNo">712</span>  }<a name="line.712"></a>
-<span class="sourceLineNo">713</span><a name="line.713"></a>
-<span class="sourceLineNo">714</span>  private InetAddress getBindAddress(Configuration conf)<a name="line.714"></a>
-<span class="sourceLineNo">715</span>      throws UnknownHostException {<a name="line.715"></a>
-<span class="sourceLineNo">716</span>    String bindAddressStr = conf.get(BIND_CONF_KEY, DEFAULT_BIND_ADDR);<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    return InetAddress.getByName(bindAddressStr);<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
-<span class="sourceLineNo">719</span><a name="line.719"></a>
-<span class="sourceLineNo">720</span>  protected static class ResultScannerWrapper {<a name="line.720"></a>
-<span class="sourceLineNo">721</span><a name="line.721"></a>
-<span class="sourceLineNo">722</span>    private final ResultScanner scanner;<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    private final boolean sortColumns;<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    public ResultScannerWrapper(ResultScanner resultScanner,<a name="line.724"></a>
-<span class="sourceLineNo">725</span>                                boolean sortResultColumns) {<a name="line.725"></a>
-<span class="sourceLineNo">726</span>      scanner = resultScanner;<a name="line.726"></a>
-<span class="sourceLineNo">727</span>      sortColumns = sortResultColumns;<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>    public ResultScanner getScanner() {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      return scanner;<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>    public boolean isColumnSorted() {<a name="line.734"></a>
-<span class="sourceLineNo">735</span>      return sortColumns;<a name="line.735"></a>
-<span class="sourceLineNo">736</span>    }<a name="line.736"></a>
-<span class="sourceLineNo">737</span>  }<a name="line.737"></a>
-<span class="sourceLineNo">738</span><a name="line.738"></a>
-<span class="sourceLineNo">739</span>  /**<a name="line.739"></a>
-<span class="sourceLineNo">740</span>   * The HBaseHandler is a glue object that connects Thrift RPC calls to the<a name="line.740"></a>
-<span class="sourceLineNo">741</span>   * HBase client API primarily defined in the Admin and Table objects.<a name="line.741"></a>
-<span class="sourceLineNo">742</span>   */<a name="line.742"></a>
-<span class="sourceLineNo">743</span>  public static class HBaseHandler implements Hbase.Iface {<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    protected Configuration conf;<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    protected static final Logger LOG = LoggerFactory.getLogger(HBaseHandler.class);<a name="line.745"></a>
-<span class="sourceLineNo">746</span><a name="line.746"></a>
-<span class="sourceLineNo">747</span>    // nextScannerId and scannerMap are used to manage scanner state<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    protected int nextScannerId = 0;<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    protected HashMap&lt;Integer, ResultScannerWrapper&gt; scannerMap;<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    private ThriftMetrics metrics = null;<a name="line.750"></a>
-<span class="sourceLineNo">751</span><a name="line.751"></a>
-<span class="sourceLineNo">752</span>    private final ConnectionCache connectionCache;<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    IncrementCoalescer coalescer;<a name="line.753"></a>
-<span class="sourceLineNo">754</span><a name="line.754"></a>
-<span class="sourceLineNo">755</span>    static final String CLEANUP_INTERVAL = "hbase.thrift.connection.cleanup-interval";<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    static final String MAX_IDLETIME = "hbase.thrift.connection.max-idletime";<a name="line.756"></a>
-<span class="sourceLineNo">757</span><a name="line.757"></a>
-<span class="sourceLineNo">758</span>    /**<a name="line.758"></a>
-<span class="sourceLineNo">759</span>     * Returns a list of all the column families for a given Table.<a name="line.759"></a>
-<span class="sourceLineNo">760</span>     *<a name="line.760"></a>
-<span class="sourceLineNo">761</span>     * @param table<a name="line.761"></a>
-<span class="sourceLineNo">762</span>     * @throws IOException<a name="line.762"></a>
-<span class="sourceLineNo">763</span>     */<a name="line.763"></a>
-<span class="sourceLineNo">764</span>    byte[][] getAllColumns(Table table) throws IOException {<a name="line.764"></a>
-<span class="sourceLineNo">765</span>      HColumnDescriptor[] cds = table.getTableDescriptor().getColumnFamilies();<a name="line.765"></a>
-<span class="sourceLineNo">766</span>      byte[][] columns = new byte[cds.length][];<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      for (int i = 0; i &lt; cds.length; i++) {<a name="line.767"></a>
-<span class="sourceLineNo">768</span>        columns[i] = Bytes.add(cds[i].getName(),<a name="line.768"></a>
-<span class="sourceLineNo">769</span>            KeyValue.COLUMN_FAMILY_DELIM_ARRAY);<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      }<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      return columns;<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    }<a name="line.772"></a>
-<span class="sourceLineNo">773</span><a name="line.773"></a>
-<span class="sourceLineNo">774</span>    /**<a name="line.774"></a>
-<span class="sourceLineNo">775</span>     * Creates and returns a Table instance from a given table name.<a name="line.775"></a>
-<span class="sourceLineNo">776</span>     *<a name="line.776"></a>
-<span class="sourceLineNo">777</span>     * @param tableName<a name="line.777"></a>
-<span class="sourceLineNo">778</span>     *          name of table<a name="line.778"></a>
-<span class="sourceLineNo">779</span>     * @return Table object<a name="line.779"></a>
-<span class="sourceLineNo">780</span>     * @throws IOException if getting the table fails<a name="line.780"></a>
-<span class="sourceLineNo">781</span>     */<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    public Table getTable(final byte[] tableName) throws IOException {<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      String table = Bytes.toString(tableName);<a name="line.783"></a>
-<span class="sourceLineNo">784</span>      return connectionCache.getTable(table);<a name="line.784"></a>
-<span class="sourceLineNo">785</span>    }<a name="line.785"></a>
-<span class="sourceLineNo">786</span><a name="line.786"></a>
-<span class="sourceLineNo">787</span>    public Table getTable(final ByteBuffer tableName) throws IOException {<a name="line.787"></a>
-<span class="sourceLineNo">788</span>      return getTable(getBytes(tableName));<a name="line.788"></a>
-<span class="sourceLineNo">789</span>    }<a name="line.789"></a>
-<span class="sourceLineNo">790</span><a name="line.790"></a>
-<span class="sourceLineNo">791</span>    /**<a name="line.791"></a>
-<span class="sourceLineNo">792</span>     * Assigns a unique ID to the scanner and adds the mapping to an internal<a name="line.792"></a>
-<span class="sourceLineNo">793</span>     * hash-map.<a name="line.793"></a>
-<span class="sourceLineNo">794</span>     *<a name="line.794"></a>
-<span class="sourceLineNo">795</span>     * @param scanner the {@link ResultScanner} to add<a name="line.795"></a>
-<span class="sourceLineNo">796</span>     * @return integer scanner id<a name="line.796"></a>
-<span class="sourceLineNo">797</span>     */<a name="line.797"></a>
-<span class="sourceLineNo">798</span>    protected synchronized int addScanner(ResultScanner scanner, boolean sortColumns) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>      int id = nextScannerId++;<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      ResultScannerWrapper resultScannerWrapper = new ResultScannerWrapper(scanner, sortColumns);<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      scannerMap.put(id, resultScannerWrapper);<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      return id;<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    }<a name="line.803"></a>
-<span class="sourceLineNo">804</span><a name="line.804"></a>
-<span class="sourceLineNo">805</span>    /**<a name="line.805"></a>
-<span class="sourceLineNo">806</span>     * Returns the scanner associated with the specified ID.<a name="line.806"></a>
-<span class="sourceLineNo">807</span>     *<a name="line.807"></a>
-<span class="sourceLineNo">808</span>     * @param id the ID of the scanner to get<a name="line.808"></a>
-<span class="sourceLineNo">809</span>     * @return a Scanner, or null if ID was invalid.<a name="line.809"></a>
-<span class="sourceLineNo">810</span>     */<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    protected synchronized ResultScannerWrapper getScanner(int id) {<a name="line.811"></a>
-<span class="sourceLineNo">812</span>      return scannerMap.get(id);<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    }<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>     * Removes the scanner associated with the specified ID from the internal<a name="line.816"></a>
-<span class="sourceLineNo">817</span>     * id-&amp;gt;scanner hash-map.<a name="line.817"></a>
-<span class="sourceLineNo">818</span>     *<a name="line.818"></a>
-<span class="sourceLineNo">819</span>     * @param id the ID of the scanner to remove<a name="line.819"></a>
-<span class="sourceLineNo">820</span>     * @return a Scanner, or null if ID was invalid.<a name="line.820"></a>
-<span class="sourceLineNo">821</span>     */<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    protected synchronized ResultScannerWrapper removeScanner(int id) {<a name="line.822"></a>
-<span class="sourceLineNo">823</span>      return scannerMap.remove(id);<a name="line.823"></a>
-<span class="sourceLineNo">824</span>    }<a name="line.824"></a>
-<span class="sourceLineNo">825</span><a name="line.825"></a>
-<span class="sourceLineNo">826</span>    protected HBaseHandler(final Configuration c,<a name="line.826"></a>
-<span class="sourceLineNo">827</span>        final UserProvider userProvider) throws IOException {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      this.conf = c;<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      scannerMap = new HashMap&lt;&gt;();<a name="line.829"></a>
-<span class="sourceLineNo">830</span>      this.coalescer = new IncrementCoalescer(this);<a name="line.830"></a>
-<span class="sourceLineNo">831</span><a name="line.831"></a>
-<span class="sourceLineNo">832</span>      int cleanInterval = conf.getInt(CLEANUP_INTERVAL, 10 * 1000);<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      int maxIdleTime = conf.getInt(MAX_IDLETIME, 10 * 60 * 1000);<a name="line.833"></a>
-<span class="sourceLineNo">834</span>      connectionCache = new ConnectionCache(<a name="line.834"></a>
-<span class="sourceLineNo">835</span>        conf, userProvider, cleanInterval, maxIdleTime);<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span><a name="line.837"></a>
-<span class="sourceLineNo">838</span>    /**<a name="line.838"></a>
-<span class="sourceLineNo">839</span>     * Obtain HBaseAdmin. Creates the instance if it is not already created.<a name="line.839"></a>
-<span class="sourceLineNo">840</span>     */<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    private Admin getAdmin() throws IOException {<a name="line.841"></a>
-<span class="sourceLineNo">842</span>      return connectionCache.getAdmin();<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    }<a name="line.843"></a>
-<span class="sourceLineNo">844</span><a name="line.844"></a>
-<span class="sourceLineNo">845</span>    void setEffectiveUser(String effectiveUser) {<a name="line.845"></a>
-<span class="sourceLineNo">846</span>      connectionCache.setEffectiveUser(effectiveUser);<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>    @Override<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    public void enableTable(ByteBuffer tableName) throws IOError {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      try{<a name="line.851"></a>
-<span class="sourceLineNo">852</span>        getAdmin().enableTable(getTableName(tableName));<a name="line.852"></a>
-<span class="sourceLineNo">853</span>      } catch (IOException e) {<a name="line.853"></a>
-<span class="sourceLineNo">854</span>        LOG.warn(e.getMessage(), e);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>        throw getIOError(e);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      }<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    }<a name="line.857"></a>
-<span class="sourceLineNo">858</span><a name="line.858"></a>
-<span class="sourceLineNo">859</span>    @Override<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    public void disableTable(ByteBuffer tableName) throws IOError{<a name="line.860"></a>
-<span class="sourceLineNo">861</span>      try{<a name="line.861"></a>
-<span class="sourceLineNo">862</span>        getAdmin().disableTable(getTableName(tableName));<a name="line.862"></a>
-<span class="sourceLineNo">863</span>      } catch (IOException e) {<a name="line.863"></a>
-<span class="sourceLineNo">864</span>        LOG.warn(e.getMessage(), e);<a name="line.864"></a>
-<span class="sourceLineNo">865</span>        throw getIOError(e);<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><a name="line.868"></a>
-<span class="sourceLineNo">869</span>    @Override<a name="line.869"></a>
-<span class="sourceLineNo">870</span>    public boolean isTableEnabled(ByteBuffer tableName) throws IOError {<a name="line.870"></a>
-<span class="sourceLineNo">871</span>      try {<a name="line.871"></a>
-<span class="sourceLineNo">872</span>        return this.connectionCache.getAdmin().isTableEnabled(getTableN

<TRUNCATED>

[37/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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
deleted file mode 100644
index a32f4d1..0000000
--- a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html
+++ /dev/null
@@ -1,414 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ThriftServerRunner.IOErrorWithCause (Apache HBase 3.0.0-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
-    try {
-        if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="ThriftServerRunner.IOErrorWithCause (Apache HBase 3.0.0-SNAPSHOT API)";
-        }
-    }
-    catch(err) {
-    }
-//-->
-var methods = {"i0":10,"i1":10,"i2":10};
-var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
-var altColor = "altColor";
-var rowColor = "rowColor";
-var tableTab = "tableTab";
-var activeTableTab = "activeTableTab";
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/ThriftServerRunner.IOErrorWithCause.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html" target="_top">Frames</a></li>
-<li><a href="ThriftServerRunner.IOErrorWithCause.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.thrift.generated.IOError">Nested</a>&nbsp;|&nbsp;</li>
-<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<!-- ======== START OF CLASS DATA ======== -->
-<div class="header">
-<div class="subTitle">org.apache.hadoop.hbase.thrift</div>
-<h2 title="Class ThriftServerRunner.IOErrorWithCause" class="title">Class ThriftServerRunner.IOErrorWithCause</h2>
-</div>
-<div class="contentContainer">
-<ul class="inheritance">
-<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
-<li>
-<ul class="inheritance">
-<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">java.lang.Throwable</a></li>
-<li>
-<ul class="inheritance">
-<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">java.lang.Exception</a></li>
-<li>
-<ul class="inheritance">
-<li>org.apache.thrift.TException</li>
-<li>
-<ul class="inheritance">
-<li>org.apache.hadoop.hbase.thrift.generated.IOError</li>
-<li>
-<ul class="inheritance">
-<li>org.apache.hadoop.hbase.thrift.ThriftServerRunner.IOErrorWithCause</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-<div class="description">
-<ul class="blockList">
-<li class="blockList">
-<dl>
-<dt>All Implemented Interfaces:</dt>
-<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true" title="class or interface in java.lang">Cloneable</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;org.apache.hadoop.hbase.thrift.generated.IOError&gt;, org.apache.thrift.TBase&lt;org.apache.hadoop.hbase.thrift.generated.IOError,org.apache.hadoop.hbase.thrift.generated.IOError._Fields&gt;</dd>
-</dl>
-<dl>
-<dt>Enclosing class:</dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner</a></dd>
-</dl>
-<hr>
-<br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.1999">ThriftServerRunner.IOErrorWithCause</a>
-extends org.apache.hadoop.hbase.thrift.generated.IOError</pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../serialized-form.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.IOErrorWithCause">Serialized Form</a></dd>
-</dl>
-</li>
-</ul>
-</div>
-<div class="summary">
-<ul class="blockList">
-<li class="blockList">
-<!-- ======== NESTED CLASS SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="nested.class.summary">
-<!--   -->
-</a>
-<h3>Nested Class Summary</h3>
-<ul class="blockList">
-<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.thrift.generated.IOError">
-<!--   -->
-</a>
-<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.thrift.generated.IOError</h3>
-<code>org.apache.hadoop.hbase.thrift.generated.IOError._Fields</code></li>
-</ul>
-</li>
-</ul>
-<!-- =========== FIELD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.summary">
-<!--   -->
-</a>
-<h3>Field Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
-<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Field and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html#cause">cause</a></span></code>&nbsp;</td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.thrift.generated.IOError">
-<!--   -->
-</a>
-<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.thrift.generated.IOError</h3>
-<code>message, metaDataMap</code></li>
-</ul>
-</li>
-</ul>
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.summary">
-<!--   -->
-</a>
-<h3>Constructor Summary</h3>
-<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>
-</tr>
-<tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html#IOErrorWithCause-java.lang.Throwable-">IOErrorWithCause</a></span>(<a href="https://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)</code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-<!-- ========== METHOD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.summary">
-<!--   -->
-</a>
-<h3>Method Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tr id="i0" class="altColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html#equals-java.lang.Object-">equals</a></span>(<a href="https://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)</code>&nbsp;</td>
-</tr>
-<tr id="i1" class="rowColor">
-<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html#getCause--">getCause</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i2" class="altColor">
-<td class="colFirst"><code>int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html#hashCode--">hashCode</a></span>()</code>&nbsp;</td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.thrift.generated.IOError">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.thrift.generated.IOError</h3>
-<code>clear, compareTo, deepCopy, equals, fieldForId, getFieldValue, getMessage, isSet, isSetMessage, read, setFieldValue, setMessage, setMessageIsSet, toString, unsetMessage, validate, write</code></li>
-</ul>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Throwable">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a></h3>
-<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#addSuppressed-java.lang.Throwable-" title="class or interface in java.lang">addSuppressed</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#fillInStackTrace--" title="class or interface in java.lang">fillInStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getLocalizedMessage--" title="class or interface in java.lang">getLocalizedMessage</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getStackTrace--" title="class or interface in java.lang">getStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getSuppressed--" title="class or interface in java.lang">getSuppressed</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#initCause-java.l
 ang.Throwable-" title="class or interface in java.lang">initCause</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace--" title="class or interface in java.lang">printStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintStream-" title="class or interface in java.lang">printStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintWriter-" title="class or interface in java.lang">printStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#setStackTrace-java.lang.StackTraceElement:A-" title="class or interface in java.lang">setStackTrace</a></code></li>
-</ul>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.htm
 l?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<div class="details">
-<ul class="blockList">
-<li class="blockList">
-<!-- ============ FIELD DETAIL =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.detail">
-<!--   -->
-</a>
-<h3>Field Detail</h3>
-<a name="cause">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>cause</h4>
-<pre>private final&nbsp;<a href="https://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.2000">cause</a></pre>
-</li>
-</ul>
-</li>
-</ul>
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.detail">
-<!--   -->
-</a>
-<h3>Constructor Detail</h3>
-<a name="IOErrorWithCause-java.lang.Throwable-">
-<!--   -->
-</a>
-<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.2001">IOErrorWithCause</a>(<a href="https://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>
-</ul>
-<!-- ============ METHOD DETAIL ========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.detail">
-<!--   -->
-</a>
-<h3>Method Detail</h3>
-<a name="getCause--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getCause</h4>
-<pre>public&nbsp;<a href="https://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.2006">getCause</a>()</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code><a href="https://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="https://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>
-</dl>
-</li>
-</ul>
-<a name="equals-java.lang.Object-">
-<!--   -->
-</a>
-<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.2011">equals</a>(<a href="https://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>
-</dl>
-</li>
-</ul>
-<a name="hashCode--">
-<!--   -->
-</a>
-<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.2025">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>
-</dl>
-</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-</div>
-<!-- ========= END OF CLASS DATA ========= -->
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar.bottom">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.bottom.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/ThriftServerRunner.IOErrorWithCause.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html" target="_top">Frames</a></li>
-<li><a href="ThriftServerRunner.IOErrorWithCause.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.thrift.generated.IOError">Nested</a>&nbsp;|&nbsp;</li>
-<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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
deleted file mode 100644
index 12b8715..0000000
--- a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html
+++ /dev/null
@@ -1,584 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ThriftServerRunner.ImplType (Apache HBase 3.0.0-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
-    try {
-        if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="ThriftServerRunner.ImplType (Apache HBase 3.0.0-SNAPSHOT API)";
-        }
-    }
-    catch(err) {
-    }
-//-->
-var methods = {"i0":9,"i1":10,"i2":10,"i3":9,"i4":10,"i5":9,"i6":9,"i7":10,"i8":10,"i9":9,"i10":9};
-var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
-var altColor = "altColor";
-var rowColor = "rowColor";
-var tableTab = "tableTab";
-var activeTableTab = "activeTableTab";
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/ThriftServerRunner.ImplType.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" target="_top">Frames</a></li>
-<li><a href="ThriftServerRunner.ImplType.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
-<li><a href="#enum.constant.summary">Enum Constants</a>&nbsp;|&nbsp;</li>
-<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li><a href="#enum.constant.detail">Enum Constants</a>&nbsp;|&nbsp;</li>
-<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<!-- ======== START OF CLASS DATA ======== -->
-<div class="header">
-<div class="subTitle">org.apache.hadoop.hbase.thrift</div>
-<h2 title="Enum ThriftServerRunner.ImplType" class="title">Enum ThriftServerRunner.ImplType</h2>
-</div>
-<div class="contentContainer">
-<ul class="inheritance">
-<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
-<li>
-<ul class="inheritance">
-<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">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;</li>
-<li>
-<ul class="inheritance">
-<li>org.apache.hadoop.hbase.thrift.ThriftServerRunner.ImplType</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-<div class="description">
-<ul class="blockList">
-<li class="blockList">
-<dl>
-<dt>All Implemented Interfaces:</dt>
-<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a>&gt;</dd>
-</dl>
-<dl>
-<dt>Enclosing class:</dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner</a></dd>
-</dl>
-<hr>
-<br>
-<pre>public static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.241">ThriftServerRunner.ImplType</a>
-extends <a href="https://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>
-</ul>
-</div>
-<div class="summary">
-<ul class="blockList">
-<li class="blockList">
-<!-- =========== ENUM CONSTANT SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="enum.constant.summary">
-<!--   -->
-</a>
-<h3>Enum Constant Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Enum Constant Summary table, listing enum constants, and an explanation">
-<caption><span>Enum Constants</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colOne" scope="col">Enum Constant and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#HS_HA">HS_HA</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#NONBLOCKING">NONBLOCKING</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#THREAD_POOL">THREAD_POOL</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#THREADED_SELECTOR">THREADED_SELECTOR</a></span></code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-<!-- =========== FIELD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.summary">
-<!--   -->
-</a>
-<h3>Field Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
-<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Field and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#canSpecifyBindIP">canSpecifyBindIP</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#DEFAULT">DEFAULT</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#isAlwaysFramed">isAlwaysFramed</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) <a href="https://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/thrift/ThriftServerRunner.ImplType.html#option">option</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) <a href="https://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;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#serverClass">serverClass</a></span></code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-<!-- ========== METHOD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.summary">
-<!--   -->
-</a>
-<h3>Method Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tr id="i0" class="altColor">
-<td class="colFirst"><code>(package private) static org.apache.hbase.thirdparty.org.apache.commons.cli.OptionGroup</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#createOptionGroup--">createOptionGroup</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i1" class="rowColor">
-<td class="colFirst"><code><a href="https://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/thrift/ThriftServerRunner.ImplType.html#getDescription--">getDescription</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i2" class="altColor">
-<td class="colFirst"><code><a href="https://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/thrift/ThriftServerRunner.ImplType.html#getOption--">getOption</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i3" class="rowColor">
-<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#getServerImpl-org.apache.hadoop.conf.Configuration-">getServerImpl</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
-</tr>
-<tr id="i4" class="altColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#isAlwaysFramed--">isAlwaysFramed</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i5" class="rowColor">
-<td class="colFirst"><code>static <a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#serversThatCannotSpecifyBindIP--">serversThatCannotSpecifyBindIP</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i6" class="altColor">
-<td class="colFirst"><code>(package private) static void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#setServerImpl-org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine-org.apache.hadoop.conf.Configuration-">setServerImpl</a></span>(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine&nbsp;cmd,
-             org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
-</tr>
-<tr id="i7" class="rowColor">
-<td class="colFirst"><code><a href="https://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/thrift/ThriftServerRunner.ImplType.html#simpleClassName--">simpleClassName</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i8" class="altColor">
-<td class="colFirst"><code><a href="https://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/thrift/ThriftServerRunner.ImplType.html#toString--">toString</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i9" class="rowColor">
-<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#valueOf-java.lang.String-">valueOf</a></span>(<a href="https://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)</code>
-<div class="block">Returns the enum constant of this type with the specified name.</div>
-</td>
-</tr>
-<tr id="i10" class="altColor">
-<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a>[]</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#values--">values</a></span>()</code>
-<div class="block">Returns an array containing the constants of this enum type, in
-the order they are declared.</div>
-</td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Enum">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">Enum</a></h3>
-<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#compareTo-E-" title="class or interface in java.lang">compareTo</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#getDeclaringClass--" title="class or interface in java.lang">getDeclaringClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/
 8/docs/api/java/lang/Enum.html?is-external=true#name--" title="class or interface in java.lang">name</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#ordinal--" title="class or interface in java.lang">ordinal</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#valueOf-java.lang.Class-java.lang.String-" title="class or interface in java.lang">valueOf</a></code></li>
-</ul>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<div class="details">
-<ul class="blockList">
-<li class="blockList">
-<!-- ============ ENUM CONSTANT DETAIL =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="enum.constant.detail">
-<!--   -->
-</a>
-<h3>Enum Constant Detail</h3>
-<a name="HS_HA">
-<!--   -->
-</a>
-<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.242">HS_HA</a></pre>
-</li>
-</ul>
-<a name="NONBLOCKING">
-<!--   -->
-</a>
-<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.243">NONBLOCKING</a></pre>
-</li>
-</ul>
-<a name="THREAD_POOL">
-<!--   -->
-</a>
-<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.244">THREAD_POOL</a></pre>
-</li>
-</ul>
-<a name="THREADED_SELECTOR">
-<!--   -->
-</a>
-<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.245">THREADED_SELECTOR</a></pre>
-</li>
-</ul>
-</li>
-</ul>
-<!-- ============ FIELD DETAIL =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.detail">
-<!--   -->
-</a>
-<h3>Field Detail</h3>
-<a name="DEFAULT">
-<!--   -->
-</a>
-<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.247">DEFAULT</a></pre>
-</li>
-</ul>
-<a name="option">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>option</h4>
-<pre>final&nbsp;<a href="https://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.249">option</a></pre>
-</li>
-</ul>
-<a name="isAlwaysFramed">
-<!--   -->
-</a>
-<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.250">isAlwaysFramed</a></pre>
-</li>
-</ul>
-<a name="serverClass">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>serverClass</h4>
-<pre>final&nbsp;<a href="https://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.251">serverClass</a></pre>
-</li>
-</ul>
-<a name="canSpecifyBindIP">
-<!--   -->
-</a>
-<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.252">canSpecifyBindIP</a></pre>
-</li>
-</ul>
-</li>
-</ul>
-<!-- ============ METHOD DETAIL ========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.detail">
-<!--   -->
-</a>
-<h3>Method Detail</h3>
-<a name="values--">
-<!--   -->
-</a>
-<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.241">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:
-<pre>
-for (ThriftServerRunner.ImplType c : ThriftServerRunner.ImplType.values())
-&nbsp;   System.out.println(c);
-</pre></div>
-<dl>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>an array containing the constants of this enum type, in the order they are declared</dd>
-</dl>
-</li>
-</ul>
-<a name="valueOf-java.lang.String-">
-<!--   -->
-</a>
-<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.241">valueOf</a>(<a href="https://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 
-not permitted.)</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>name</code> - the name of the enum constant to be returned.</dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>the enum constant with the specified name</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if this enum type has no constant with the specified name</dd>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if the argument is null</dd>
-</dl>
-</li>
-</ul>
-<a name="toString--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>toString</h4>
-<pre>public&nbsp;<a href="https://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.266">toString</a>()</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code><a href="https://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="https://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>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd><code>-option</code></dd>
-</dl>
-</li>
-</ul>
-<a name="getOption--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getOption</h4>
-<pre>public&nbsp;<a href="https://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.270">getOption</a>()</pre>
-</li>
-</ul>
-<a name="isAlwaysFramed--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>isAlwaysFramed</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.274">isAlwaysFramed</a>()</pre>
-</li>
-</ul>
-<a name="getDescription--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getDescription</h4>
-<pre>public&nbsp;<a href="https://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.278">getDescription</a>()</pre>
-</li>
-</ul>
-<a name="createOptionGroup--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>createOptionGroup</h4>
-<pre>static&nbsp;org.apache.hbase.thirdparty.org.apache.commons.cli.OptionGroup&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#line.290">createOptionGroup</a>()</pre>
-</li>
-</ul>
-<a name="getServerImpl-org.apache.hadoop.conf.Configuration-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getServerImpl</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.298">getServerImpl</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
-</li>
-</ul>
-<a name="setServerImpl-org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine-org.apache.hadoop.conf.Configuration-">
-<!--   -->
-</a>
-<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.308">setServerImpl</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine&nbsp;cmd,
-                          org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
-</li>
-</ul>
-<a name="simpleClassName--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>simpleClassName</h4>
-<pre>public&nbsp;<a href="https://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.328">simpleClassName</a>()</pre>
-</li>
-</ul>
-<a name="serversThatCannotSpecifyBindIP--">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>serversThatCannotSpecifyBindIP</h4>
-<pre>public static&nbsp;<a href="https://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="https://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.332">serversThatCannotSpecifyBindIP</a>()</pre>
-</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-</div>
-<!-- ========= END OF CLASS DATA ========= -->
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar.bottom">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.bottom.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/ThriftServerRunner.ImplType.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" target="_top">Frames</a></li>
-<li><a href="ThriftServerRunner.ImplType.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
-<li><a href="#enum.constant.summary">Enum Constants</a>&nbsp;|&nbsp;</li>
-<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li><a href="#enum.constant.detail">Enum Constants</a>&nbsp;|&nbsp;</li>
-<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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
deleted file mode 100644
index 406542b..0000000
--- a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html
+++ /dev/null
@@ -1,340 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ThriftServerRunner.ResultScannerWrapper (Apache HBase 3.0.0-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
-    try {
-        if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="ThriftServerRunner.ResultScannerWrapper (Apache HBase 3.0.0-SNAPSHOT API)";
-        }
-    }
-    catch(err) {
-    }
-//-->
-var methods = {"i0":10,"i1":10};
-var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
-var altColor = "altColor";
-var rowColor = "rowColor";
-var tableTab = "tableTab";
-var activeTableTab = "activeTableTab";
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/ThriftServerRunner.ResultScannerWrapper.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftUtilities.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" target="_top">Frames</a></li>
-<li><a href="ThriftServerRunner.ResultScannerWrapper.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
-<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<!-- ======== START OF CLASS DATA ======== -->
-<div class="header">
-<div class="subTitle">org.apache.hadoop.hbase.thrift</div>
-<h2 title="Class ThriftServerRunner.ResultScannerWrapper" class="title">Class ThriftServerRunner.ResultScannerWrapper</h2>
-</div>
-<div class="contentContainer">
-<ul class="inheritance">
-<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
-<li>
-<ul class="inheritance">
-<li>org.apache.hadoop.hbase.thrift.ThriftServerRunner.ResultScannerWrapper</li>
-</ul>
-</li>
-</ul>
-<div class="description">
-<ul class="blockList">
-<li class="blockList">
-<dl>
-<dt>Enclosing class:</dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner</a></dd>
-</dl>
-<hr>
-<br>
-<pre>protected static class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.720">ThriftServerRunner.ResultScannerWrapper</a>
-extends <a href="https://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>
-</div>
-<div class="summary">
-<ul class="blockList">
-<li class="blockList">
-<!-- =========== FIELD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.summary">
-<!--   -->
-</a>
-<h3>Field Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
-<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Field and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html#scanner">scanner</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html#sortColumns">sortColumns</a></span></code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.summary">
-<!--   -->
-</a>
-<h3>Constructor Summary</h3>
-<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>
-</tr>
-<tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html#ResultScannerWrapper-org.apache.hadoop.hbase.client.ResultScanner-boolean-">ResultScannerWrapper</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a>&nbsp;resultScanner,
-                    boolean&nbsp;sortResultColumns)</code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-<!-- ========== METHOD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.summary">
-<!--   -->
-</a>
-<h3>Method Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tr id="i0" class="altColor">
-<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html#getScanner--">getScanner</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i1" class="rowColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html#isColumnSorted--">isColumnSorted</a></span>()</code>&nbsp;</td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<div class="details">
-<ul class="blockList">
-<li class="blockList">
-<!-- ============ FIELD DETAIL =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.detail">
-<!--   -->
-</a>
-<h3>Field Detail</h3>
-<a name="scanner">
-<!--   -->
-</a>
-<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.722">scanner</a></pre>
-</li>
-</ul>
-<a name="sortColumns">
-<!--   -->
-</a>
-<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.723">sortColumns</a></pre>
-</li>
-</ul>
-</li>
-</ul>
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.detail">
-<!--   -->
-</a>
-<h3>Constructor Detail</h3>
-<a name="ResultScannerWrapper-org.apache.hadoop.hbase.client.ResultScanner-boolean-">
-<!--   -->
-</a>
-<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.724">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>
-</li>
-</ul>
-<!-- ============ METHOD DETAIL ========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.detail">
-<!--   -->
-</a>
-<h3>Method Detail</h3>
-<a name="getScanner--">
-<!--   -->
-</a>
-<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.730">getScanner</a>()</pre>
-</li>
-</ul>
-<a name="isColumnSorted--">
-<!--   -->
-</a>
-<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.734">isColumnSorted</a>()</pre>
-</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-</div>
-<!-- ========= END OF CLASS DATA ========= -->
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar.bottom">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.bottom.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/ThriftServerRunner.ResultScannerWrapper.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftUtilities.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" target="_top">Frames</a></li>
-<li><a href="ThriftServerRunner.ResultScannerWrapper.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
-<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>


[30/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/overview-tree.html b/devapidocs/overview-tree.html
index 97deec1..2ea250a 100644
--- a/devapidocs/overview-tree.html
+++ b/devapidocs/overview-tree.html
@@ -1364,7 +1364,11 @@
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/SyncTable.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">SyncTable</span></a> (implements org.apache.hadoop.util.Tool)</li>
-<li type="circle">org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">ThriftServer</span></a> (implements org.apache.hadoop.util.Tool)</li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServer</span></a> (implements org.apache.hadoop.util.Tool)
+<ul>
+<li type="circle">org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">ThriftServer</span></a></li>
+</ul>
+</li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.replication.<a href="org/apache/hadoop/hbase/mapreduce/replication/VerifyReplication.html" title="class in org.apache.hadoop.hbase.mapreduce.replication"><span class="typeNameLink">VerifyReplication</span></a> (implements org.apache.hadoop.util.Tool)</li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/WALPlayer.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">WALPlayer</span></a> (implements org.apache.hadoop.util.Tool)</li>
 <li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZKAclReset.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">ZKAclReset</span></a> (implements org.apache.hadoop.util.Tool)</li>
@@ -1387,6 +1391,7 @@
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">ConnectionImplementation.ServerErrorTracker</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.ServerErrors.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">ConnectionImplementation.ServerErrorTracker.ServerErrors</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ConnectionUtils.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">ConnectionUtils</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Constants</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.constraint.<a href="org/apache/hadoop/hbase/constraint/ConstraintProcessor.html" title="class in org.apache.hadoop.hbase.constraint"><span class="typeNameLink">ConstraintProcessor</span></a> (implements org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/RegionCoprocessor.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessor</a>, org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/RegionObserver.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionObserver</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.constraint.<a href="org/apache/hadoop/hbase/constraint/Constraints.html" title="class in org.apache.hadoop.hbase.constraint"><span class="typeNameLink">Constraints</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.crypto.<a href="org/apache/hadoop/hbase/io/crypto/Context.html" title="class in org.apache.hadoop.hbase.io.crypto"><span class="typeNameLink">Context</span></a> (implements org.apache.hadoop.conf.Configurable)
@@ -1867,6 +1872,12 @@
 <li type="circle">org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/HBaseSaslRpcServer.html" title="class in org.apache.hadoop.hbase.security"><span class="typeNameLink">HBaseSaslRpcServer</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/HBaseSaslRpcServer.SaslDigestCallbackHandler.html" title="class in org.apache.hadoop.hbase.security"><span class="typeNameLink">HBaseSaslRpcServer.SaslDigestCallbackHandler</span></a> (implements javax.security.auth.callback.<a href="https://docs.oracle.com/javase/8/docs/api/javax/security/auth/callback/CallbackHandler.html?is-external=true" title="class or interface in javax.security.auth.callback">CallbackHandler</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/HBaseSaslRpcServer.SaslGssCallbackHandler.html" title="class in org.apache.hadoop.hbase.security"><span class="typeNameLink">HBaseSaslRpcServer.SaslGssCallbackHandler</span></a> (implements javax.security.auth.callback.<a href="https://docs.oracle.com/javase/8/docs/api/javax/security/auth/callback/CallbackHandler.html?is-external=true" title="class or interface in javax.security.auth.callback">CallbackHandler</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">HBaseServiceHandler</span></a>
+<ul>
+<li type="circle">org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">ThriftHBaseServiceHandler</span></a> (implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface)</li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftHBaseServiceHandler</span></a> (implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface)</li>
+</ul>
+</li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HColumnDescriptor.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">HColumnDescriptor</span></a> (implements org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>, java.lang.<a href="https://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;)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ImmutableHColumnDescriptor.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">ImmutableHColumnDescriptor</span></a></li>
@@ -3842,15 +3853,10 @@
 <li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/Threads.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Threads</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/Threads.PrintThreadInfoLazyHolder.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Threads.PrintThreadInfoLazyHolder</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ThreadSafeMemStoreSizing</span></a> (implements org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>)</li>
-<li type="circle">org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">ThriftHBaseServiceHandler</span></a> (implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface)</li>
-<li type="circle">org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">ThriftHBaseServiceHandler.THBaseServiceMetricsProxy</span></a> (implements java.lang.reflect.<a href="https://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>)</li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftHBaseServiceHandler.ResultScannerWrapper</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHttpServlet.HttpKerberosServerAction.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftHttpServlet.HttpKerberosServerAction</span></a> (implements java.security.<a href="https://docs.oracle.com/javase/8/docs/api/java/security/PrivilegedExceptionAction.html?is-external=true" title="class or interface in java.security">PrivilegedExceptionAction</a>&lt;T&gt;)</li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHttpServlet.RemoteUserIdentity.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftHttpServlet.RemoteUserIdentity</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftMetrics</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServer</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServerRunner</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)</li>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServerRunner.HBaseHandler</span></a> (implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface)</li>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServerRunner.ResultScannerWrapper</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftUtilities.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">ThriftUtilities</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftUtilities.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftUtilities</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.throttle.<a href="org/apache/hadoop/hbase/regionserver/throttle/ThroughputControlUtil.html" title="class in org.apache.hadoop.hbase.regionserver.throttle"><span class="typeNameLink">ThroughputControlUtil</span></a></li>
@@ -4085,7 +4091,7 @@
 <ul>
 <li type="circle">org.apache.hadoop.hbase.thrift.generated.IOError (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true" title="class or interface in java.lang">Cloneable</a>, java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>, org.apache.thrift.TBase&lt;T,F&gt;)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServerRunner.IOErrorWithCause</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftHBaseServiceHandler.IOErrorWithCause</span></a></li>
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.thrift2.generated.TIOError (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true" title="class or interface in java.lang">Cloneable</a>, java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>, org.apache.thrift.TBase&lt;T,F&gt;)
@@ -5390,7 +5396,7 @@
 <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.snapshot.<a href="org/apache/hadoop/hbase/snapshot/ExportSnapshot.Counter.html" title="enum in org.apache.hadoop.hbase.snapshot"><span class="typeNameLink">ExportSnapshot.Counter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftMetrics.ThriftServerType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServerRunner.ImplType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ImplType</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>
 <li type="circle">org.apache.hadoop.hbase.backup.impl.<a href="org/apache/hadoop/hbase/backup/impl/TableBackupClient.Stage.html" title="enum in org.apache.hadoop.hbase.backup.impl"><span class="typeNameLink">TableBackupClient.Stage</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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/serialized-form.html
----------------------------------------------------------------------
diff --git a/devapidocs/serialized-form.html b/devapidocs/serialized-form.html
index dadb547..f37d8c6 100644
--- a/devapidocs/serialized-form.html
+++ b/devapidocs/serialized-form.html
@@ -2263,41 +2263,41 @@
 <dd>0L</dd>
 </dl>
 </li>
-<li class="blockList"><a name="org.apache.hadoop.hbase.thrift.ThriftHttpServlet">
+<li class="blockList"><a name="org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler.IOErrorWithCause">
 <!--   -->
 </a>
-<h3>Class <a href="org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html" title="class in org.apache.hadoop.hbase.thrift">org.apache.hadoop.hbase.thrift.ThriftHttpServlet</a> extends org.apache.thrift.server.TServlet implements Serializable</h3>
-<dl class="nameValue">
-<dt>serialVersionUID:</dt>
-<dd>1L</dd>
-</dl>
+<h3>Class <a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift">org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler.IOErrorWithCause</a> extends org.apache.hadoop.hbase.thrift.generated.IOError implements Serializable</h3>
 <ul class="blockList">
 <li class="blockList">
 <h3>Serialized Fields</h3>
 <ul class="blockList">
-<li class="blockList">
-<h4>doAsEnabled</h4>
-<pre>boolean doAsEnabled</pre>
-</li>
 <li class="blockListLast">
-<h4>securityEnabled</h4>
-<pre>boolean securityEnabled</pre>
+<h4>cause</h4>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a> cause</pre>
 </li>
 </ul>
 </li>
 </ul>
 </li>
-<li class="blockList"><a name="org.apache.hadoop.hbase.thrift.ThriftServerRunner.IOErrorWithCause">
+<li class="blockList"><a name="org.apache.hadoop.hbase.thrift.ThriftHttpServlet">
 <!--   -->
 </a>
-<h3>Class <a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift">org.apache.hadoop.hbase.thrift.ThriftServerRunner.IOErrorWithCause</a> extends org.apache.hadoop.hbase.thrift.generated.IOError implements Serializable</h3>
+<h3>Class <a href="org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html" title="class in org.apache.hadoop.hbase.thrift">org.apache.hadoop.hbase.thrift.ThriftHttpServlet</a> extends org.apache.thrift.server.TServlet implements Serializable</h3>
+<dl class="nameValue">
+<dt>serialVersionUID:</dt>
+<dd>1L</dd>
+</dl>
 <ul class="blockList">
 <li class="blockList">
 <h3>Serialized Fields</h3>
 <ul class="blockList">
+<li class="blockList">
+<h4>doAsEnabled</h4>
+<pre>boolean doAsEnabled</pre>
+</li>
 <li class="blockListLast">
-<h4>cause</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a> cause</pre>
+<h4>securityEnabled</h4>
+<pre>boolean securityEnabled</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 3c2cbad..b920880 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -18,9 +18,9 @@
 <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 = "";<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 = "Tue Jan  1 14:43:08 UTC 2019";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Wed Jan  2 14:43:57 UTC 2019";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String url = "git://jenkins-websites1.apache.org/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a>
-<span class="sourceLineNo">015</span>  public static final String srcChecksum = "262a737dc52f9624e627fb306255daeb";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "d799bef05949064497daae3b1629805b";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 


[06/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/coprocessor/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/package-summary.html
index f17e275..ec3348b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/package-summary.html
@@ -479,58 +479,62 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverBypass</a></td>
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionCoprocessorHost</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.TestCoprocessor.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverBypass.TestCoprocessor</a></td>
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverBypass</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.TestCoprocessor.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverBypass.TestCoprocessor</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.TestCoprocessor2.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverBypass.TestCoprocessor2</a></td>
 <td class="colLast">
 <div class="block">Calls through to TestCoprocessor.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.TestCoprocessor3.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverBypass.TestCoprocessor3</a></td>
 <td class="colLast">
 <div class="block">Calls through to TestCoprocessor.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverForAddingMutationsFromCoprocessors.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverForAddingMutationsFromCoprocessors</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverForAddingMutationsFromCoprocessors.TestDeleteCellCoprocessor.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverForAddingMutationsFromCoprocessors.TestDeleteCellCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverForAddingMutationsFromCoprocessors.TestDeleteFamilyCoprocessor.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverForAddingMutationsFromCoprocessors.TestDeleteFamilyCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverForAddingMutationsFromCoprocessors.TestDeleteRowCoprocessor.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverForAddingMutationsFromCoprocessors.TestDeleteRowCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverForAddingMutationsFromCoprocessors.TestMultiMutationCoprocessor.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverForAddingMutationsFromCoprocessors.TestMultiMutationCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverForAddingMutationsFromCoprocessors.TestWALObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverForAddingMutationsFromCoprocessors.TestWALObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverInterface.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverInterface</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverInterface.EvenOnlyCompactor.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverInterface.EvenOnlyCompactor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverPreFlushAndPreCompact.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverPreFlushAndPreCompact</a></td>
 <td class="colLast">
 <div class="block">Test that we fail if a Coprocessor tries to return a null scanner out
@@ -539,131 +543,131 @@
  CompactionLifeCycleTracker, CompactionRequest)</code></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverPreFlushAndPreCompact.TestRegionObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverPreFlushAndPreCompact.TestRegionObserver</a></td>
 <td class="colLast">
 <div class="block">Coprocessor that returns null when preCompact or preFlush is called.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverScannerOpenHook</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.CompactionCompletionNotifyingRegion.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverScannerOpenHook.CompactionCompletionNotifyingRegion</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.EmptyRegionObsever.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverScannerOpenHook.EmptyRegionObsever</a></td>
 <td class="colLast">
 <div class="block">Do the default logic in <code>RegionObserver</code> interface.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.NoDataFilter.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverScannerOpenHook.NoDataFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.NoDataFromCompaction.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverScannerOpenHook.NoDataFromCompaction</a></td>
 <td class="colLast">
 <div class="block">Don't allow any data to be written out in the compaction by creating a custom
  <code>StoreScanner</code>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.NoDataFromFlush.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverScannerOpenHook.NoDataFromFlush</a></td>
 <td class="colLast">
 <div class="block">Don't allow any data in a flush by creating a custom <code>StoreScanner</code>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.NoDataFromScan.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverScannerOpenHook.NoDataFromScan</a></td>
 <td class="colLast">
 <div class="block">Don't return any data from a scan by creating a custom <code>StoreScanner</code>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverStacking.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverStacking</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverStacking.ObserverA.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverStacking.ObserverA</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverStacking.ObserverB.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverStacking.ObserverB</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverStacking.ObserverC.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverStacking.ObserverC</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionServerCoprocessorEndpoint.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionServerCoprocessorEndpoint</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionServerCoprocessorEndpoint.DummyRegionServerEndpoint.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionServerCoprocessorEndpoint.DummyRegionServerEndpoint</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionServerCoprocessorExceptionWithAbort.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionServerCoprocessorExceptionWithAbort</a></td>
 <td class="colLast">
 <div class="block">Tests unhandled exceptions thrown by coprocessors running on a regionserver..</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionServerCoprocessorExceptionWithAbort.BuggyRegionObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionServerCoprocessorExceptionWithAbort.BuggyRegionObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionServerCoprocessorExceptionWithAbort.FailedInitializationObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionServerCoprocessorExceptionWithAbort.FailedInitializationObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionServerCoprocessorExceptionWithRemove.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionServerCoprocessorExceptionWithRemove</a></td>
 <td class="colLast">
 <div class="block">Tests unhandled exceptions thrown by coprocessors running on regionserver.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionServerCoprocessorExceptionWithRemove.BuggyRegionObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionServerCoprocessorExceptionWithRemove.BuggyRegionObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRowProcessorEndpoint</a></td>
 <td class="colLast">
 <div class="block">Verifies ProcessEndpoint works.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.RowProcessorEndpoint.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRowProcessorEndpoint.RowProcessorEndpoint</a>&lt;S extends com.google.protobuf.Message,T extends com.google.protobuf.Message&gt;</td>
 <td class="colLast">
 <div class="block">This class defines two RowProcessors:
  IncrementCounterProcessor and FriendsOfFriendsProcessor.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.RowProcessorEndpoint.FriendsOfFriendsProcessor.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRowProcessorEndpoint.RowProcessorEndpoint.FriendsOfFriendsProcessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.RowProcessorEndpoint.IncrementCounterProcessor.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRowProcessorEndpoint.RowProcessorEndpoint.IncrementCounterProcessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.RowProcessorEndpoint.RowSwapProcessor.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRowProcessorEndpoint.RowProcessorEndpoint.RowSwapProcessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.RowProcessorEndpoint.TimeoutProcessor.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRowProcessorEndpoint.RowProcessorEndpoint.TimeoutProcessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestSecureExport.html" title="class in org.apache.hadoop.hbase.coprocessor">TestSecureExport</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestWALObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">TestWALObserver</a></td>
 <td class="colLast">
 <div class="block">Tests invocation of the

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
index b6f3005..98006bc 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
@@ -240,6 +240,7 @@
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestPostIncrementAndAppendBeforeWAL.ChangeCellWithDifferntColumnFamilyObserver.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">TestPostIncrementAndAppendBeforeWAL.ChangeCellWithDifferntColumnFamilyObserver</span></a> (implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver)</li>
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestPostIncrementAndAppendBeforeWAL.ChangeCellWithNotExistColumnFamilyObserver.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">TestPostIncrementAndAppendBeforeWAL.ChangeCellWithNotExistColumnFamilyObserver</span></a> (implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver)</li>
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestReadOnlyConfiguration.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">TestReadOnlyConfiguration</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">TestRegionCoprocessorHost</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">TestRegionObserverBypass</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.TestCoprocessor.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">TestRegionObserverBypass.TestCoprocessor</span></a> (implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver)
 <ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
index f9b0ab1..95e74d8 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -158,8 +158,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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/TestCacheOnWrite.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TestCacheOnWrite.CacheOnWriteType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TagUsage.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TagUsage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TestCacheOnWrite.CacheOnWriteType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
index 9983f8c..46f4d79 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -579,15 +579,15 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">PerformanceEvaluation.Counter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ResourceChecker.Phase.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ResourceChecker.Phase</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">PerformanceEvaluation.Counter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.Service.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.Service</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ScanPerformanceEvaluation.ScanCounter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterManager.ServiceType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterManager.ServiceType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseClusterManager.CommandProvider.Operation.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseClusterManager.CommandProvider.Operation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ResourceChecker.Phase.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ResourceChecker.Phase</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
index 252fc68..6d842b0 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -234,10 +234,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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/TestStateMachineProcedure.TestSMProcedureState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestStateMachineProcedure.TestSMProcedureState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestYieldProcedures.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestYieldProcedures.TestStateMachineProcedure.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureRecovery.TestStateMachineProcedure.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureBypass.StuckStateMachineState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureBypass.StuckStateMachineState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestStateMachineProcedure.TestSMProcedureState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestStateMachineProcedure.TestSMProcedureState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureRecovery.TestStateMachineProcedure.State</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index 0a97de4..9fac9f9 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -709,11 +709,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DataBlockEncodingTool.Manipulation</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.ActionType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMultiLogThreshold.ActionType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.Metric.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionServerReadRequestMetrics.Metric</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DataBlockEncodingTool.Manipulation</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
index 5d7e588..470c45a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
@@ -253,9 +253,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Verify.Counts</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestLoadAndVerify.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestWithCellVisibilityLoadAndVerify.Counters</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Verify.Counts</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Generator.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Generator.Counts</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html b/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html
index 811f3f6..648fa52 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":9,"i3":10,"i4":10,"i5":10,"i6":9,"i7":10,"i8":10,"i9":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":9,"i4":10,"i5":10,"i6":10,"i7":9,"i8":10,"i9":10,"i10":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";
@@ -109,11 +109,11 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <dl>
 <dt>Direct Known Subclasses:</dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftSpnegoHttpServer</a></dd>
+<dd><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html" title="class in org.apache.hadoop.hbase.thrift2">TestThrift2HttpServer</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftSpnegoHttpServer</a></dd>
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.60">TestThriftHttpServer</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.61">TestThriftHttpServer</a>
 extends <a href="https://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">Start the HBase Thrift HTTP server on a random port through the command-line
  interface and talk to it from client side.</div>
@@ -164,11 +164,11 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#port">port</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>(package private) static boolean</code></td>
+<td class="colFirst"><code>protected static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#tableCreated">tableCreated</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
+<td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
@@ -212,39 +212,43 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#checkHttpMethods-java.lang.String-">checkHttpMethods</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;url)</code>&nbsp;</td>
 </tr>
 <tr id="i1" class="rowColor">
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.thrift.ThriftServer</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#createThriftServer--">createThriftServer</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#runThriftServer-int-">runThriftServer</a></span>(int&nbsp;customHeaderSize)</code>&nbsp;</td>
 </tr>
-<tr id="i2" class="altColor">
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#setUpBeforeClass--">setUpBeforeClass</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i4" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#startHttpServerThread-java.lang.String:A-">startHttpServerThread</a></span>(<a href="https://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="i4" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#stopHttpServerThread--">stopHttpServerThread</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i5" class="rowColor">
-<td class="colFirst"><code>(package private) void</code></td>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#talkToThriftServer-java.lang.String-int-">talkToThriftServer</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;url,
                   int&nbsp;customHeaderSize)</code>&nbsp;</td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#tearDownAfterClass--">tearDownAfterClass</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#testExceptionThrownWhenMisConfigured--">testExceptionThrownWhenMisConfigured</a></span>()</code>&nbsp;</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/TestThriftHttpServer.html#testRunThriftServer--">testRunThriftServer</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#testRunThriftServerWithHeaderBufferLength--">testRunThriftServerWithHeaderBufferLength</a></span>()</code>&nbsp;</td>
 </tr>
@@ -276,7 +280,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.62">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.63">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -285,7 +289,7 @@ extends <a href="https://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/thrift/TestThriftHttpServer.html#line.65">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.66">LOG</a></pre>
 </li>
 </ul>
 <a name="TEST_UTIL">
@@ -294,7 +298,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_UTIL</h4>
-<pre>static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.68">TEST_UTIL</a></pre>
+<pre>protected static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.69">TEST_UTIL</a></pre>
 </li>
 </ul>
 <a name="httpServerThread">
@@ -303,7 +307,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>httpServerThread</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.70">httpServerThread</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.71">httpServerThread</a></pre>
 </li>
 </ul>
 <a name="httpServerException">
@@ -312,7 +316,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>httpServerException</h4>
-<pre>private volatile&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.71">httpServerException</a></pre>
+<pre>private volatile&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.72">httpServerException</a></pre>
 </li>
 </ul>
 <a name="clientSideException">
@@ -321,7 +325,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>clientSideException</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.73">clientSideException</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.74">clientSideException</a></pre>
 </li>
 </ul>
 <a name="thriftServer">
@@ -330,7 +334,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>thriftServer</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.thrift.ThriftServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.75">thriftServer</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.thrift.ThriftServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.76">thriftServer</a></pre>
 </li>
 </ul>
 <a name="port">
@@ -339,7 +343,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>port</h4>
-<pre>int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.76">port</a></pre>
+<pre>int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.77">port</a></pre>
 </li>
 </ul>
 <a name="exception">
@@ -357,7 +361,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>tableCreated</h4>
-<pre>static volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.198">tableCreated</a></pre>
+<pre>protected static volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.202">tableCreated</a></pre>
 </li>
 </ul>
 </li>
@@ -374,7 +378,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestThriftHttpServer</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.60">TestThriftHttpServer</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.61">TestThriftHttpServer</a>()</pre>
 </li>
 </ul>
 </li>
@@ -391,7 +395,7 @@ extends <a href="https://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/TestThriftHttpServer.html#line.79">setUpBeforeClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.80">setUpBeforeClass</a>()
                              throws <a href="https://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>
@@ -405,7 +409,7 @@ extends <a href="https://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/TestThriftHttpServer.html#line.89">tearDownAfterClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.90">tearDownAfterClass</a>()
                                throws <a href="https://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>
@@ -419,7 +423,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testExceptionThrownWhenMisConfigured</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.95">testExceptionThrownWhenMisConfigured</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.96">testExceptionThrownWhenMisConfigured</a>()
                                           throws <a href="https://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>
@@ -450,13 +454,22 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="createThriftServer--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createThriftServer</h4>
+<pre>protected&nbsp;org.apache.hadoop.hbase.thrift.ThriftServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.148">createThriftServer</a>()</pre>
+</li>
+</ul>
 <a name="testRunThriftServer--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>testRunThriftServer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.149">testRunThriftServer</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.153">testRunThriftServer</a>()
                          throws <a href="https://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>
@@ -470,7 +483,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>runThriftServer</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.153">runThriftServer</a>(int&nbsp;customHeaderSize)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.157">runThriftServer</a>(int&nbsp;customHeaderSize)
               throws <a href="https://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>
@@ -484,7 +497,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkHttpMethods</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.189">checkHttpMethods</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;url)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.193">checkHttpMethods</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;url)
                        throws <a href="https://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>
@@ -498,9 +511,9 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>talkToThriftServer</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.200">talkToThriftServer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;url,
-                        int&nbsp;customHeaderSize)
-                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.204">talkToThriftServer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;url,
+                                  int&nbsp;customHeaderSize)
+                           throws <a href="https://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>
 <dd><code><a href="https://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>
@@ -513,7 +526,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>stopHttpServerThread</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.226">stopHttpServerThread</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.230">stopHttpServerThread</a>()
                            throws <a href="https://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/849d84a8/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 e79ecbf..cc9cdb0 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftServer.MySlowHBaseHandler.html
@@ -74,8 +74,8 @@ var activeTableTab = "activeTableTab";
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
-<li><a href="#fields.inherited.from.class.org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#fields.inherited.from.class.org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
 </ul>
@@ -100,7 +100,10 @@ var activeTableTab = "activeTableTab";
 <li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
 <li>
 <ul class="inheritance">
-<li>org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler</li>
+<li>org.apache.hadoop.hbase.thrift.HBaseServiceHandler</li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler</li>
 <li>
 <ul class="inheritance">
 <li>org.apache.hadoop.hbase.thrift.TestThriftServer.MySlowHBaseHandler</li>
@@ -109,6 +112,8 @@ var activeTableTab = "activeTableTab";
 </ul>
 </li>
 </ul>
+</li>
+</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
@@ -123,7 +128,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>public static final class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.166">TestThriftServer.MySlowHBaseHandler</a>
-extends org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler
+extends org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler
 implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 </li>
 </ul>
@@ -131,6 +136,21 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <div class="summary">
 <ul class="blockList">
 <li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler</h3>
+<code>org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler.IOErrorWithCause, org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler.ResultScannerWrapper</code></li>
+</ul>
+</li>
+</ul>
 <!-- =========== FIELD SUMMARY =========== -->
 <ul class="blockList">
 <li class="blockList"><a name="field.summary">
@@ -138,11 +158,18 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 </a>
 <h3>Field Summary</h3>
 <ul class="blockList">
-<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler</h3>
+<code>coalescer, HREGION_VERSION</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.thrift.HBaseServiceHandler">
 <!--   -->
 </a>
-<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler</h3>
-<code>CLEANUP_INTERVAL, coalescer, conf, LOG, MAX_IDLETIME, nextScannerId, scannerMap</code></li>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.thrift.HBaseServiceHandler</h3>
+<code>CLEANUP_INTERVAL, conf, connectionCache, MAX_IDLETIME, metrics</code></li>
 </ul>
 </li>
 </ul>
@@ -183,11 +210,18 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 </tr>
 </table>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler</h3>
+<code>addScanner, append, atomicIncrement, atomicIncrement, checkAndPut, compact, createTable, deleteAll, deleteAllRow, deleteAllRowTs, deleteAllTs, deleteTable, disableTable, enableTable, get, get, getAllColumns, getColumnDescriptors, getRegionInfo, getRow, getRows, getRowsTs, getRowsWithColumns, getRowsWithColumnsTs, getRowTs, getRowWithColumns, getRowWithColumnsTs, getTableRegions, getVer, getVer, getVerTs, getVerTs, increment, incrementRows, isTableEnabled, majorCompact, mutateRow, mutateRows, mutateRowsTs, mutateRowTs, scannerClose, scannerGet, scannerGetList, scannerOpen, scannerOpenTs, scannerOpenWithPrefix, scannerOpenWithScan, scannerOpenWithStop, scannerOpenWithStopTs</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.thrift.HBaseServiceHandler">
 <!--   -->
 </a>
-<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler</h3>
-<code>addScanner, append, atomicIncrement, atomicIncrement, checkAndPut, compact, createTable, deleteAll, deleteAllRow, deleteAllRowTs, deleteAllTs, deleteTable, disableTable, enableTable, get, get, getAllColumns, getColumnDescriptors, getRegionInfo, getRow, getRows, getRowsTs, getRowsWithColumns, getRowsWithColumnsTs, getRowTs, getRowWithColumns, getRowWithColumnsTs, getScanner, getTable, getTable, getTableRegions, getVer, getVer, getVerTs, getVerTs, increment, incrementRows, isTableEnabled, majorCompact, mutateRow, mutateRows, mutateRowsTs, mutateRowTs, removeScanner, scannerClose, scannerGet, scannerGetList, scannerOpen, scannerOpenTs, scannerOpenWithPrefix, scannerOpenWithScan, scannerOpenWithStop, scannerOpenWithStopTs, setEffectiveUser</code></li>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.thrift.HBaseServiceHandler</h3>
+<code>getAdmin, getTable, getTable, initMetrics, setEffectiveUser</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -251,7 +285,7 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getTableNames</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</code></dd>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code>getTableNames</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler</code></dd>
+<dd><code>getTableNames</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler</code></dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code>org.apache.hadoop.hbase.thrift.generated.IOError</code></dd>
 </dl>
@@ -310,8 +344,8 @@ implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
-<li><a href="#fields.inherited.from.class.org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#fields.inherited.from.class.org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 281afc9..91154ea 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftServer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/thrift/TestThriftServer.html
@@ -111,7 +111,7 @@ var activeTableTab = "activeTableTab";
 <br>
 <pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.78">TestThriftServer</a>
 extends <a href="https://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">Unit testing for ThriftServerRunner.HBaseHandler, a part of the
+<div class="block">Unit testing for ThriftServerRunner.HBaseServiceHandler, a part of the
  org.apache.hadoop.hbase.thrift package.</div>
 </li>
 </ul>
@@ -276,8 +276,8 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i5" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServer.html#closeScanner-int-org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler-">closeScanner</a></span>(int&nbsp;scannerId,
-            org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler&nbsp;handler)</code>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServer.html#closeScanner-int-org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler-">closeScanner</a></span>(int&nbsp;scannerId,
+            org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler&nbsp;handler)</code>
 <div class="block">Asserts that the passed scanner is exhausted, and then closes
  the scanner.</div>
 </td>
@@ -328,7 +328,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <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/thrift/TestThriftServer.html#doTestIncrements-org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler-">doTestIncrements</a></span>(org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler&nbsp;handler)</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServer.html#doTestIncrements-org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler-">doTestIncrements</a></span>(org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler&nbsp;handler)</code>&nbsp;</td>
 </tr>
 <tr id="i16" class="altColor">
 <td class="colFirst"><code>void</code></td>
@@ -851,13 +851,13 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
-<a name="doTestIncrements-org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler-">
+<a name="doTestIncrements-org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler-">
 <!--   -->
 </a>
 <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.281">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.281">doTestIncrements</a>(org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler&nbsp;handler)
                              throws <a href="https://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>
@@ -1126,21 +1126,21 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
-<a name="closeScanner-int-org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler-">
+<a name="closeScanner-int-org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler-">
 <!--   -->
 </a>
 <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.868">closeScanner</a>(int&nbsp;scannerId,
-                          org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler&nbsp;handler)
+                          org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler&nbsp;handler)
                    throws <a href="https://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
  the scanner.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>scannerId</code> - the scanner to close</dd>
-<dd><code>handler</code> - the HBaseHandler interfacing to HBase</dd>
+<dd><code>handler</code> - the HBaseServiceHandler interfacing to HBase</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="https://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>


[26/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html
index c4e8c8b..aa58108 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html
@@ -82,602 +82,613 @@
 <span class="sourceLineNo">074</span>  public static final String USER_COPROCESSORS_ENABLED_CONF_KEY =<a name="line.74"></a>
 <span class="sourceLineNo">075</span>    "hbase.coprocessor.user.enabled";<a name="line.75"></a>
 <span class="sourceLineNo">076</span>  public static final boolean DEFAULT_USER_COPROCESSORS_ENABLED = true;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  private static final Logger LOG = LoggerFactory.getLogger(CoprocessorHost.class);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  protected Abortable abortable;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  /** Ordered set of loaded coprocessors with lock */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  protected final SortedList&lt;E&gt; coprocEnvironments =<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      new SortedList&lt;&gt;(new EnvironmentPriorityComparator());<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  protected Configuration conf;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  // unique file prefix to use for local copies of jars when classloading<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  protected String pathPrefix;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  protected AtomicInteger loadSequence = new AtomicInteger();<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>  public CoprocessorHost(Abortable abortable) {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    this.abortable = abortable;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    this.pathPrefix = UUID.randomUUID().toString();<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>   * Not to be confused with the per-object _coprocessors_ (above),<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   * coprocessorNames is static and stores the set of all coprocessors ever<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * loaded by any thread in this JVM. It is strictly additive: coprocessors are<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * added to coprocessorNames, by checkAndLoadInstance() but are never removed, since<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   * the intention is to preserve a history of all loaded coprocessors for<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * diagnosis in case of server crash (HBASE-4014).<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  private static Set&lt;String&gt; coprocessorNames =<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      Collections.synchronizedSet(new HashSet&lt;String&gt;());<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  public static Set&lt;String&gt; getLoadedCoprocessors() {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    synchronized (coprocessorNames) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      return new HashSet(coprocessorNames);<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>  /**<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * Used to create a parameter to the HServerLoad constructor so that<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * HServerLoad can provide information about the coprocessors loaded by this<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * regionserver.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * (HBASE-4070: Improve region server metrics to report loaded coprocessors<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * to master).<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   */<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  public Set&lt;String&gt; getCoprocessors() {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    Set&lt;String&gt; returnValue = new TreeSet&lt;&gt;();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    for (E e: coprocEnvironments) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      returnValue.add(e.getInstance().getClass().getSimpleName());<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    return returnValue;<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>   * Load system coprocessors once only. Read the class names from configuration.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * Called by constructor.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   */<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  protected void loadSystemCoprocessors(Configuration conf, String confKey) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    if (!coprocessorsEnabled) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      return;<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>    Class&lt;?&gt; implClass;<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>    // load default coprocessors from configure file<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    String[] defaultCPClasses = conf.getStrings(confKey);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    if (defaultCPClasses == null || defaultCPClasses.length == 0)<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      return;<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    int priority = Coprocessor.PRIORITY_SYSTEM;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    for (String className : defaultCPClasses) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      className = className.trim();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      if (findCoprocessor(className) != null) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        // If already loaded will just continue<a name="line.147"></a>
-<span class="sourceLineNo">148</span>        LOG.warn("Attempted duplicate loading of " + className + "; skipped");<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        continue;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      }<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      ClassLoader cl = this.getClass().getClassLoader();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      Thread.currentThread().setContextClassLoader(cl);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      try {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>        implClass = cl.loadClass(className);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        // Add coprocessors as we go to guard against case where a coprocessor is specified twice<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        // in the configuration<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        if (env != null) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>          this.coprocEnvironments.add(env);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          LOG.info("System coprocessor {} loaded, priority={}.", className, priority);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>          ++priority;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        }<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      } catch (Throwable t) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        // We always abort if system coprocessors cannot be loaded<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        abortServer(className, t);<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><a name="line.169"></a>
-<span class="sourceLineNo">170</span>  /**<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * Load a coprocessor implementation into the host<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * @param path path to implementation jar<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * @param className the main class name<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * @param priority chaining priority<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * @param conf configuration for coprocessor<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   * @throws java.io.IOException Exception<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  public E load(Path path, String className, int priority,<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      Configuration conf) throws IOException {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    String[] includedClassPrefixes = null;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    if (conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY) != null){<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      String prefixes = conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      includedClassPrefixes = prefixes.split(";");<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    }<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    return load(path, className, priority, conf, includedClassPrefixes);<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>   * Load a coprocessor implementation into the host<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * @param path path to implementation jar<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param className the main class name<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * @param priority chaining priority<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * @param conf configuration for coprocessor<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * @param includedClassPrefixes class name prefixes to include<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * @throws java.io.IOException Exception<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  public E load(Path path, String className, int priority,<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      Configuration conf, String[] includedClassPrefixes) throws IOException {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    Class&lt;?&gt; implClass;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    LOG.debug("Loading coprocessor class " + className + " with path " +<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        path + " and priority " + priority);<a name="line.201"></a>
-<span class="sourceLineNo">202</span><a name="line.202"></a>
-<span class="sourceLineNo">203</span>    ClassLoader cl = null;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    if (path == null) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      try {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>        implClass = getClass().getClassLoader().loadClass(className);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      } catch (ClassNotFoundException e) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>        throw new IOException("No jar path specified for " + className);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      }<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    } else {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      cl = CoprocessorClassLoader.getClassLoader(<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        path, getClass().getClassLoader(), pathPrefix, conf);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      try {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        implClass = ((CoprocessorClassLoader)cl).loadClass(className, includedClassPrefixes);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      } catch (ClassNotFoundException e) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>        throw new IOException("Cannot load external coprocessor class " + className, e);<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><a name="line.219"></a>
-<span class="sourceLineNo">220</span>    //load custom code for coprocessor<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    Thread currentThread = Thread.currentThread();<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    try{<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      // switch temporarily to the thread classloader for custom CP<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      currentThread.setContextClassLoader(cl);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      E cpInstance = checkAndLoadInstance(implClass, priority, conf);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return cpInstance;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    } finally {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      // restore the fresh (host) classloader<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      currentThread.setContextClassLoader(hostClassLoader);<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>  @VisibleForTesting<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public void load(Class&lt;? extends C&gt; implClass, int priority, Configuration conf)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      throws IOException {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    coprocEnvironments.add(env);<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>   * @param implClass Implementation class<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * @param priority priority<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   * @param conf configuration<a name="line.244"></a>
-<span class="sourceLineNo">245</span>   * @throws java.io.IOException Exception<a name="line.245"></a>
-<span class="sourceLineNo">246</span>   */<a name="line.246"></a>
-<span class="sourceLineNo">247</span>  public E checkAndLoadInstance(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      throws IOException {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    // create the instance<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    C impl;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    try {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      impl = checkAndGetInstance(implClass);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      if (impl == null) {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        LOG.error("Cannot load coprocessor " + implClass.getSimpleName());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        return null;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      }<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    } catch (InstantiationException|IllegalAccessException e) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      throw new IOException(e);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    // create the environment<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    E env = createEnvironment(impl, priority, loadSequence.incrementAndGet(), conf);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    assert env instanceof BaseEnvironment;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    ((BaseEnvironment&lt;C&gt;) env).startup();<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    // HBASE-4014: maintain list of loaded coprocessors for later crash analysis<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    // if server (master or regionserver) aborts.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    coprocessorNames.add(implClass.getName());<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    return env;<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>  /**<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * Called when a new Coprocessor class is loaded<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   */<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  public abstract E createEnvironment(C instance, int priority, int sequence, Configuration conf);<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>   * Called when a new Coprocessor class needs to be loaded. Checks if type of the given class<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   * is what the corresponding host implementation expects. If it is of correct type, returns an<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   * instance of the coprocessor to be loaded. If not, returns null.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   * If an exception occurs when trying to create instance of a coprocessor, it's passed up and<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * eventually results into server aborting.<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   */<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  public abstract C checkAndGetInstance(Class&lt;?&gt; implClass)<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      throws InstantiationException, IllegalAccessException;<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>  public void shutdown(E e) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    assert e instanceof BaseEnvironment;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    if (LOG.isDebugEnabled()) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      LOG.debug("Stop coprocessor " + e.getInstance().getClass().getName());<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    }<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    ((BaseEnvironment&lt;C&gt;) e).shutdown();<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>   * Find coprocessors by full class name or simple name.<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   */<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  public C findCoprocessor(String className) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    for (E env: coprocEnvironments) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        return env.getInstance();<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>    return null;<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>  @VisibleForTesting<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  public &lt;T extends C&gt; T findCoprocessor(Class&lt;T&gt; cls) {<a name="line.307"></a>
+<span class="sourceLineNo">077</span>  public static final String SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR =<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      "hbase.skip.load.duplicate.table.coprocessor";<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  public static final boolean DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR = false;<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private static final Logger LOG = LoggerFactory.getLogger(CoprocessorHost.class);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  protected Abortable abortable;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  /** Ordered set of loaded coprocessors with lock */<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  protected final SortedList&lt;E&gt; coprocEnvironments =<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      new SortedList&lt;&gt;(new EnvironmentPriorityComparator());<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  protected Configuration conf;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  // unique file prefix to use for local copies of jars when classloading<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  protected String pathPrefix;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  protected AtomicInteger loadSequence = new AtomicInteger();<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public CoprocessorHost(Abortable abortable) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    this.abortable = abortable;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    this.pathPrefix = UUID.randomUUID().toString();<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>   * Not to be confused with the per-object _coprocessors_ (above),<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   * coprocessorNames is static and stores the set of all coprocessors ever<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   * loaded by any thread in this JVM. It is strictly additive: coprocessors are<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * added to coprocessorNames, by checkAndLoadInstance() but are never removed, since<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * the intention is to preserve a history of all loaded coprocessors for<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * diagnosis in case of server crash (HBASE-4014).<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   */<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  private static Set&lt;String&gt; coprocessorNames =<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      Collections.synchronizedSet(new HashSet&lt;String&gt;());<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  public static Set&lt;String&gt; getLoadedCoprocessors() {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    synchronized (coprocessorNames) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      return new HashSet(coprocessorNames);<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>  /**<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * Used to create a parameter to the HServerLoad constructor so that<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   * HServerLoad can provide information about the coprocessors loaded by this<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   * regionserver.<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   * (HBASE-4070: Improve region server metrics to report loaded coprocessors<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   * to master).<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   */<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  public Set&lt;String&gt; getCoprocessors() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    Set&lt;String&gt; returnValue = new TreeSet&lt;&gt;();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    for (E e: coprocEnvironments) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      returnValue.add(e.getInstance().getClass().getSimpleName());<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    return returnValue;<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>   * Load system coprocessors once only. Read the class names from configuration.<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * Called by constructor.<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  protected void loadSystemCoprocessors(Configuration conf, String confKey) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    if (!coprocessorsEnabled) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      return;<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>    Class&lt;?&gt; implClass;<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>    // load default coprocessors from configure file<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    String[] defaultCPClasses = conf.getStrings(confKey);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    if (defaultCPClasses == null || defaultCPClasses.length == 0)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      return;<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    int priority = Coprocessor.PRIORITY_SYSTEM;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    for (String className : defaultCPClasses) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      className = className.trim();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      if (findCoprocessor(className) != null) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        // If already loaded will just continue<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        LOG.warn("Attempted duplicate loading of " + className + "; skipped");<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        continue;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      }<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      ClassLoader cl = this.getClass().getClassLoader();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      Thread.currentThread().setContextClassLoader(cl);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      try {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>        implClass = cl.loadClass(className);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        // Add coprocessors as we go to guard against case where a coprocessor is specified twice<a name="line.158"></a>
+<span class="sourceLineNo">159</span>        // in the configuration<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        if (env != null) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>          this.coprocEnvironments.add(env);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>          LOG.info("System coprocessor {} loaded, priority={}.", className, priority);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>          ++priority;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      } catch (Throwable t) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        // We always abort if system coprocessors cannot be loaded<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        abortServer(className, t);<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>  }<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>   * Load a coprocessor implementation into the host<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * @param path path to implementation jar<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * @param className the main class name<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   * @param priority chaining priority<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   * @param conf configuration for coprocessor<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   * @throws java.io.IOException Exception<a name="line.179"></a>
+<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  public E load(Path path, String className, int priority,<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      Configuration conf) throws IOException {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    String[] includedClassPrefixes = null;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    if (conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY) != null){<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      String prefixes = conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      includedClassPrefixes = prefixes.split(";");<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return load(path, className, priority, conf, includedClassPrefixes);<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>  /**<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * Load a coprocessor implementation into the host<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * @param path path to implementation jar<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * @param className the main class name<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * @param priority chaining priority<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * @param conf configuration for coprocessor<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * @param includedClassPrefixes class name prefixes to include<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * @throws java.io.IOException Exception<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   */<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  public E load(Path path, String className, int priority,<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      Configuration conf, String[] includedClassPrefixes) throws IOException {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    Class&lt;?&gt; implClass;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    LOG.debug("Loading coprocessor class " + className + " with path " +<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        path + " and priority " + priority);<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>    boolean skipLoadDuplicateCoprocessor = conf.getBoolean(SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR,<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    if (skipLoadDuplicateCoprocessor &amp;&amp; findCoprocessor(className) != null) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      // If already loaded will just continue<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      LOG.warn("Attempted duplicate loading of {}; skipped", className);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      return null;<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>    ClassLoader cl = null;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    if (path == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      try {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        implClass = getClass().getClassLoader().loadClass(className);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      } catch (ClassNotFoundException e) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        throw new IOException("No jar path specified for " + className);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      }<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    } else {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      cl = CoprocessorClassLoader.getClassLoader(<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        path, getClass().getClassLoader(), pathPrefix, conf);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      try {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        implClass = ((CoprocessorClassLoader)cl).loadClass(className, includedClassPrefixes);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      } catch (ClassNotFoundException e) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        throw new IOException("Cannot load external coprocessor class " + className, e);<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>    //load custom code for coprocessor<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    Thread currentThread = Thread.currentThread();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    try{<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      // switch temporarily to the thread classloader for custom CP<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      currentThread.setContextClassLoader(cl);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      E cpInstance = checkAndLoadInstance(implClass, priority, conf);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      return cpInstance;<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    } finally {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      // restore the fresh (host) classloader<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      currentThread.setContextClassLoader(hostClassLoader);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    }<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>  @VisibleForTesting<a name="line.245"></a>
+<span class="sourceLineNo">246</span>  public void load(Class&lt;? extends C&gt; implClass, int priority, Configuration conf)<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      throws IOException {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    coprocEnvironments.add(env);<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>  /**<a name="line.252"></a>
+<span class="sourceLineNo">253</span>   * @param implClass Implementation class<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * @param priority priority<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * @param conf configuration<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   * @throws java.io.IOException Exception<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   */<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  public E checkAndLoadInstance(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      throws IOException {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    // create the instance<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    C impl;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    try {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      impl = checkAndGetInstance(implClass);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      if (impl == null) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        LOG.error("Cannot load coprocessor " + implClass.getSimpleName());<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        return null;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    } catch (InstantiationException|IllegalAccessException e) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      throw new IOException(e);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    }<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    // create the environment<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    E env = createEnvironment(impl, priority, loadSequence.incrementAndGet(), conf);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    assert env instanceof BaseEnvironment;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    ((BaseEnvironment&lt;C&gt;) env).startup();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    // HBASE-4014: maintain list of loaded coprocessors for later crash analysis<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // if server (master or regionserver) aborts.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    coprocessorNames.add(implClass.getName());<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    return env;<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>   * Called when a new Coprocessor class is loaded<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   */<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  public abstract E createEnvironment(C instance, int priority, int sequence, Configuration conf);<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>   * Called when a new Coprocessor class needs to be loaded. Checks if type of the given class<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * is what the corresponding host implementation expects. If it is of correct type, returns an<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * instance of the coprocessor to be loaded. If not, returns null.<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * If an exception occurs when trying to create instance of a coprocessor, it's passed up and<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * eventually results into server aborting.<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   */<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  public abstract C checkAndGetInstance(Class&lt;?&gt; implClass)<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      throws InstantiationException, IllegalAccessException;<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  public void shutdown(E e) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    assert e instanceof BaseEnvironment;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    if (LOG.isDebugEnabled()) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      LOG.debug("Stop coprocessor " + e.getInstance().getClass().getName());<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    }<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    ((BaseEnvironment&lt;C&gt;) e).shutdown();<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>  /**<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * Find coprocessors by full class name or simple name.<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   */<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  public C findCoprocessor(String className) {<a name="line.307"></a>
 <span class="sourceLineNo">308</span>    for (E env: coprocEnvironments) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      if (cls.isAssignableFrom(env.getInstance().getClass())) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        return (T) env.getInstance();<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>    return null;<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>   * Find list of coprocessors that extend/implement the given class/interface<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @param cls the class/interface to look for<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * @return the list of coprocessors, or null if not found<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public &lt;T extends C&gt; List&lt;T&gt; findCoprocessors(Class&lt;T&gt; cls) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    ArrayList&lt;T&gt; ret = new ArrayList&lt;&gt;();<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    for (E env: coprocEnvironments) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      C cp = env.getInstance();<a name="line.325"></a>
+<span class="sourceLineNo">309</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.309"></a>
+<span class="sourceLineNo">310</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        return env.getInstance();<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>    return null;<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>  @VisibleForTesting<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public &lt;T extends C&gt; T findCoprocessor(Class&lt;T&gt; cls) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    for (E env: coprocEnvironments) {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      if (cls.isAssignableFrom(env.getInstance().getClass())) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        return (T) env.getInstance();<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>    return null;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
 <span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>      if(cp != null) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        if (cls.isAssignableFrom(cp.getClass())) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          ret.add((T)cp);<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>    }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    return ret;<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>  /**<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * Find a coprocessor environment by class name<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   * @param className the class name<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   * @return the coprocessor, or null if not found<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   */<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  @VisibleForTesting<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public E findCoprocessorEnvironment(String className) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    for (E env: coprocEnvironments) {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.344"></a>
-<span class="sourceLineNo">345</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        return env;<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>    return null;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  }<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>   * Retrieves the set of classloaders used to instantiate Coprocessor classes defined in external<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * jar files.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * @return A set of ClassLoader instances<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  Set&lt;ClassLoader&gt; getExternalClassLoaders() {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    Set&lt;ClassLoader&gt; externalClassLoaders = new HashSet&lt;&gt;();<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    final ClassLoader systemClassLoader = this.getClass().getClassLoader();<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    for (E env : coprocEnvironments) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      ClassLoader cl = env.getInstance().getClass().getClassLoader();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      if (cl != systemClassLoader){<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        //do not include system classloader<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        externalClassLoaders.add(cl);<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>    return externalClassLoaders;<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>   * Environment priority comparator.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * Coprocessors are chained in sorted order.<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   */<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  static class EnvironmentPriorityComparator implements Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    @Override<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        final CoprocessorEnvironment env2) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>        return -1;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>        return 1;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      }<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        return -1;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        return 1;<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      return 0;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    }<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>  protected void abortServer(final E environment, final Throwable e) {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    abortServer(environment.getInstance().getClass().getName(), e);<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>  protected void abortServer(final String coprocessorName, final Throwable e) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    String message = "The coprocessor " + coprocessorName + " threw " + e.toString();<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    LOG.error(message, e);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    if (abortable != null) {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      abortable.abort(message, e);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    } else {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      LOG.warn("No available Abortable, process was not aborted");<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>  /**<a name="line.406"></a>
-<span class="sourceLineNo">407</span>   * This is used by coprocessor hooks which are declared to throw IOException<a name="line.407"></a>
-<span class="sourceLineNo">408</span>   * (or its subtypes). For such hooks, we should handle throwable objects<a name="line.408"></a>
-<span class="sourceLineNo">409</span>   * depending on the Throwable's type. Those which are instances of<a name="line.409"></a>
-<span class="sourceLineNo">410</span>   * IOException should be passed on to the client. This is in conformance with<a name="line.410"></a>
-<span class="sourceLineNo">411</span>   * the HBase idiom regarding IOException: that it represents a circumstance<a name="line.411"></a>
-<span class="sourceLineNo">412</span>   * that should be passed along to the client for its own handling. For<a name="line.412"></a>
-<span class="sourceLineNo">413</span>   * example, a coprocessor that implements access controls would throw a<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * subclass of IOException, such as AccessDeniedException, in its preGet()<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * method to prevent an unauthorized client's performing a Get on a particular<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * table.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param env Coprocessor Environment<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param e Throwable object thrown by coprocessor.<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * @exception IOException Exception<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   */<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  // Note to devs: Class comments of all observers ({@link MasterObserver}, {@link WALObserver},<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  // etc) mention this nuance of our exception handling so that coprocessor can throw appropriate<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  // exceptions depending on situation. If any changes are made to this logic, make sure to<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  // update all classes' comments.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  protected void handleCoprocessorThrowable(final E env, final Throwable e) throws IOException {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    if (e instanceof IOException) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      throw (IOException)e;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    // If we got here, e is not an IOException. A loaded coprocessor has a<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    // fatal bug, and the server (master or regionserver) should remove the<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    // faulty coprocessor from its set of active coprocessors. Setting<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    // 'hbase.coprocessor.abortonerror' to true will cause abortServer(),<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    // which may be useful in development and testing environments where<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    // 'failing fast' for error analysis is desired.<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if (env.getConfiguration().getBoolean(ABORT_ON_ERROR_KEY, DEFAULT_ABORT_ON_ERROR)) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      // server is configured to abort.<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      abortServer(env, e);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    } else {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      // If available, pull a table name out of the environment<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      if(env instanceof RegionCoprocessorEnvironment) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        String tableName = ((RegionCoprocessorEnvironment)env).getRegionInfo().getTable().getNameAsString();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from table '"+ tableName + "'", e);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      } else {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from " +<a name="line.444"></a>
-<span class="sourceLineNo">445</span>                "environment",e);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>      coprocEnvironments.remove(env);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      try {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>        shutdown(env);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      } catch (Exception x) {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>        LOG.error("Uncaught exception when shutting down coprocessor '"<a name="line.452"></a>
-<span class="sourceLineNo">453</span>            + env.toString() + "'", x);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      throw new DoNotRetryIOException("Coprocessor: '" + env.toString() +<a name="line.455"></a>
-<span class="sourceLineNo">456</span>          "' threw: '" + e + "' and has been removed from the active " +<a name="line.456"></a>
-<span class="sourceLineNo">457</span>          "coprocessor set.", e);<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><a name="line.460"></a>
-<span class="sourceLineNo">461</span>  /**<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * Used to limit legacy handling to once per Coprocessor class per classloader.<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   */<a name="line.463"></a>
-<span class="sourceLineNo">464</span>  private static final Set&lt;Class&lt;? extends Coprocessor&gt;&gt; legacyWarning =<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      new ConcurrentSkipListSet&lt;&gt;(<a name="line.465"></a>
-<span class="sourceLineNo">466</span>          new Comparator&lt;Class&lt;? extends Coprocessor&gt;&gt;() {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>            @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>            public int compare(Class&lt;? extends Coprocessor&gt; c1, Class&lt;? extends Coprocessor&gt; c2) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>              if (c1.equals(c2)) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>                return 0;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>              }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>              return c1.getName().compareTo(c2.getName());<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><a name="line.475"></a>
-<span class="sourceLineNo">476</span>  /**<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * Implementations defined function to get an observer of type {@code O} from a coprocessor of<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * type {@code C}. Concrete implementations of CoprocessorHost define one getter for each<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * observer they can handle. For e.g. RegionCoprocessorHost will use 3 getters, one for<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * each of RegionObserver, EndpointObserver and BulkLoadObserver.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * These getters are used by {@code ObserverOperation} to get appropriate observer from the<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * coprocessor.<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   */<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  @FunctionalInterface<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  public interface ObserverGetter&lt;C, O&gt; extends Function&lt;C, Optional&lt;O&gt;&gt; {}<a name="line.485"></a>
+<span class="sourceLineNo">327</span>  /**<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * Find list of coprocessors that extend/implement the given class/interface<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @param cls the class/interface to look for<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   * @return the list of coprocessors, or null if not found<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public &lt;T extends C&gt; List&lt;T&gt; findCoprocessors(Class&lt;T&gt; cls) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    ArrayList&lt;T&gt; ret = new ArrayList&lt;&gt;();<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>    for (E env: coprocEnvironments) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      C cp = env.getInstance();<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>      if(cp != null) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>        if (cls.isAssignableFrom(cp.getClass())) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>          ret.add((T)cp);<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>    return ret;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  }<a name="line.345"></a>
+<span class="sourceLineNo">346</span><a name="line.346"></a>
+<span class="sourceLineNo">347</span>  /**<a name="line.347"></a>
+<span class="sourceLineNo">348</span>   * Find a coprocessor environment by class name<a name="line.348"></a>
+<span class="sourceLineNo">349</span>   * @param className the class name<a name="line.349"></a>
+<span class="sourceLineNo">350</span>   * @return the coprocessor, or null if not found<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   */<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  @VisibleForTesting<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  public E findCoprocessorEnvironment(String className) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    for (E env: coprocEnvironments) {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        return env;<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>    return null;<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>  /**<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   * Retrieves the set of classloaders used to instantiate Coprocessor classes defined in external<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   * jar files.<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   * @return A set of ClassLoader instances<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  Set&lt;ClassLoader&gt; getExternalClassLoaders() {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    Set&lt;ClassLoader&gt; externalClassLoaders = new HashSet&lt;&gt;();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    final ClassLoader systemClassLoader = this.getClass().getClassLoader();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    for (E env : coprocEnvironments) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      ClassLoader cl = env.getInstance().getClass().getClassLoader();<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      if (cl != systemClassLoader){<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        //do not include system classloader<a name="line.374"></a>
+<span class="sourceLineNo">375</span>        externalClassLoaders.add(cl);<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>    return externalClassLoaders;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  }<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>   * Environment priority comparator.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   * Coprocessors are chained in sorted order.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>   */<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  static class EnvironmentPriorityComparator implements Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    @Override<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        final CoprocessorEnvironment env2) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        return -1;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<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>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        return -1;<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        return 1;<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      }<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      return 0;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  protected void abortServer(final E environment, final Throwable e) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    abortServer(environment.getInstance().getClass().getName(), 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>  protected void abortServer(final String coprocessorName, final Throwable e) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    String message = "The coprocessor " + coprocessorName + " threw " + e.toString();<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    LOG.error(message, e);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    if (abortable != null) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      abortable.abort(message, e);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    } else {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      LOG.warn("No available Abortable, process was not aborted");<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>  /**<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   * This is used by coprocessor hooks which are declared to throw IOException<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * (or its subtypes). For such hooks, we should handle throwable objects<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   * depending on the Throwable's type. Those which are instances of<a name="line.420"></a>
+<span class="sourceLineNo">421</span>   * IOException should be passed on to the client. This is in conformance with<a name="line.421"></a>
+<span class="sourceLineNo">422</span>   * the HBase idiom regarding IOException: that it represents a circumstance<a name="line.422"></a>
+<span class="sourceLineNo">423</span>   * that should be passed along to the client for its own handling. For<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   * example, a coprocessor that implements access controls would throw a<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   * subclass of IOException, such as AccessDeniedException, in its preGet()<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * method to prevent an unauthorized client's performing a Get on a particular<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * table.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * @param env Coprocessor Environment<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * @param e Throwable object thrown by coprocessor.<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * @exception IOException Exception<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   */<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  // Note to devs: Class comments of all observers ({@link MasterObserver}, {@link WALObserver},<a name="line.432"></a>
+<span class="sourceLineNo">433</span>  // etc) mention this nuance of our exception handling so that coprocessor can throw appropriate<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  // exceptions depending on situation. If any changes are made to this logic, make sure to<a name="line.434"></a>
+<span class="sourceLineNo">435</span>  // update all classes' comments.<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  protected void handleCoprocessorThrowable(final E env, final Throwable e) throws IOException {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    if (e instanceof IOException) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      throw (IOException)e;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    // If we got here, e is not an IOException. A loaded coprocessor has a<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    // fatal bug, and the server (master or regionserver) should remove the<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    // faulty coprocessor from its set of active coprocessors. Setting<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    // 'hbase.coprocessor.abortonerror' to true will cause abortServer(),<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    // which may be useful in development and testing environments where<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    // 'failing fast' for error analysis is desired.<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    if (env.getConfiguration().getBoolean(ABORT_ON_ERROR_KEY, DEFAULT_ABORT_ON_ERROR)) {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      // server is configured to abort.<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      abortServer(env, e);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } else {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      // If available, pull a table name out of the environment<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      if(env instanceof RegionCoprocessorEnvironment) {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>        String tableName = ((RegionCoprocessorEnvironment)env).getRegionInfo().getTable().getNameAsString();<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from table '"+ tableName + "'", e);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      } else {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from " +<a name="line.455"></a>
+<span class="sourceLineNo">456</span>                "environment",e);<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>      coprocEnvironments.remove(env);<a name="line.459"></a>
+<span class="sourceLineNo">460</span>      try {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>        shutdown(env);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      } catch (Exception x) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        LOG.error("Uncaught exception when shutting down coprocessor '"<a name="line.463"></a>
+<span class="sourceLineNo">464</span>            + env.toString() + "'", x);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      throw new DoNotRetryIOException("Coprocessor: '" + env.toString() +<a name="line.466"></a>
+<span class="sourceLineNo">467</span>          "' threw: '" + e + "' and has been removed from the active " +<a name="line.467"></a>
+<span class="sourceLineNo">468</span>          "coprocessor set.", e);<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><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * Used to limit legacy handling to once per Coprocessor class per classloader.<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   */<a name="line.474"></a>
+<span class="sourceLineNo">475</span>  private static final Set&lt;Class&lt;? extends Coprocessor&gt;&gt; legacyWarning =<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      new ConcurrentSkipListSet&lt;&gt;(<a name="line.476"></a>
+<span class="sourceLineNo">477</span>          new Comparator&lt;Class&lt;? extends Coprocessor&gt;&gt;() {<a name="line.477"></a>
+<span class="sourceLineNo">478</span>            @Override<a name="line.478"></a>
+<span class="sourceLineNo">479</span>            public int compare(Class&lt;? extends Coprocessor&gt; c1, Class&lt;? extends Coprocessor&gt; c2) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>              if (c1.equals(c2)) {<a name="line.480"></a>
+<span class="sourceLineNo">481</span>                return 0;<a name="line.481"></a>
+<span class="sourceLineNo">482</span>              }<a name="line.482"></a>
+<span class="sourceLineNo">483</span>              return c1.getName().compareTo(c2.getName());<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>  private abstract class ObserverOperation&lt;O&gt; extends ObserverContextImpl&lt;E&gt; {<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    ObserverGetter&lt;C, O&gt; observerGetter;<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      this(observerGetter, null);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter, User user) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      this(observerGetter, user, false);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
+<span class="sourceLineNo">487</span>  /**<a name="line.487"></a>
+<span class="sourceLineNo">488</span>   * Implementations defined function to get an observer of type {@code O} from a coprocessor of<a name="line.488"></a>
+<span class="sourceLineNo">489</span>   * type {@code C}. Concrete implementations of CoprocessorHost define one getter for each<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   * observer they can handle. For e.g. RegionCoprocessorHost will use 3 getters, one for<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   * each of RegionObserver, EndpointObserver and BulkLoadObserver.<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   * These getters are used by {@code ObserverOperation} to get appropriate observer from the<a name="line.492"></a>
+<span class="sourceLineNo">493</span>   * coprocessor.<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   */<a name="line.494"></a>
+<span class="sourceLineNo">495</span>  @FunctionalInterface<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  public interface ObserverGetter&lt;C, O&gt; extends Function&lt;C, Optional&lt;O&gt;&gt; {}<a name="line.496"></a>
 <span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter, boolean bypassable) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      this(observerGetter, null, bypassable);<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>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter, User user, boolean bypassable) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      super(user != null? user: RpcServer.getRequestUser().orElse(null), bypassable);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      this.observerGetter = observerGetter;<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>    abstract void callObserver() throws IOException;<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    protected void postEnvCall() {}<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  // Can't derive ObserverOperation from ObserverOperationWithResult (R = Void) because then all<a name="line.511"></a>
-<span class="sourceLineNo">512</span>  // ObserverCaller implementations will have to have a return statement.<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  // O = observer, E = environment, C = coprocessor, R=result type<a name="line.513"></a>
-<span class="sourceLineNo">514</span>  public abstract class ObserverOperationWithoutResult&lt;O&gt; extends ObserverOperation&lt;O&gt; {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    protected abstract void call(O observer) throws IOException;<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>    public ObserverOperationWithoutResult(ObserverGetter&lt;C, O&gt; observerGetter) {<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      super(observerGetter);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    }<a name="line.519"></a>
-<span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span>    public ObserverOperationWithoutResult(ObserverGetter&lt;C, O&gt; observerGetter, User user) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      super(observerGetter, user);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>    public ObserverOperationWithoutResult(ObserverGetter&lt;C, O&gt; observerGetter, User user,<a name="line.525"></a>
-<span class="sourceLineNo">526</span>        boolean bypassable) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      super(observerGetter, user, bypassable);<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>    /**<a name="line.530"></a>
-<span class="sourceLineNo">531</span>     * In case of coprocessors which have many kinds of observers (for eg, {@link RegionCoprocessor}<a name="line.531"></a>
-<span class="sourceLineNo">532</span>     * has BulkLoadObserver, RegionObserver, etc), some implementations may not need all<a name="line.532"></a>
-<span class="sourceLineNo">533</span>     * observers, in which case they will return null for that observer's getter.<a name="line.533"></a>
-<span class="sourceLineNo">534</span>     * We simply ignore such cases.<a name="line.534"></a>
-<span class="sourceLineNo">535</span>     */<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    @Override<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    void callObserver() throws IOException {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      Optional&lt;O&gt; observer = observerGetter.apply(getEnvironment().getInstance());<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      if (observer.isPresent()) {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        call(observer.get());<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      }<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    }<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>  public abstract class ObserverOperationWithResult&lt;O, R&gt; extends ObserverOperation&lt;O&gt; {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    protected abstract R call(O observer) throws IOException;<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourc

<TRUNCATED>

[07/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 0b77d22..c338bde 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -318,7 +318,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: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index e594006..85208d5 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -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: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index c4cf437..4cd587f 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <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.4-HBase.min.css" />
@@ -341,7 +341,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: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index 00f6a3a..39adeb7 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -309,7 +309,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index 692ec94..0129e39 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase™ Sponsors</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -343,7 +343,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: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index 06b9dea..1192b46 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Supporting Projects</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -530,7 +530,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: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index cfe8d06..4f4df99 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -776,7 +776,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-frame.html b/testdevapidocs/allclasses-frame.html
index 636066a..0486e41 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -1808,6 +1808,7 @@
 <li><a href="org/apache/hadoop/hbase/master/assignment/TestRegionAssignedToMultipleRegionServers.ServerManagerForTest.html" title="class in org.apache.hadoop.hbase.master.assignment" target="classFrame">TestRegionAssignedToMultipleRegionServers.ServerManagerForTest</a></li>
 <li><a href="org/apache/hadoop/hbase/master/assignment/TestRegionBypass.html" title="class in org.apache.hadoop.hbase.master.assignment" target="classFrame">TestRegionBypass</a></li>
 <li><a href="org/apache/hadoop/hbase/master/assignment/TestRegionBypass.StallingAssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment" target="classFrame">TestRegionBypass.StallingAssignProcedure</a></li>
+<li><a href="org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor" target="classFrame">TestRegionCoprocessorHost</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRegionFavoredNodes</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRegionIncrement</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRegionIncrement.CrossRowCellIncrementer</a></li>
@@ -2404,6 +2405,8 @@
 <li><a href="org/apache/hadoop/hbase/types/TestTerminatedWrapper.html" title="class in org.apache.hadoop.hbase.types" target="classFrame">TestTerminatedWrapper</a></li>
 <li><a href="org/apache/hadoop/hbase/util/TestThreadLocalPoolMap.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">TestThreadLocalPoolMap</a></li>
 <li><a href="org/apache/hadoop/hbase/util/TestThreads.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">TestThreads</a></li>
+<li><a href="org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html" title="class in org.apache.hadoop.hbase.thrift2" target="classFrame">TestThrift2HttpServer</a></li>
+<li><a href="org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2" target="classFrame">TestThrift2ServerCmdLine</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2" target="classFrame">TestThriftHBaseServiceHandler</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html" title="class in org.apache.hadoop.hbase.thrift2" target="classFrame">TestThriftHBaseServiceHandler.DelayingRegionObserver</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandlerWithLabels.html" title="class in org.apache.hadoop.hbase.thrift2" target="classFrame">TestThriftHBaseServiceHandlerWithLabels</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index 10bc97b..ff32af4 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -1808,6 +1808,7 @@
 <li><a href="org/apache/hadoop/hbase/master/assignment/TestRegionAssignedToMultipleRegionServers.ServerManagerForTest.html" title="class in org.apache.hadoop.hbase.master.assignment">TestRegionAssignedToMultipleRegionServers.ServerManagerForTest</a></li>
 <li><a href="org/apache/hadoop/hbase/master/assignment/TestRegionBypass.html" title="class in org.apache.hadoop.hbase.master.assignment">TestRegionBypass</a></li>
 <li><a href="org/apache/hadoop/hbase/master/assignment/TestRegionBypass.StallingAssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">TestRegionBypass.StallingAssignProcedure</a></li>
+<li><a href="org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionCoprocessorHost</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionFavoredNodes</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.CrossRowCellIncrementer</a></li>
@@ -2404,6 +2405,8 @@
 <li><a href="org/apache/hadoop/hbase/types/TestTerminatedWrapper.html" title="class in org.apache.hadoop.hbase.types">TestTerminatedWrapper</a></li>
 <li><a href="org/apache/hadoop/hbase/util/TestThreadLocalPoolMap.html" title="class in org.apache.hadoop.hbase.util">TestThreadLocalPoolMap</a></li>
 <li><a href="org/apache/hadoop/hbase/util/TestThreads.html" title="class in org.apache.hadoop.hbase.util">TestThreads</a></li>
+<li><a href="org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html" title="class in org.apache.hadoop.hbase.thrift2">TestThrift2HttpServer</a></li>
+<li><a href="org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2">TestThrift2ServerCmdLine</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">TestThriftHBaseServiceHandler</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html" title="class in org.apache.hadoop.hbase.thrift2">TestThriftHBaseServiceHandler.DelayingRegionObserver</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandlerWithLabels.html" title="class in org.apache.hadoop.hbase.thrift2">TestThriftHBaseServiceHandlerWithLabels</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/constant-values.html b/testdevapidocs/constant-values.html
index 89a97c4..b5c8458 100644
--- a/testdevapidocs/constant-values.html
+++ b/testdevapidocs/constant-values.html
@@ -14623,6 +14623,44 @@
 <ul class="blockList">
 <li class="blockList">
 <table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html" title="class in org.apache.hadoop.hbase.thrift2">TestThrift2HttpServer</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift2.TestThrift2HttpServer.TABLENAME">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift2/TestThrift2HttpServer.html#TABLENAME">TABLENAME</a></code></td>
+<td class="colLast"><code>"TestThrift2HttpServerTable"</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2">TestThrift2ServerCmdLine</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.thrift2.TestThrift2ServerCmdLine.TABLENAME">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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/thrift2/TestThrift2ServerCmdLine.html#TABLENAME">TABLENAME</a></code></td>
+<td class="colLast"><code>"TestThrift2ServerCmdLineTable"</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
 <caption><span>org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandlerWithLabels.html" title="class in org.apache.hadoop.hbase.thrift2">TestThriftHBaseServiceHandlerWithLabels</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index b5262e7..e4d7513 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -4805,6 +4805,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestReadOnlyConfiguration.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestReadOnlyConfiguration.html" title="class in org.apache.hadoop.hbase.coprocessor">TestReadOnlyConfiguration</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionCoprocessorHost</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverBypass</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestRegionObserverForAddingMutationsFromCoprocessors.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestRegionObserverForAddingMutationsFromCoprocessors.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverForAddingMutationsFromCoprocessors</a></dt>
@@ -6655,6 +6657,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftSpnegoHttpServer</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html" title="class in org.apache.hadoop.hbase.thrift2">TestThrift2HttpServer</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2">TestThrift2ServerCmdLine</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">TestThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandlerWithLabels.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandlerWithLabels.html" title="class in org.apache.hadoop.hbase.thrift2">TestThriftHBaseServiceHandlerWithLabels</a></dt>
@@ -7434,7 +7440,7 @@
 <dd>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
 &nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/TestThriftServer.html#closeScanner-int-org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler-">closeScanner(int, ThriftServerRunner.HBaseHandler)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TestThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftServer</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/TestThriftServer.html#closeScanner-int-org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler-">closeScanner(int, ThriftHBaseServiceHandler)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TestThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftServer</a></dt>
 <dd>
 <div class="block">Asserts that the passed scanner is exhausted, and then closes
  the scanner.</div>
@@ -11176,6 +11182,14 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mob/compactions/TestPartitionedMobCompactor.html#createThreadPool--">createThreadPool()</a></span> - Static method in class org.apache.hadoop.hbase.mob.compactions.<a href="org/apache/hadoop/hbase/mob/compactions/TestPartitionedMobCompactor.html" title="class in org.apache.hadoop.hbase.mob.compactions">TestPartitionedMobCompactor</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#createThriftServer--">createThriftServer()</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftHttpServer</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#createThriftServer--">createThriftServer()</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftServerCmdLine</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html#createThriftServer--">createThriftServer()</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html" title="class in org.apache.hadoop.hbase.thrift2">TestThrift2HttpServer</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html#createThriftServer--">createThriftServer()</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2">TestThrift2ServerCmdLine</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#createTimestampRange-long-long-long-">createTimestampRange(long, long, long)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html" title="class in org.apache.hadoop.hbase.regionserver">TestSeekOptimizations</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/TestHBaseSaslRpcClient.html#createTokenMock--">createTokenMock()</a></span> - Method in class org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/TestHBaseSaslRpcClient.html" title="class in org.apache.hadoop.hbase.security">TestHBaseSaslRpcClient</a></dt>
@@ -12929,7 +12943,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/TestThriftServer.html#doTestIncrements--">doTestIncrements()</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TestThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftServer</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/TestThriftServer.html#doTestIncrements-org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler-">doTestIncrements(ThriftServerRunner.HBaseHandler)</a></span> - Static method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TestThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftServer</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/TestThriftServer.html#doTestIncrements-org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler-">doTestIncrements(ThriftHBaseServiceHandler)</a></span> - Static method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TestThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftServer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.html#doTestLogReplay--">doTestLogReplay()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.html" title="class in org.apache.hadoop.hbase.regionserver">TestPerColumnFamilyFlush</a></dt>
 <dd>&nbsp;</dd>
@@ -43220,6 +43234,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestTableName.html#tableName">tableName</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestTableName.html" title="class in org.apache.hadoop.hbase">TestTableName</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html#TABLENAME">TABLENAME</a></span> - Static variable in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html" title="class in org.apache.hadoop.hbase.thrift2">TestThrift2HttpServer</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html#TABLENAME">TABLENAME</a></span> - Static variable in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2">TestThrift2ServerCmdLine</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/trace/IntegrationTestSendTraceRequests.html#tableName">tableName</a></span> - Variable in class org.apache.hadoop.hbase.trace.<a href="org/apache/hadoop/hbase/trace/IntegrationTestSendTraceRequests.html" title="class in org.apache.hadoop.hbase.trace">IntegrationTestSendTraceRequests</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/LoadTestTool.html#tableName">tableName</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/LoadTestTool.html" title="class in org.apache.hadoop.hbase.util">LoadTestTool</a></dt>
@@ -43372,6 +43390,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#talkToThriftServer-java.lang.String-int-">talkToThriftServer(String, int)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftSpnegoHttpServer</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html#talkToThriftServer-java.lang.String-int-">talkToThriftServer(String, int)</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html" title="class in org.apache.hadoop.hbase.thrift2">TestThrift2HttpServer</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html#talkToThriftServer--">talkToThriftServer()</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2">TestThrift2ServerCmdLine</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/HBaseHomePath.html#TARGET_CLASSES">TARGET_CLASSES</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/HBaseHomePath.html" title="class in org.apache.hadoop.hbase.util">HBaseHomePath</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestCompoundBloomFilter.html#TARGET_ERROR_RATES">TARGET_ERROR_RATES</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestCompoundBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompoundBloomFilter</a></dt>
@@ -55472,6 +55494,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestDynamicClassLoader.html#testLoadClassFromLocalPathWithDynamicDirOff--">testLoadClassFromLocalPathWithDynamicDirOff()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestDynamicClassLoader.html" title="class in org.apache.hadoop.hbase.util">TestDynamicClassLoader</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html#testLoadDuplicateCoprocessor--">testLoadDuplicateCoprocessor()</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionCoprocessorHost</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestLoadProcedureError.html#testLoadError--">testLoadError()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestLoadProcedureError.html" title="class in org.apache.hadoop.hbase.master">TestLoadProcedureError</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestStripeStoreFileManager.html#testLoadFilesAfterSplit--">testLoadFilesAfterSplit()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStripeStoreFileManager.html" title="class in org.apache.hadoop.hbase.regionserver">TestStripeStoreFileManager</a></dt>
@@ -60219,6 +60243,10 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestCoprocessorShortCircuitRPC.TestRegionCoprocessor.html#TestRegionCoprocessor--">TestRegionCoprocessor()</a></span> - Constructor for class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestCoprocessorShortCircuitRPC.TestRegionCoprocessor.html" title="class in org.apache.hadoop.hbase.coprocessor">TestCoprocessorShortCircuitRPC.TestRegionCoprocessor</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">TestRegionCoprocessorHost</span></a> - Class in <a href="org/apache/hadoop/hbase/coprocessor/package-summary.html">org.apache.hadoop.hbase.coprocessor</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html#TestRegionCoprocessorHost--">TestRegionCoprocessorHost()</a></span> - Constructor for class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionCoprocessorHost</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestCoprocessorConfiguration.html#testRegionCoprocessorHostAllDisabled--">testRegionCoprocessorHostAllDisabled()</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestCoprocessorConfiguration.html" title="class in org.apache.hadoop.hbase.coprocessor">TestCoprocessorConfiguration</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestCoprocessorConfiguration.html#testRegionCoprocessorHostDefaults--">testRegionCoprocessorHostDefaults()</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestCoprocessorConfiguration.html" title="class in org.apache.hadoop.hbase.coprocessor">TestCoprocessorConfiguration</a></dt>
@@ -66039,9 +66067,17 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#testThreeStoreFiles--">testThreeStoreFiles()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanWithBloomError</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">TestThrift2HttpServer</span></a> - Class in <a href="org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html#TestThrift2HttpServer--">TestThrift2HttpServer()</a></span> - Constructor for class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html" title="class in org.apache.hadoop.hbase.thrift2">TestThrift2HttpServer</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">TestThrift2ServerCmdLine</span></a> - Class in <a href="org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html#TestThrift2ServerCmdLine-org.apache.hadoop.hbase.thrift.ImplType-boolean-boolean-boolean-">TestThrift2ServerCmdLine(ImplType, boolean, boolean, boolean)</a></span> - Constructor for class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2">TestThrift2ServerCmdLine</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">TestThriftHBaseServiceHandler</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">Unit testing for ThriftServer.HBaseHandler, a part of the org.apache.hadoop.hbase.thrift2
+<div class="block">Unit testing for ThriftServer.HBaseServiceHandler, a part of the org.apache.hadoop.hbase.thrift2
  package.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#TestThriftHBaseServiceHandler--">TestThriftHBaseServiceHandler()</a></span> - Constructor for class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">TestThriftHBaseServiceHandler</a></dt>
@@ -66065,7 +66101,7 @@
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/thrift/TestThriftServer.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">TestThriftServer</span></a> - Class in <a href="org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a></dt>
 <dd>
-<div class="block">Unit testing for ThriftServerRunner.HBaseHandler, a part of the
+<div class="block">Unit testing for ThriftServerRunner.HBaseServiceHandler, a part of the
  org.apache.hadoop.hbase.thrift package.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/TestThriftServer.html#TestThriftServer--">TestThriftServer()</a></span> - Constructor for class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TestThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftServer</a></dt>
@@ -66077,7 +66113,7 @@
 <div class="block">Start the HBase Thrift server on a random port through the command-line
  interface and talk to it from client side.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#TestThriftServerCmdLine-org.apache.hadoop.hbase.thrift.ThriftServerRunner.ImplType-boolean-boolean-boolean-">TestThriftServerCmdLine(ThriftServerRunner.ImplType, boolean, boolean, boolean)</a></span> - Constructor for class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftServerCmdLine</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#TestThriftServerCmdLine-org.apache.hadoop.hbase.thrift.ImplType-boolean-boolean-boolean-">TestThriftServerCmdLine(ImplType, boolean, boolean, boolean)</a></span> - Constructor for class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftServerCmdLine</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">TestThriftSpnegoHttpServer</span></a> - Class in <a href="org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a></dt>
 <dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index 7e63870..b726ce9 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -146,8 +146,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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/TestBackupDeleteWithFailures.Failure.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestBackupDeleteWithFailures.Failure</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.FailurePhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestIncrementalBackupMergeWithFailures.FailurePhase</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestBackupDeleteWithFailures.Failure.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestBackupDeleteWithFailures.Failure</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
index f9824cf..6cb2239 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
@@ -2023,62 +2023,66 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestPostIncrementAndAppendBeforeWAL.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestPostIncrementAndAppendBeforeWAL.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionServerCoprocessorExceptionWithRemove.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionServerCoprocessorExceptionWithRemove.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestPostIncrementAndAppendBeforeWAL.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestPostIncrementAndAppendBeforeWAL.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCoprocessorShortCircuitRPC.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestCoprocessorShortCircuitRPC.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionServerCoprocessorExceptionWithRemove.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionServerCoprocessorExceptionWithRemove.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCoprocessorInterface.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCoprocessorShortCircuitRPC.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestCoprocessorShortCircuitRPC.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestIncrementAndAppendWithNullResult.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestIncrementAndAppendWithNullResult.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCoprocessorInterface.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestImportExport.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestImportExport.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestIncrementAndAppendWithNullResult.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestIncrementAndAppendWithNullResult.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestClassLoading.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestClassLoading.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestImportExport.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestImportExport.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCoprocessorTableEndpoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestCoprocessorTableEndpoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestClassLoading.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestClassLoading.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestBatchCoprocessorEndpoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestBatchCoprocessorEndpoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCoprocessorTableEndpoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestCoprocessorTableEndpoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRowProcessorEndpoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestBatchCoprocessorEndpoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestBatchCoprocessorEndpoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncCoprocessorEndpoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestAsyncCoprocessorEndpoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRowProcessorEndpoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCoprocessorEndpoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestCoprocessorEndpoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncCoprocessorEndpoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestAsyncCoprocessorEndpoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionServerCoprocessorEndpoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionServerCoprocessorEndpoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCoprocessorEndpoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestCoprocessorEndpoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSecureExport.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionServerCoprocessorEndpoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionServerCoprocessorEndpoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestSecureExport.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestCoprocessorServiceBackwardCompatibility.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestCoprocessorServiceBackwardCompatibility.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 </tbody>
@@ -6447,6 +6451,14 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestThrift2HttpServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestThrift2ServerCmdLine.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestThriftHBaseServiceHandler.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 </tbody>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
index 66c43fe..b0c05c9 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
@@ -4523,11 +4523,11 @@
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
+<td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestThriftHttpServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
+<td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestThriftServerCmdLine.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorHost.CoprocessorHostForTest.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorHost.CoprocessorHostForTest.html b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorHost.CoprocessorHostForTest.html
index c6e31f0..7d394a0 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorHost.CoprocessorHostForTest.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorHost.CoprocessorHostForTest.html
@@ -163,7 +163,7 @@ extends org.apache.hadoop.hbase.coprocessor.CoprocessorHost&lt;E,org.apache.hado
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.coprocessor.CoprocessorHost</h3>
-<code>ABORT_ON_ERROR_KEY, abortable, conf, coprocEnvironments, COPROCESSORS_ENABLED_CONF_KEY, DEFAULT_ABORT_ON_ERROR, DEFAULT_COPROCESSORS_ENABLED, DEFAULT_USER_COPROCESSORS_ENABLED, loadSequence, MASTER_COPROCESSOR_CONF_KEY, pathPrefix, REGION_COPROCESSOR_CONF_KEY, REGIONSERVER_COPROCESSOR_CONF_KEY, USER_COPROCESSORS_ENABLED_CONF_KEY, USER_REGION_COPROCESSOR_CONF_KEY, WAL_COPROCESSOR_CONF_KEY</code></li>
+<code>ABORT_ON_ERROR_KEY, abortable, conf, coprocEnvironments, COPROCESSORS_ENABLED_CONF_KEY, DEFAULT_ABORT_ON_ERROR, DEFAULT_COPROCESSORS_ENABLED, DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR, DEFAULT_USER_COPROCESSORS_ENABLED, loadSequence, MASTER_COPROCESSOR_CONF_KEY, pathPrefix, REGION_COPROCESSOR_CONF_KEY, REGIONSERVER_COPROCESSOR_CONF_KEY, SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR, USER_COPROCESSORS_ENABLED_CONF_KEY, USER_REGION_COPROCESSOR_CONF_KEY, WAL_COPROCESSOR_CONF_KEY</code></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestReadOnlyConfiguration.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestReadOnlyConfiguration.html b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestReadOnlyConfiguration.html
index 9361f6d..0502674 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestReadOnlyConfiguration.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestReadOnlyConfiguration.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestPostIncrementAndAppendBeforeWAL.ChangeCellWithNotExistColumnFamilyObserver.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/coprocessor/TestReadOnlyConfiguration.html" target="_top">Frames</a></li>
@@ -276,7 +276,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestPostIncrementAndAppendBeforeWAL.ChangeCellWithNotExistColumnFamilyObserver.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/coprocessor/TestReadOnlyConfiguration.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html
new file mode 100644
index 0000000..a727f27
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html
@@ -0,0 +1,313 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>TestRegionCoprocessorHost (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="TestRegionCoprocessorHost (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestRegionCoprocessorHost.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestReadOnlyConfiguration.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html" target="_top">Frames</a></li>
+<li><a href="TestRegionCoprocessorHost.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.coprocessor</div>
+<h2 title="Class TestRegionCoprocessorHost" class="title">Class TestRegionCoprocessorHost</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.coprocessor.TestRegionCoprocessorHost</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html#line.45">TestRegionCoprocessorHost</a>
+extends <a href="https://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>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<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>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html#TestRegionCoprocessorHost--">TestRegionCoprocessorHost</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html#testLoadDuplicateCoprocessor--">testLoadDuplicateCoprocessor</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html#line.48">CLASS_RULE</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="TestRegionCoprocessorHost--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestRegionCoprocessorHost</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html#line.45">TestRegionCoprocessorHost</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="testLoadDuplicateCoprocessor--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testLoadDuplicateCoprocessor</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html#line.52">testLoadDuplicateCoprocessor</a>()
+                                  throws <a href="https://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>
+<dd><code><a href="https://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>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestRegionCoprocessorHost.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestReadOnlyConfiguration.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html" target="_top">Frames</a></li>
+<li><a href="TestRegionCoprocessorHost.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.html b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.html
index 583874a..68eb239 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestReadOnlyConfiguration.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.TestCoprocessor.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -514,7 +514,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestReadOnlyConfiguration.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.TestCoprocessor.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/coprocessor/class-use/TestRegionCoprocessorHost.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/class-use/TestRegionCoprocessorHost.html b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/class-use/TestRegionCoprocessorHost.html
new file mode 100644
index 0000000..51085e8
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/class-use/TestRegionCoprocessorHost.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.coprocessor.TestRegionCoprocessorHost (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.coprocessor.TestRegionCoprocessorHost (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/coprocessor/class-use/TestRegionCoprocessorHost.html" target="_top">Frames</a></li>
+<li><a href="TestRegionCoprocessorHost.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.coprocessor.TestRegionCoprocessorHost" class="title">Uses of Class<br>org.apache.hadoop.hbase.coprocessor.TestRegionCoprocessorHost</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.coprocessor.TestRegionCoprocessorHost</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/coprocessor/class-use/TestRegionCoprocessorHost.html" target="_top">Frames</a></li>
+<li><a href="TestRegionCoprocessorHost.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/testdevapidocs/org/apache/hadoop/hbase/coprocessor/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/package-frame.html
index 8f7a434..8d1768f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/package-frame.html
@@ -91,6 +91,7 @@
 <li><a href="TestPostIncrementAndAppendBeforeWAL.ChangeCellWithDifferntColumnFamilyObserver.html" title="class in org.apache.hadoop.hbase.coprocessor" target="classFrame">TestPostIncrementAndAppendBeforeWAL.ChangeCellWithDifferntColumnFamilyObserver</a></li>
 <li><a href="TestPostIncrementAndAppendBeforeWAL.ChangeCellWithNotExistColumnFamilyObserver.html" title="class in org.apache.hadoop.hbase.coprocessor" target="classFrame">TestPostIncrementAndAppendBeforeWAL.ChangeCellWithNotExistColumnFamilyObserver</a></li>
 <li><a href="TestReadOnlyConfiguration.html" title="class in org.apache.hadoop.hbase.coprocessor" target="classFrame">TestReadOnlyConfiguration</a></li>
+<li><a href="TestRegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor" target="classFrame">TestRegionCoprocessorHost</a></li>
 <li><a href="TestRegionObserverBypass.html" title="class in org.apache.hadoop.hbase.coprocessor" target="classFrame">TestRegionObserverBypass</a></li>
 <li><a href="TestRegionObserverBypass.TestCoprocessor.html" title="class in org.apache.hadoop.hbase.coprocessor" target="classFrame">TestRegionObserverBypass.TestCoprocessor</a></li>
 <li><a href="TestRegionObserverBypass.TestCoprocessor2.html" title="class in org.apache.hadoop.hbase.coprocessor" target="classFrame">TestRegionObserverBypass.TestCoprocessor2</a></li>


[45/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html
index 229d724..48fb206 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html
@@ -222,38 +222,46 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_USER_COPROCESSORS_ENABLED">DEFAULT_USER_COPROCESSORS_ENABLED</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR">DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_USER_COPROCESSORS_ENABLED">DEFAULT_USER_COPROCESSORS_ENABLED</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="https://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="https://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 <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>&gt;&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#legacyWarning">legacyWarning</a></span></code>
 <div class="block">Used to limit legacy handling to once per Coprocessor class per classloader.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="https://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></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#loadSequence">loadSequence</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static org.slf4j.Logger</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#LOG">LOG</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://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/coprocessor/CoprocessorHost.html#MASTER_COPROCESSOR_CONF_KEY">MASTER_COPROCESSOR_CONF_KEY</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected <a href="https://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/coprocessor/CoprocessorHost.html#pathPrefix">pathPrefix</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://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/coprocessor/CoprocessorHost.html#REGION_COPROCESSOR_CONF_KEY">REGION_COPROCESSOR_CONF_KEY</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="https://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/coprocessor/CoprocessorHost.html#REGIONSERVER_COPROCESSOR_CONF_KEY">REGIONSERVER_COPROCESSOR_CONF_KEY</a></span></code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/coprocessor/CoprocessorHost.html#SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR">SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR</a></span></code>&nbsp;</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="https://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/coprocessor/CoprocessorHost.html#USER_COPROCESSORS_ENABLED_CONF_KEY">USER_COPROCESSORS_ENABLED_CONF_KEY</a></span></code>&nbsp;</td>
@@ -596,13 +604,39 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR</h4>
+<pre>public static final&nbsp;<a href="https://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/coprocessor/CoprocessorHost.html#line.77">SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.coprocessor.CoprocessorHost.SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR</h4>
+<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.79">DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.coprocessor.CoprocessorHost.DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
 <a name="LOG">
 <!--   -->
 </a>
 <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/coprocessor/CoprocessorHost.html#line.78">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.81">LOG</a></pre>
 </li>
 </ul>
 <a name="abortable">
@@ -611,7 +645,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>abortable</h4>
-<pre>protected&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/coprocessor/CoprocessorHost.html#line.79">abortable</a></pre>
+<pre>protected&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/coprocessor/CoprocessorHost.html#line.82">abortable</a></pre>
 </li>
 </ul>
 <a name="coprocEnvironments">
@@ -620,7 +654,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>coprocEnvironments</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/SortedList.html" title="class in org.apache.hadoop.hbase.util">SortedList</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a> extends <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>&gt;&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.81">coprocEnvironments</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/SortedList.html" title="class in org.apache.hadoop.hbase.util">SortedList</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a> extends <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>&gt;&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.84">coprocEnvironments</a></pre>
 <div class="block">Ordered set of loaded coprocessors with lock</div>
 </li>
 </ul>
@@ -630,7 +664,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <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/coprocessor/CoprocessorHost.html#line.83">conf</a></pre>
+<pre>protected&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.86">conf</a></pre>
 </li>
 </ul>
 <a name="pathPrefix">
@@ -639,7 +673,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>pathPrefix</h4>
-<pre>protected&nbsp;<a href="https://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/coprocessor/CoprocessorHost.html#line.85">pathPrefix</a></pre>
+<pre>protected&nbsp;<a href="https://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/coprocessor/CoprocessorHost.html#line.88">pathPrefix</a></pre>
 </li>
 </ul>
 <a name="loadSequence">
@@ -648,7 +682,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>loadSequence</h4>
-<pre>protected&nbsp;<a href="https://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/coprocessor/CoprocessorHost.html#line.86">loadSequence</a></pre>
+<pre>protected&nbsp;<a href="https://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/coprocessor/CoprocessorHost.html#line.89">loadSequence</a></pre>
 </li>
 </ul>
 <a name="coprocessorNames">
@@ -657,7 +691,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>coprocessorNames</h4>
-<pre>private static&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.101">coprocessorNames</a></pre>
+<pre>private static&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.104">coprocessorNames</a></pre>
 <div class="block">Not to be confused with the per-object _coprocessors_ (above),
  coprocessorNames is static and stores the set of all coprocessors ever
  loaded by any thread in this JVM. It is strictly additive: coprocessors are
@@ -672,7 +706,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>legacyWarning</h4>
-<pre>private static final&nbsp;<a href="https://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="https://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 <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>&gt;&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.464">legacyWarning</a></pre>
+<pre>private static final&nbsp;<a href="https://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="https://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 <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>&gt;&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.475">legacyWarning</a></pre>
 <div class="block">Used to limit legacy handling to once per Coprocessor class per classloader.</div>
 </li>
 </ul>
@@ -690,7 +724,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CoprocessorHost</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.88">CoprocessorHost</a>(<a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.91">CoprocessorHost</a>(<a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable)</pre>
 </li>
 </ul>
 </li>
@@ -707,7 +741,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getLoadedCoprocessors</h4>
-<pre>public static&nbsp;<a href="https://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="https://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/coprocessor/CoprocessorHost.html#line.104">getLoadedCoprocessors</a>()</pre>
+<pre>public static&nbsp;<a href="https://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="https://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/coprocessor/CoprocessorHost.html#line.107">getLoadedCoprocessors</a>()</pre>
 </li>
 </ul>
 <a name="getCoprocessors--">
@@ -716,7 +750,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getCoprocessors</h4>
-<pre>public&nbsp;<a href="https://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="https://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/coprocessor/CoprocessorHost.html#line.117">getCoprocessors</a>()</pre>
+<pre>public&nbsp;<a href="https://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="https://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/coprocessor/CoprocessorHost.html#line.120">getCoprocessors</a>()</pre>
 <div class="block">Used to create a parameter to the HServerLoad constructor so that
  HServerLoad can provide information about the coprocessors loaded by this
  regionserver.
@@ -730,7 +764,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>loadSystemCoprocessors</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.129">loadSystemCoprocessors</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.132">loadSystemCoprocessors</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;confKey)</pre>
 <div class="block">Load system coprocessors once only. Read the class names from configuration.
  Called by constructor.</div>
@@ -742,7 +776,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>load</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.178">load</a>(org.apache.hadoop.fs.Path&nbsp;path,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.181">load</a>(org.apache.hadoop.fs.Path&nbsp;path,
               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;className,
               int&nbsp;priority,
               org.apache.hadoop.conf.Configuration&nbsp;conf)
@@ -765,7 +799,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>load</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.197">load</a>(org.apache.hadoop.fs.Path&nbsp;path,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.200">load</a>(org.apache.hadoop.fs.Path&nbsp;path,
               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;className,
               int&nbsp;priority,
               org.apache.hadoop.conf.Configuration&nbsp;conf,
@@ -790,7 +824,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>load</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.235">load</a>(<a href="https://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 <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>&gt;&nbsp;implClass,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.246">load</a>(<a href="https://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 <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>&gt;&nbsp;implClass,
                  int&nbsp;priority,
                  org.apache.hadoop.conf.Configuration&nbsp;conf)
           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -806,7 +840,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndLoadInstance</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.247">checkAndLoadInstance</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;implClass,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.258">checkAndLoadInstance</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;implClass,
                               int&nbsp;priority,
                               org.apache.hadoop.conf.Configuration&nbsp;conf)
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -828,7 +862,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createEnvironment</h4>
-<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.273">createEnvironment</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>&nbsp;instance,
+<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.284">createEnvironment</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>&nbsp;instance,
                                     int&nbsp;priority,
                                     int&nbsp;sequence,
                                     org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
@@ -841,7 +875,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndGetInstance</h4>
-<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.282">checkAndGetInstance</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;implClass)
+<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.293">checkAndGetInstance</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;implClass)
                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InstantiationException.html?is-external=true" title="class or interface in java.lang">InstantiationException</a>,
                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalAccessException.html?is-external=true" title="class or interface in java.lang">IllegalAccessException</a></pre>
 <div class="block">Called when a new Coprocessor class needs to be loaded. Checks if type of the given class
@@ -864,7 +898,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.285">shutdown</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;e)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.296">shutdown</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;e)</pre>
 </li>
 </ul>
 <a name="findCoprocessor-java.lang.String-">
@@ -873,7 +907,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>findCoprocessor</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.296">findCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;className)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.307">findCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;className)</pre>
 <div class="block">Find coprocessors by full class name or simple name.</div>
 </li>
 </ul>
@@ -883,7 +917,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>findCoprocessor</h4>
-<pre>public&nbsp;&lt;T extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>&gt;&nbsp;T&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.307">findCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;cls)</pre>
+<pre>public&nbsp;&lt;T extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>&gt;&nbsp;T&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.318">findCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;cls)</pre>
 </li>
 </ul>
 <a name="findCoprocessors-java.lang.Class-">
@@ -892,7 +926,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>findCoprocessors</h4>
-<pre>public&nbsp;&lt;T extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>&gt;&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;T&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.321">findCoprocessors</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;cls)</pre>
+<pre>public&nbsp;&lt;T extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>&gt;&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;T&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.332">findCoprocessors</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;cls)</pre>
 <div class="block">Find list of coprocessors that extend/implement the given class/interface</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -908,7 +942,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>findCoprocessorEnvironment</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.342">findCoprocessorEnvironment</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;className)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.353">findCoprocessorEnvironment</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;className)</pre>
 <div class="block">Find a coprocessor environment by class name</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -924,7 +958,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getExternalClassLoaders</h4>
-<pre><a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true" title="class or interface in java.lang">ClassLoader</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.357">getExternalClassLoaders</a>()</pre>
+<pre><a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true" title="class or interface in java.lang">ClassLoader</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.368">getExternalClassLoaders</a>()</pre>
 <div class="block">Retrieves the set of classloaders used to instantiate Coprocessor classes defined in external
  jar files.</div>
 <dl>
@@ -941,7 +975,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>abortServer</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.392">abortServer</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;environment,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.403">abortServer</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;environment,
                            <a href="https://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>
 </li>
 </ul>
@@ -951,7 +985,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>abortServer</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.396">abortServer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;coprocessorName,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.407">abortServer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;coprocessorName,
                            <a href="https://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>
 </li>
 </ul>
@@ -963,7 +997,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>handleCoprocessorThrowable</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.425">handleCoprocessorThrowable</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;env,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.436">handleCoprocessorThrowable</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;env,
                                           <a href="https://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)
                                    throws <a href="https://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">This is used by coprocessor hooks which are declared to throw IOException
@@ -991,7 +1025,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>execOperationWithResult</h4>
-<pre>protected&nbsp;&lt;O,R&gt;&nbsp;R&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.590">execOperationWithResult</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverOperationWithResult</a>&lt;O,R&gt;&nbsp;observerOperation)
+<pre>protected&nbsp;&lt;O,R&gt;&nbsp;R&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.601">execOperationWithResult</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverOperationWithResult</a>&lt;O,R&gt;&nbsp;observerOperation)
                                    throws <a href="https://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">Do not call with an observerOperation that is null! Have the caller check.</div>
 <dl>
@@ -1006,7 +1040,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>execOperation</h4>
-<pre>protected&nbsp;&lt;O&gt;&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.601">execOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverOperation</a>&lt;O&gt;&nbsp;observerOperation)
+<pre>protected&nbsp;&lt;O&gt;&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.612">execOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverOperation</a>&lt;O&gt;&nbsp;observerOperation)
                              throws <a href="https://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="returnLabel">Returns:</span></dt>
@@ -1023,7 +1057,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>execShutdown</h4>
-<pre>protected&nbsp;&lt;O&gt;&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.644">execShutdown</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverOperation</a>&lt;O&gt;&nbsp;observerOperation)
+<pre>protected&nbsp;&lt;O&gt;&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.655">execShutdown</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverOperation</a>&lt;O&gt;&nbsp;observerOperation)
                             throws <a href="https://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">Coprocessor classes can be configured in any order, based on that priority is set and
  chained in a sorted order. Should be used preStop*() hooks i.e. when master/regionserver is

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
index dc618a4..c51f7b2 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
@@ -201,8 +201,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/MetaTableMetrics.MetaTableOps.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">MetaTableMetrics.MetaTableOps</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.MutationType.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">RegionObserver.MutationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/MetaTableMetrics.MetaTableOps.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">MetaTableMetrics.MetaTableOps</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
index 531254c..127caa7 100644
--- a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
@@ -104,8 +104,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/ExecutorType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">ExecutorType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/EventType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">EventType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/ExecutorType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">ExecutorType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 40931dd..262b5cc 100644
--- a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
@@ -183,14 +183,14 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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/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/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/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/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/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.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/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/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/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/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/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/849d84a8/devapidocs/org/apache/hadoop/hbase/http/class-use/InfoServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/http/class-use/InfoServer.html b/devapidocs/org/apache/hadoop/hbase/http/class-use/InfoServer.html
index 775b408..45e4f78 100644
--- a/devapidocs/org/apache/hadoop/hbase/http/class-use/InfoServer.html
+++ b/devapidocs/org/apache/hadoop/hbase/http/class-use/InfoServer.html
@@ -162,7 +162,7 @@ service.</div>
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http">InfoServer</a></code></td>
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http">InfoServer</a></code></td>
 <td class="colLast"><span class="typeNameLabel">ThriftServer.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#infoServer">infoServer</a></span></code>&nbsp;</td>
 </tr>
 </tbody>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 59e371b..0d7ea16 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -275,11 +275,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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/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/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/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/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.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/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/BlockCacheFactory.ExternalBlockCaches.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockCacheFactory.ExternalBlockCaches</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 5ed9b3c..243c9e4 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="https://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="https://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="https://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/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/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/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/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/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/849d84a8/devapidocs/org/apache/hadoop/hbase/master/MasterCoprocessorHost.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/MasterCoprocessorHost.html b/devapidocs/org/apache/hadoop/hbase/master/MasterCoprocessorHost.html
index b5bbaac..18a233a 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/MasterCoprocessorHost.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/MasterCoprocessorHost.html
@@ -195,7 +195,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#ABORT_ON_ERROR_KEY">ABORT_ON_ERROR_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#abortable">abortable</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#conf">conf</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#coprocEnvironments">coprocEnvironments</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#COPROCESSORS_ENABLED_CONF_KEY">COPROCESSORS_ENABLED_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_ABORT_ON_ERROR">DEFAULT_ABORT_ON_ERROR</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_COPROCESSORS_ENABLED">DEFAULT_COPROCESSORS_ENABLED</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_USER_COPROCESSORS_ENABL
 ED">DEFAULT_USER_COPROCESSORS_ENABLED</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#loadSequence">loadSequence</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#MASTER_COPROCESSOR_CONF_KEY">MASTER_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#pathPrefix">pathPrefix</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#REGION_COPROCESSOR_CONF_KEY">REGION_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#REGIONSERVER_COPROCESSOR_CONF_KEY">REGIONSERVER_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#USER_COPROCESSORS_ENABLED_CONF_KEY">USER_COPROCESSORS_ENABLED_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#USER_REGION_COPROCESSOR_CONF_KEY">USER_REGION_COPROCE
 SSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#WAL_COPROCESSOR_CONF_KEY">WAL_COPROCESSOR_CONF_KEY</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#ABORT_ON_ERROR_KEY">ABORT_ON_ERROR_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#abortable">abortable</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#conf">conf</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#coprocEnvironments">coprocEnvironments</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#COPROCESSORS_ENABLED_CONF_KEY">COPROCESSORS_ENABLED_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_ABORT_ON_ERROR">DEFAULT_ABORT_ON_ERROR</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_COPROCESSORS_ENABLED">DEFAULT_COPROCESSORS_ENABLED</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_SKIP_LOAD_DUPLICATE_TAB
 LE_COPROCESSOR">DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_USER_COPROCESSORS_ENABLED">DEFAULT_USER_COPROCESSORS_ENABLED</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#loadSequence">loadSequence</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#MASTER_COPROCESSOR_CONF_KEY">MASTER_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#pathPrefix">pathPrefix</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#REGION_COPROCESSOR_CONF_KEY">REGION_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#REGIONSERVER_COPROCESSOR_CONF_KEY">REGIONSERVER_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#SKIP_LOAD_DUPLICATE_TABLE_COPRO
 CESSOR">SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#USER_COPROCESSORS_ENABLED_CONF_KEY">USER_COPROCESSORS_ENABLED_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#USER_REGION_COPROCESSOR_CONF_KEY">USER_REGION_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#WAL_COPROCESSOR_CONF_KEY">WAL_COPROCESSOR_CONF_KEY</a></code></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
index 848d41f..c49c655 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
@@ -198,8 +198,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.Type.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.Action.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.LocalityType.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.LocalityType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.Type.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.Action.Type</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 9d9c30f..625c97b 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -347,10 +347,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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/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/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/MasterRpcServices.BalanceSwitchMode.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MasterRpcServices.BalanceSwitchMode</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
index f896d1e..5fd1c3a 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -215,10 +215,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">MetaProcedureInterface.MetaOperationType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">PeerProcedureInterface.PeerOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TableProcedureInterface.TableOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.ServerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ServerProcedureInterface.ServerOperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">PeerProcedureInterface.PeerOperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">MetaProcedureInterface.MetaOperationType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 7524d90..452eaee 100644
--- a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
@@ -127,8 +127,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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/849d84a8/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 35cc1ae..9346298 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -432,19 +432,19 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeepDeletedCells</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/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/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/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/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/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/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/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/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/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/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/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeepDeletedCells</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/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/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/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/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/CompareOperator.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompareOperator</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 c728f33..7abf8e1 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -229,13 +229,13 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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/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/ThrottleType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottleType</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/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/RpcThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">RpcThrottlingException.Type</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/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/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/ThrottleType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottleType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html
index 0a983ad..ad69218 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html
@@ -222,7 +222,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#ABORT_ON_ERROR_KEY">ABORT_ON_ERROR_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#abortable">abortable</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#conf">conf</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#coprocEnvironments">coprocEnvironments</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#COPROCESSORS_ENABLED_CONF_KEY">COPROCESSORS_ENABLED_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_ABORT_ON_ERROR">DEFAULT_ABORT_ON_ERROR</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_COPROCESSORS_ENABLED">DEFAULT_COPROCESSORS_ENABLED</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_USER_COPROCESSORS_ENABL
 ED">DEFAULT_USER_COPROCESSORS_ENABLED</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#loadSequence">loadSequence</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#MASTER_COPROCESSOR_CONF_KEY">MASTER_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#pathPrefix">pathPrefix</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#REGION_COPROCESSOR_CONF_KEY">REGION_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#REGIONSERVER_COPROCESSOR_CONF_KEY">REGIONSERVER_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#USER_COPROCESSORS_ENABLED_CONF_KEY">USER_COPROCESSORS_ENABLED_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#USER_REGION_COPROCESSOR_CONF_KEY">USER_REGION_COPROCE
 SSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#WAL_COPROCESSOR_CONF_KEY">WAL_COPROCESSOR_CONF_KEY</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#ABORT_ON_ERROR_KEY">ABORT_ON_ERROR_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#abortable">abortable</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#conf">conf</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#coprocEnvironments">coprocEnvironments</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#COPROCESSORS_ENABLED_CONF_KEY">COPROCESSORS_ENABLED_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_ABORT_ON_ERROR">DEFAULT_ABORT_ON_ERROR</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_COPROCESSORS_ENABLED">DEFAULT_COPROCESSORS_ENABLED</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_SKIP_LOAD_DUPLICATE_TAB
 LE_COPROCESSOR">DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_USER_COPROCESSORS_ENABLED">DEFAULT_USER_COPROCESSORS_ENABLED</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#loadSequence">loadSequence</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#MASTER_COPROCESSOR_CONF_KEY">MASTER_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#pathPrefix">pathPrefix</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#REGION_COPROCESSOR_CONF_KEY">REGION_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#REGIONSERVER_COPROCESSOR_CONF_KEY">REGIONSERVER_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#SKIP_LOAD_DUPLICATE_TABLE_COPRO
 CESSOR">SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#USER_COPROCESSORS_ENABLED_CONF_KEY">USER_COPROCESSORS_ENABLED_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#USER_REGION_COPROCESSOR_CONF_KEY">USER_REGION_COPROCESSOR_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#WAL_COPROCESSOR_CONF_KEY">WAL_COPROCESSOR_CONF_KEY</a></code></li>
 </ul>
 </li>
 </ul>


[34/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.IOErrorWithCause.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.IOErrorWithCause.html b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.IOErrorWithCause.html
deleted file mode 100644
index bcd5b20..0000000
--- a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.IOErrorWithCause.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class org.apache.hadoop.hbase.thrift.ThriftServerRunner.IOErrorWithCause (Apache HBase 3.0.0-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
-    try {
-        if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class org.apache.hadoop.hbase.thrift.ThriftServerRunner.IOErrorWithCause (Apache HBase 3.0.0-SNAPSHOT API)";
-        }
-    }
-    catch(err) {
-    }
-//-->
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../../../../../../overview-tree.html">Tree</a></li>
-<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.IOErrorWithCause.html" target="_top">Frames</a></li>
-<li><a href="ThriftServerRunner.IOErrorWithCause.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<div class="header">
-<h2 title="Uses of Class org.apache.hadoop.hbase.thrift.ThriftServerRunner.IOErrorWithCause" class="title">Uses of Class<br>org.apache.hadoop.hbase.thrift.ThriftServerRunner.IOErrorWithCause</h2>
-</div>
-<div class="classUseContainer">No usage of org.apache.hadoop.hbase.thrift.ThriftServerRunner.IOErrorWithCause</div>
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar.bottom">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.bottom.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../../../../../../overview-tree.html">Tree</a></li>
-<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.IOErrorWithCause.html" target="_top">Frames</a></li>
-<li><a href="ThriftServerRunner.IOErrorWithCause.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.ImplType.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.ImplType.html b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.ImplType.html
deleted file mode 100644
index 28bac39..0000000
--- a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.ImplType.html
+++ /dev/null
@@ -1,194 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class org.apache.hadoop.hbase.thrift.ThriftServerRunner.ImplType (Apache HBase 3.0.0-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
-    try {
-        if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class org.apache.hadoop.hbase.thrift.ThriftServerRunner.ImplType (Apache HBase 3.0.0-SNAPSHOT API)";
-        }
-    }
-    catch(err) {
-    }
-//-->
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../../../../../../overview-tree.html">Tree</a></li>
-<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.ImplType.html" target="_top">Frames</a></li>
-<li><a href="ThriftServerRunner.ImplType.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<div class="header">
-<h2 title="Uses of Class org.apache.hadoop.hbase.thrift.ThriftServerRunner.ImplType" class="title">Uses of Class<br>org.apache.hadoop.hbase.thrift.ThriftServerRunner.ImplType</h2>
-</div>
-<div class="classUseContainer">
-<ul class="blockList">
-<li class="blockList">
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
-<caption><span>Packages that use <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Package</th>
-<th class="colLast" scope="col">Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift">org.apache.hadoop.hbase.thrift</a></td>
-<td class="colLast">
-<div class="block">Provides an HBase <a href="http://incubator.apache.org/thrift/">Thrift</a>
-service.</div>
-</td>
-</tr>
-</tbody>
-</table>
-</li>
-<li class="blockList">
-<ul class="blockList">
-<li class="blockList"><a name="org.apache.hadoop.hbase.thrift">
-<!--   -->
-</a>
-<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a></h3>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
-<caption><span>Fields in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a> declared as <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Field and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>static <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.ImplType.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#DEFAULT">DEFAULT</a></span></code>&nbsp;</td>
-</tr>
-</tbody>
-</table>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
-<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a> that return <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>static <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.ImplType.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#getServerImpl-org.apache.hadoop.conf.Configuration-">getServerImpl</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>static <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.ImplType.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#valueOf-java.lang.String-">valueOf</a></span>(<a href="https://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)</code>
-<div class="block">Returns the enum constant of this type with the specified name.</div>
-</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>static <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a>[]</code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.ImplType.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#values--">values</a></span>()</code>
-<div class="block">Returns an array containing the constants of this enum type, in
-the order they are declared.</div>
-</td>
-</tr>
-</tbody>
-</table>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar.bottom">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.bottom.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../../../../../../overview-tree.html">Tree</a></li>
-<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.ImplType.html" target="_top">Frames</a></li>
-<li><a href="ThriftServerRunner.ImplType.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.ResultScannerWrapper.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.ResultScannerWrapper.html b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.ResultScannerWrapper.html
deleted file mode 100644
index 7c1d530..0000000
--- a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.ResultScannerWrapper.html
+++ /dev/null
@@ -1,190 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class org.apache.hadoop.hbase.thrift.ThriftServerRunner.ResultScannerWrapper (Apache HBase 3.0.0-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
-    try {
-        if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class org.apache.hadoop.hbase.thrift.ThriftServerRunner.ResultScannerWrapper (Apache HBase 3.0.0-SNAPSHOT API)";
-        }
-    }
-    catch(err) {
-    }
-//-->
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../../../../../../overview-tree.html">Tree</a></li>
-<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.ResultScannerWrapper.html" target="_top">Frames</a></li>
-<li><a href="ThriftServerRunner.ResultScannerWrapper.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<div class="header">
-<h2 title="Uses of Class org.apache.hadoop.hbase.thrift.ThriftServerRunner.ResultScannerWrapper" class="title">Uses of Class<br>org.apache.hadoop.hbase.thrift.ThriftServerRunner.ResultScannerWrapper</h2>
-</div>
-<div class="classUseContainer">
-<ul class="blockList">
-<li class="blockList">
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
-<caption><span>Packages that use <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ResultScannerWrapper</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Package</th>
-<th class="colLast" scope="col">Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift">org.apache.hadoop.hbase.thrift</a></td>
-<td class="colLast">
-<div class="block">Provides an HBase <a href="http://incubator.apache.org/thrift/">Thrift</a>
-service.</div>
-</td>
-</tr>
-</tbody>
-</table>
-</li>
-<li class="blockList">
-<ul class="blockList">
-<li class="blockList"><a name="org.apache.hadoop.hbase.thrift">
-<!--   -->
-</a>
-<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ResultScannerWrapper</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a></h3>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
-<caption><span>Fields in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a> with type parameters of type <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ResultScannerWrapper</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Field and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>protected <a href="https://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="https://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;</code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.HBaseHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#scannerMap">scannerMap</a></span></code>&nbsp;</td>
-</tr>
-</tbody>
-</table>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
-<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a> that return <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ResultScannerWrapper</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ResultScannerWrapper</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.HBaseHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getScanner-int-">getScanner</a></span>(int&nbsp;id)</code>
-<div class="block">Returns the scanner associated with the specified ID.</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ResultScannerWrapper</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.HBaseHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#removeScanner-int-">removeScanner</a></span>(int&nbsp;id)</code>
-<div class="block">Removes the scanner associated with the specified ID from the internal
- id-&gt;scanner hash-map.</div>
-</td>
-</tr>
-</tbody>
-</table>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar.bottom">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.bottom.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../../../../../../overview-tree.html">Tree</a></li>
-<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.ResultScannerWrapper.html" target="_top">Frames</a></li>
-<li><a href="ThriftServerRunner.ResultScannerWrapper.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.html b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.html
deleted file mode 100644
index e70c349..0000000
--- a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.html
+++ /dev/null
@@ -1,168 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class org.apache.hadoop.hbase.thrift.ThriftServerRunner (Apache HBase 3.0.0-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
-    try {
-        if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class org.apache.hadoop.hbase.thrift.ThriftServerRunner (Apache HBase 3.0.0-SNAPSHOT API)";
-        }
-    }
-    catch(err) {
-    }
-//-->
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../../../../../../overview-tree.html">Tree</a></li>
-<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.html" target="_top">Frames</a></li>
-<li><a href="ThriftServerRunner.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<div class="header">
-<h2 title="Uses of Class org.apache.hadoop.hbase.thrift.ThriftServerRunner" class="title">Uses of Class<br>org.apache.hadoop.hbase.thrift.ThriftServerRunner</h2>
-</div>
-<div class="classUseContainer">
-<ul class="blockList">
-<li class="blockList">
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
-<caption><span>Packages that use <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Package</th>
-<th class="colLast" scope="col">Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift">org.apache.hadoop.hbase.thrift</a></td>
-<td class="colLast">
-<div class="block">Provides an HBase <a href="http://incubator.apache.org/thrift/">Thrift</a>
-service.</div>
-</td>
-</tr>
-</tbody>
-</table>
-</li>
-<li class="blockList">
-<ul class="blockList">
-<li class="blockList"><a name="org.apache.hadoop.hbase.thrift">
-<!--   -->
-</a>
-<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a></h3>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
-<caption><span>Fields in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a> declared as <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Field and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServer.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#serverRunner">serverRunner</a></span></code>&nbsp;</td>
-</tr>
-</tbody>
-</table>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar.bottom">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.bottom.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../../../../../../overview-tree.html">Tree</a></li>
-<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.html" target="_top">Frames</a></li>
-<li><a href="ThriftServerRunner.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/package-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/package-frame.html b/devapidocs/org/apache/hadoop/hbase/thrift/package-frame.html
index 255010d..97aec65 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-frame.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-frame.html
@@ -21,8 +21,10 @@
 <ul title="Classes">
 <li><a href="CallQueue.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">CallQueue</a></li>
 <li><a href="CallQueue.Call.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">CallQueue.Call</a></li>
+<li><a href="Constants.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">Constants</a></li>
 <li><a href="DemoClient.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">DemoClient</a></li>
 <li><a href="HbaseHandlerMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">HbaseHandlerMetricsProxy</a></li>
+<li><a href="HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">HBaseServiceHandler</a></li>
 <li><a href="HThreadedSelectorServerArgs.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">HThreadedSelectorServerArgs</a></li>
 <li><a href="HttpDoAsClient.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">HttpDoAsClient</a></li>
 <li><a href="IncrementCoalescer.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">IncrementCoalescer</a></li>
@@ -33,26 +35,25 @@
 <li><a href="TBoundedThreadPoolServer.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">TBoundedThreadPoolServer</a></li>
 <li><a href="TBoundedThreadPoolServer.Args.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">TBoundedThreadPoolServer.Args</a></li>
 <li><a href="THBaseThreadPoolExecutor.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">THBaseThreadPoolExecutor</a></li>
+<li><a href="ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftHBaseServiceHandler</a></li>
+<li><a href="ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftHBaseServiceHandler.ResultScannerWrapper</a></li>
 <li><a href="ThriftHttpServlet.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftHttpServlet</a></li>
 <li><a href="ThriftHttpServlet.HttpKerberosServerAction.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftHttpServlet.HttpKerberosServerAction</a></li>
 <li><a href="ThriftHttpServlet.RemoteUserIdentity.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftHttpServlet.RemoteUserIdentity</a></li>
 <li><a href="ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftMetrics</a></li>
 <li><a href="ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftServer</a></li>
-<li><a href="ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftServerRunner</a></li>
-<li><a href="ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftServerRunner.HBaseHandler</a></li>
-<li><a href="ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftServerRunner.ResultScannerWrapper</a></li>
 <li><a href="ThriftUtilities.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftUtilities</a></li>
 </ul>
 <h2 title="Enums">Enums</h2>
 <ul title="Enums">
+<li><a href="ImplType.html" title="enum in org.apache.hadoop.hbase.thrift" target="classFrame">ImplType</a></li>
 <li><a href="MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift" target="classFrame">MetricsThriftServerSourceFactoryImpl.FactoryStorage</a></li>
 <li><a href="ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftMetrics.ThriftServerType</a></li>
-<li><a href="ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftServerRunner.ImplType</a></li>
 </ul>
 <h2 title="Exceptions">Exceptions</h2>
 <ul title="Exceptions">
 <li><a href="HttpAuthenticationException.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">HttpAuthenticationException</a></li>
-<li><a href="ThriftServerRunner.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftServerRunner.IOErrorWithCause</a></li>
+<li><a href="ThriftHBaseServiceHandler.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftHBaseServiceHandler.IOErrorWithCause</a></li>
 </ul>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/package-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/package-summary.html b/devapidocs/org/apache/hadoop/hbase/thrift/package-summary.html
index e9462d0..b2d5e35 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-summary.html
@@ -126,18 +126,31 @@ service.</div>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift">Constants</a></td>
+<td class="colLast">
+<div class="block">Thrift related constants</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift/DemoClient.html" title="class in org.apache.hadoop.hbase.thrift">DemoClient</a></td>
 <td class="colLast">
 <div class="block">See the instructions under hbase-examples/README.txt</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift">HbaseHandlerMetricsProxy</a></td>
 <td class="colLast">
 <div class="block">Converts a Hbase.Iface using InvocationHandler so that it reports process
  time of each call to ThriftMetrics.</div>
 </td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></td>
+<td class="colLast">
+<div class="block">abstract class for HBase handler
+ providing a Connection cache and get table/admin method</div>
+</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift/HThreadedSelectorServerArgs.html" title="class in org.apache.hadoop.hbase.thrift">HThreadedSelectorServerArgs</a></td>
 <td class="colLast">
@@ -199,6 +212,17 @@ service.</div>
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></td>
+<td class="colLast">
+<div class="block">The HBaseServiceHandler is a glue object that connects Thrift RPC calls to the
+ HBase client API primarily defined in the Admin and Table objects.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.ResultScannerWrapper</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHttpServlet</a></td>
 <td class="colLast">
 <div class="block">Thrift Http Servlet is used for performing Kerberos authentication if security is enabled and
@@ -231,24 +255,6 @@ service.</div>
 </td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner</a></td>
-<td class="colLast">
-<div class="block">ThriftServerRunner - this class starts up a Thrift server which implements
- the Hbase API specified in the Hbase.thrift IDL file.</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></td>
-<td class="colLast">
-<div class="block">The HBaseHandler is a glue object that connects Thrift RPC calls to the
- HBase client API primarily defined in the Admin and Table objects.</div>
-</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ResultScannerWrapper</a></td>
-<td class="colLast">&nbsp;</td>
-</tr>
-<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftUtilities.html" title="class in org.apache.hadoop.hbase.thrift">ThriftUtilities</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
@@ -264,22 +270,22 @@ service.</div>
 </tr>
 <tbody>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a></td>
+<td class="colLast">
+<div class="block">An enum of server implementation selections</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift">MetricsThriftServerSourceFactoryImpl.FactoryStorage</a></td>
 <td class="colLast">
 <div class="block">A singleton used to make sure that only one thrift metrics source per server type is ever
  created.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftMetrics.ThriftServerType</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
-<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a></td>
-<td class="colLast">
-<div class="block">An enum of server implementation selections</div>
-</td>
-</tr>
 </tbody>
 </table>
 </li>
@@ -296,7 +302,7 @@ service.</div>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.IOErrorWithCause</a></td>
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.IOErrorWithCause</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 </tbody>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
index 4f72184..66d0a39 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
@@ -101,6 +101,12 @@
 </li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/CallQueue.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">CallQueue</span></a> (implements java.util.concurrent.<a href="https://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;E&gt;)</li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/CallQueue.Call.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">CallQueue.Call</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)</li>
+<li type="circle">org.apache.hadoop.conf.Configured (implements org.apache.hadoop.conf.Configurable)
+<ul>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServer</span></a> (implements org.apache.hadoop.util.Tool)</li>
+</ul>
+</li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Constants</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/DemoClient.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">DemoClient</span></a></li>
 <li type="circle">javax.servlet.GenericServlet (implements java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>, javax.servlet.Servlet, javax.servlet.ServletConfig)
 <ul>
@@ -116,19 +122,21 @@
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">HbaseHandlerMetricsProxy</span></a> (implements java.lang.reflect.<a href="https://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>)</li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">HBaseServiceHandler</span></a>
+<ul>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftHBaseServiceHandler</span></a> (implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface)</li>
+</ul>
+</li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/HttpDoAsClient.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">HttpDoAsClient</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">IncrementCoalescer</span></a> (implements org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html" title="interface in org.apache.hadoop.hbase.thrift">IncrementCoalescerMBean</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">IncrementCoalescer.DaemonThreadFactory</span></a> (implements java.util.concurrent.<a href="https://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>)</li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">IncrementCoalescer.FullyQualifiedRow</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl</span></a> (implements org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactory.html" title="interface in org.apache.hadoop.hbase.thrift">MetricsThriftServerSourceFactory</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.ClientConnnection.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">TBoundedThreadPoolServer.ClientConnnection</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftHBaseServiceHandler.ResultScannerWrapper</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHttpServlet.HttpKerberosServerAction.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftHttpServlet.HttpKerberosServerAction</span></a> (implements java.security.<a href="https://docs.oracle.com/javase/8/docs/api/java/security/PrivilegedExceptionAction.html?is-external=true" title="class or interface in java.security">PrivilegedExceptionAction</a>&lt;T&gt;)</li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHttpServlet.RemoteUserIdentity.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftHttpServlet.RemoteUserIdentity</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftMetrics</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServer</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServerRunner</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)</li>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServerRunner.HBaseHandler</span></a> (implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface)</li>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServerRunner.ResultScannerWrapper</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftUtilities.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftUtilities</span></a></li>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Throwable</span></a> (implements java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
@@ -139,7 +147,7 @@
 <ul>
 <li type="circle">org.apache.hadoop.hbase.thrift.generated.IOError (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true" title="class or interface in java.lang">Cloneable</a>, java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>, org.apache.thrift.TBase&lt;T,F&gt;)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServerRunner.IOErrorWithCause</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftHBaseServiceHandler.IOErrorWithCause</span></a></li>
 </ul>
 </li>
 </ul>
@@ -199,9 +207,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftMetrics.ThriftServerType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServerRunner.ImplType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ImplType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/package-use.html b/devapidocs/org/apache/hadoop/hbase/thrift/package-use.html
index 1d22409..2c2e983 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-use.html
@@ -118,8 +118,19 @@ service.</div>
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/thrift/class-use/CallQueue.Call.html#org.apache.hadoop.hbase.thrift">CallQueue.Call</a>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/thrift/class-use/HBaseServiceHandler.html#org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a>
+<div class="block">abstract class for HBase handler
+ providing a Connection cache and get table/admin method</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/thrift/class-use/HttpAuthenticationException.html#org.apache.hadoop.hbase.thrift">HttpAuthenticationException</a>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/thrift/class-use/ImplType.html#org.apache.hadoop.hbase.thrift">ImplType</a>
+<div class="block">An enum of server implementation selections</div>
+</td>
+</tr>
 <tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/thrift/class-use/IncrementCoalescer.html#org.apache.hadoop.hbase.thrift">IncrementCoalescer</a>
 <div class="block">This class will coalesce increments from a thift server if
@@ -161,6 +172,15 @@ service.</div>
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/thrift/class-use/TBoundedThreadPoolServer.Args.html#org.apache.hadoop.hbase.thrift">TBoundedThreadPoolServer.Args</a>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/thrift/class-use/ThriftHBaseServiceHandler.html#org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a>
+<div class="block">The HBaseServiceHandler is a glue object that connects Thrift RPC calls to the
+ HBase client API primarily defined in the Admin and Table objects.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/thrift/class-use/ThriftHBaseServiceHandler.ResultScannerWrapper.html#org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.ResultScannerWrapper</a>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/thrift/class-use/ThriftHttpServlet.RemoteUserIdentity.html#org.apache.hadoop.hbase.thrift">ThriftHttpServlet.RemoteUserIdentity</a>
 <div class="block">Basic "struct" class to hold the final base64-encoded, authenticated GSSAPI token
  for the user with the given principal talking to the Thrift server.</div>
@@ -175,26 +195,6 @@ service.</div>
 <tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/thrift/class-use/ThriftMetrics.ThriftServerType.html#org.apache.hadoop.hbase.thrift">ThriftMetrics.ThriftServerType</a>&nbsp;</td>
 </tr>
-<tr class="altColor">
-<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.html#org.apache.hadoop.hbase.thrift">ThriftServerRunner</a>
-<div class="block">ThriftServerRunner - this class starts up a Thrift server which implements
- the Hbase API specified in the Hbase.thrift IDL file.</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.HBaseHandler.html#org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a>
-<div class="block">The HBaseHandler is a glue object that connects Thrift RPC calls to the
- HBase client API primarily defined in the Admin and Table objects.</div>
-</td>
-</tr>
-<tr class="altColor">
-<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.ImplType.html#org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a>
-<div class="block">An enum of server implementation selections</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.ResultScannerWrapper.html#org.apache.hadoop.hbase.thrift">ThriftServerRunner.ResultScannerWrapper</a>&nbsp;</td>
-</tr>
 </tbody>
 </table>
 </li>
@@ -208,9 +208,15 @@ service.</div>
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/thrift/class-use/ThriftMetrics.html#org.apache.hadoop.hbase.thrift2">ThriftMetrics</a>
-<div class="block">This class is for maintaining the various statistics of thrift server
- and publishing them through the metrics interfaces.</div>
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/thrift/class-use/HBaseServiceHandler.html#org.apache.hadoop.hbase.thrift2">HBaseServiceHandler</a>
+<div class="block">abstract class for HBase handler
+ providing a Connection cache and get table/admin method</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/thrift/class-use/ThriftServer.html#org.apache.hadoop.hbase.thrift2">ThriftServer</a>
+<div class="block">ThriftServer- this class starts up a Thrift server which implements the
+ Hbase API specified in the Hbase.thrift IDL file.</div>
 </td>
 </tr>
 </tbody>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html b/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html
deleted file mode 100644
index 0b0d82d..0000000
--- a/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html
+++ /dev/null
@@ -1,345 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ThriftHBaseServiceHandler.THBaseServiceMetricsProxy (Apache HBase 3.0.0-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
-    try {
-        if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="ThriftHBaseServiceHandler.THBaseServiceMetricsProxy (Apache HBase 3.0.0-SNAPSHOT API)";
-        }
-    }
-    catch(err) {
-    }
-//-->
-var methods = {"i0":10};
-var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
-var altColor = "altColor";
-var rowColor = "rowColor";
-var tableTab = "tableTab";
-var activeTableTab = "activeTableTab";
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html" target="_top">Frames</a></li>
-<li><a href="ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
-<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<!-- ======== START OF CLASS DATA ======== -->
-<div class="header">
-<div class="subTitle">org.apache.hadoop.hbase.thrift2</div>
-<h2 title="Class ThriftHBaseServiceHandler.THBaseServiceMetricsProxy" class="title">Class ThriftHBaseServiceHandler.THBaseServiceMetricsProxy</h2>
-</div>
-<div class="contentContainer">
-<ul class="inheritance">
-<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
-<li>
-<ul class="inheritance">
-<li>org.apache.hadoop.hbase.thrift2.ThriftHBaseServiceHandler.THBaseServiceMetricsProxy</li>
-</ul>
-</li>
-</ul>
-<div class="description">
-<ul class="blockList">
-<li class="blockList">
-<dl>
-<dt>All Implemented Interfaces:</dt>
-<dd><a href="https://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></dd>
-</dl>
-<dl>
-<dt>Enclosing class:</dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler</a></dd>
-</dl>
-<hr>
-<br>
-<pre>private static final class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.127">ThriftHBaseServiceHandler.THBaseServiceMetricsProxy</a>
-extends <a href="https://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="https://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>
-</li>
-</ul>
-</div>
-<div class="summary">
-<ul class="blockList">
-<li class="blockList">
-<!-- =========== FIELD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.summary">
-<!--   -->
-</a>
-<h3>Field Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
-<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Field and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html#handler">handler</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html#metrics">metrics</a></span></code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.summary">
-<!--   -->
-</a>
-<h3>Constructor Summary</h3>
-<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="colFirst" scope="col">Modifier</th>
-<th class="colLast" scope="col">Constructor and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private </code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html#THBaseServiceMetricsProxy-org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface-org.apache.hadoop.hbase.thrift.ThriftMetrics-">THBaseServiceMetricsProxy</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>
-</tr>
-</table>
-</li>
-</ul>
-<!-- ========== METHOD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.summary">
-<!--   -->
-</a>
-<h3>Method Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tr id="i0" class="altColor">
-<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html#invoke-java.lang.Object-java.lang.reflect.Method-java.lang.Object:A-">invoke</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;proxy,
-      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true" title="class or interface in java.lang.reflect">Method</a>&nbsp;m,
-      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;args)</code>&nbsp;</td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<div class="details">
-<ul class="blockList">
-<li class="blockList">
-<!-- ============ FIELD DETAIL =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.detail">
-<!--   -->
-</a>
-<h3>Field Detail</h3>
-<a name="handler">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>handler</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html#line.128">handler</a></pre>
-</li>
-</ul>
-<a name="metrics">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<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/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html#line.129">metrics</a></pre>
-</li>
-</ul>
-</li>
-</ul>
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.detail">
-<!--   -->
-</a>
-<h3>Constructor Detail</h3>
-<a name="THBaseServiceMetricsProxy-org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface-org.apache.hadoop.hbase.thrift.ThriftMetrics-">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>THBaseServiceMetricsProxy</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html#line.131">THBaseServiceMetricsProxy</a>(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)</pre>
-</li>
-</ul>
-</li>
-</ul>
-<!-- ============ METHOD DETAIL ========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.detail">
-<!--   -->
-</a>
-<h3>Method Detail</h3>
-<a name="invoke-java.lang.Object-java.lang.reflect.Method-java.lang.Object:A-">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>invoke</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html#line.137">invoke</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;proxy,
-                     <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true" title="class or interface in java.lang.reflect">Method</a>&nbsp;m,
-                     <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;args)
-              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a></pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/InvocationHandler.html?is-external=true#invoke-java.lang.Object-java.lang.reflect.Method-java.lang.Object:A-" title="class or interface in java.lang.reflect">invoke</a></code>&nbsp;in interface&nbsp;<code><a href="https://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></code></dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://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>
-</dl>
-</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-</div>
-<!-- ========= END OF CLASS DATA ========= -->
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar.bottom">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.bottom.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html" target="_top">Frames</a></li>
-<li><a href="ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
-<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>


[33/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html b/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html
index 54aed81..0a554cd 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -137,7 +137,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.156">ThriftHBaseServiceHandler.TIOErrorWithCause</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.113">ThriftHBaseServiceHandler.TIOErrorWithCause</a>
 extends org.apache.hadoop.hbase.thrift2.generated.TIOError</pre>
 </li>
 </ul>
@@ -269,7 +269,7 @@ extends org.apache.hadoop.hbase.thrift2.generated.TIOError</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>cause</h4>
-<pre>private&nbsp;<a href="https://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/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html#line.157">cause</a></pre>
+<pre>private&nbsp;<a href="https://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/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html#line.114">cause</a></pre>
 </li>
 </ul>
 </li>
@@ -286,7 +286,7 @@ extends org.apache.hadoop.hbase.thrift2.generated.TIOError</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TIOErrorWithCause</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html#line.159">TIOErrorWithCause</a>(<a href="https://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/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html#line.116">TIOErrorWithCause</a>(<a href="https://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>
@@ -303,7 +303,7 @@ extends org.apache.hadoop.hbase.thrift2.generated.TIOError</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getCause</h4>
-<pre>public&nbsp;<a href="https://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/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html#line.165">getCause</a>()</pre>
+<pre>public&nbsp;<a href="https://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/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html#line.122">getCause</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://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="https://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>
@@ -316,7 +316,7 @@ extends org.apache.hadoop.hbase.thrift2.generated.TIOError</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>equals</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html#line.170">equals</a>(<a href="https://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/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html#line.127">equals</a>(<a href="https://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.thrift2.generated.TIOError</code></dd>
@@ -329,7 +329,7 @@ extends org.apache.hadoop.hbase.thrift2.generated.TIOError</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>hashCode</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html#line.184">hashCode</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html#line.141">hashCode</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code>hashCode</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.thrift2.generated.TIOError</code></dd>
@@ -364,7 +364,7 @@ extends org.apache.hadoop.hbase.thrift2.generated.TIOError</pre>
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">


[51/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

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


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

Branch: refs/heads/asf-site
Commit: 849d84a8efffddfd3c5b794dcacb2a057c5f8bf9
Parents: 33046fe
Author: jenkins <bu...@apache.org>
Authored: Wed Jan 2 14:52:40 2019 +0000
Committer: jenkins <bu...@apache.org>
Committed: Wed Jan 2 14:52:40 2019 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |     4 +-
 apache_hbase_reference_guide.pdf                |     4 +-
 book.html                                       |     2 +-
 bulk-loads.html                                 |     4 +-
 checkstyle-aggregate.html                       | 33512 ++++++++---------
 checkstyle.rss                                  |   118 +-
 coc.html                                        |     4 +-
 dependencies.html                               |     4 +-
 dependency-convergence.html                     |     4 +-
 dependency-info.html                            |     4 +-
 dependency-management.html                      |     4 +-
 devapidocs/allclasses-frame.html                |    12 +-
 devapidocs/allclasses-noframe.html              |    12 +-
 devapidocs/constant-values.html                 |   970 +-
 devapidocs/index-all.html                       |   577 +-
 .../hadoop/hbase/backup/package-tree.html       |     2 +-
 .../hadoop/hbase/class-use/TableName.html       |     2 +-
 .../hadoop/hbase/client/class-use/Admin.html    |     4 +-
 .../class-use/OperationWithAttributes.html      |     2 +-
 .../hadoop/hbase/client/class-use/Result.html   |     2 +-
 .../hbase/client/class-use/ResultScanner.html   |     8 +-
 .../hadoop/hbase/client/class-use/Table.html    |    14 +-
 .../hadoop/hbase/client/package-tree.html       |    24 +-
 ...essorHost.EnvironmentPriorityComparator.html |     6 +-
 .../CoprocessorHost.ObserverGetter.html         |     2 +-
 .../CoprocessorHost.ObserverOperation.html      |    16 +-
 ...ocessorHost.ObserverOperationWithResult.html |    18 +-
 ...ssorHost.ObserverOperationWithoutResult.html |    12 +-
 .../hbase/coprocessor/CoprocessorHost.html      |   108 +-
 .../hadoop/hbase/coprocessor/package-tree.html  |     2 +-
 .../hadoop/hbase/executor/package-tree.html     |     2 +-
 .../hadoop/hbase/filter/package-tree.html       |     6 +-
 .../hadoop/hbase/http/class-use/InfoServer.html |     2 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     4 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |     4 +-
 .../hbase/master/MasterCoprocessorHost.html     |     2 +-
 .../hbase/master/balancer/package-tree.html     |     2 +-
 .../hadoop/hbase/master/package-tree.html       |     2 +-
 .../hbase/master/procedure/package-tree.html    |     4 +-
 .../hadoop/hbase/monitoring/package-tree.html   |     2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    18 +-
 .../hadoop/hbase/quotas/package-tree.html       |     8 +-
 .../regionserver/RegionCoprocessorHost.html     |     2 +-
 .../RegionServerCoprocessorHost.html            |     2 +-
 .../hadoop/hbase/regionserver/package-tree.html |    18 +-
 .../regionserver/querymatcher/package-tree.html |     4 +-
 .../regionserver/wal/WALCoprocessorHost.html    |     2 +-
 .../hbase/regionserver/wal/package-tree.html    |     2 +-
 .../hadoop/hbase/replication/package-tree.html  |     2 +-
 .../replication/regionserver/package-tree.html  |     2 +-
 .../hbase/security/access/package-tree.html     |     4 +-
 .../class-use/SaslUtil.QualityOfProtection.html |    37 +-
 .../hbase/security/class-use/UserProvider.html  |    36 +-
 .../hadoop/hbase/security/package-tree.html     |     2 +-
 .../hadoop/hbase/security/package-use.html      |     3 -
 .../hadoop/hbase/thrift/CallQueue.Call.html     |     4 +-
 .../apache/hadoop/hbase/thrift/Constants.html   |  1334 +
 .../apache/hadoop/hbase/thrift/DemoClient.html  |     4 +-
 .../hbase/thrift/HBaseServiceHandler.html       |   459 +
 .../thrift/HThreadedSelectorServerArgs.html     |     4 +-
 .../hbase/thrift/HbaseHandlerMetricsProxy.html  |    56 +-
 .../hadoop/hbase/thrift/HttpDoAsClient.html     |     4 +-
 .../apache/hadoop/hbase/thrift/ImplType.html    |   594 +
 .../IncrementCoalescer.DaemonThreadFactory.html |    14 +-
 .../IncrementCoalescer.FullyQualifiedRow.html   |    32 +-
 .../hadoop/hbase/thrift/IncrementCoalescer.html |    38 +-
 .../hbase/thrift/THBaseThreadPoolExecutor.html  |     4 +-
 ...iftHBaseServiceHandler.IOErrorWithCause.html |   414 +
 ...BaseServiceHandler.ResultScannerWrapper.html |   340 +
 .../hbase/thrift/ThriftHBaseServiceHandler.html |  2309 ++
 .../hadoop/hbase/thrift/ThriftHttpServlet.html  |    22 +-
 .../hadoop/hbase/thrift/ThriftServer.html       |   630 +-
 .../thrift/ThriftServerRunner.HBaseHandler.html |  2385 --
 .../ThriftServerRunner.IOErrorWithCause.html    |   414 -
 .../thrift/ThriftServerRunner.ImplType.html     |   584 -
 ...ThriftServerRunner.ResultScannerWrapper.html |   340 -
 .../hadoop/hbase/thrift/ThriftServerRunner.html |  1291 -
 .../hadoop/hbase/thrift/ThriftUtilities.html    |     4 +-
 .../hbase/thrift/class-use/Constants.html       |   125 +
 .../thrift/class-use/HBaseServiceHandler.html   |   245 +
 .../hadoop/hbase/thrift/class-use/ImplType.html |   194 +
 .../thrift/class-use/IncrementCoalescer.html    |     2 +-
 ...iftHBaseServiceHandler.IOErrorWithCause.html |   125 +
 ...BaseServiceHandler.ResultScannerWrapper.html |   190 +
 .../class-use/ThriftHBaseServiceHandler.html    |   179 +
 .../hbase/thrift/class-use/ThriftMetrics.html   |   129 +-
 .../hbase/thrift/class-use/ThriftServer.html    |    48 +-
 .../ThriftServerRunner.HBaseHandler.html        |   196 -
 .../ThriftServerRunner.IOErrorWithCause.html    |   125 -
 .../class-use/ThriftServerRunner.ImplType.html  |   194 -
 ...ThriftServerRunner.ResultScannerWrapper.html |   190 -
 .../thrift/class-use/ThriftServerRunner.html    |   168 -
 .../hadoop/hbase/thrift/package-frame.html      |    11 +-
 .../hadoop/hbase/thrift/package-summary.html    |    60 +-
 .../hadoop/hbase/thrift/package-tree.html       |    22 +-
 .../apache/hadoop/hbase/thrift/package-use.html |    52 +-
 ...erviceHandler.THBaseServiceMetricsProxy.html |   345 -
 ...ftHBaseServiceHandler.TIOErrorWithCause.html |    16 +-
 .../thrift2/ThriftHBaseServiceHandler.html      |   263 +-
 .../hadoop/hbase/thrift2/ThriftServer.html      |   562 +-
 ...erviceHandler.THBaseServiceMetricsProxy.html |   125 -
 .../hadoop/hbase/thrift2/package-frame.html     |     1 -
 .../hadoop/hbase/thrift2/package-summary.html   |     6 +-
 .../hadoop/hbase/thrift2/package-tree.html      |    11 +-
 .../hbase/util/class-use/ConnectionCache.html   |    29 +-
 .../hbase/util/class-use/JvmPauseMonitor.html   |     4 +-
 .../apache/hadoop/hbase/util/package-tree.html  |     6 +-
 .../apache/hadoop/hbase/util/package-use.html   |    36 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     2 +-
 devapidocs/overview-tree.html                   |    24 +-
 devapidocs/serialized-form.html                 |    32 +-
 .../org/apache/hadoop/hbase/Version.html        |     4 +-
 ...essorHost.EnvironmentPriorityComparator.html |  1187 +-
 .../CoprocessorHost.ObserverGetter.html         |  1187 +-
 .../CoprocessorHost.ObserverOperation.html      |  1187 +-
 ...ocessorHost.ObserverOperationWithResult.html |  1187 +-
 ...ssorHost.ObserverOperationWithoutResult.html |  1187 +-
 .../hbase/coprocessor/CoprocessorHost.html      |  1187 +-
 .../apache/hadoop/hbase/thrift/Constants.html   |   223 +
 .../hbase/thrift/HBaseServiceHandler.html       |   162 +
 .../hbase/thrift/HbaseHandlerMetricsProxy.html  |   116 +-
 .../apache/hadoop/hbase/thrift/ImplType.html    |   215 +
 .../IncrementCoalescer.DaemonThreadFactory.html |   394 +-
 .../IncrementCoalescer.FullyQualifiedRow.html   |   394 +-
 .../hadoop/hbase/thrift/IncrementCoalescer.html |   394 +-
 ...iftHBaseServiceHandler.IOErrorWithCause.html |  1419 +
 ...BaseServiceHandler.ResultScannerWrapper.html |  1419 +
 .../hbase/thrift/ThriftHBaseServiceHandler.html |  1419 +
 ...iftHttpServlet.HttpKerberosServerAction.html |    12 +-
 .../ThriftHttpServlet.RemoteUserIdentity.html   |    12 +-
 .../hadoop/hbase/thrift/ThriftHttpServlet.html  |    12 +-
 .../hadoop/hbase/thrift/ThriftServer.html       |   976 +-
 .../thrift/ThriftServerRunner.HBaseHandler.html |  2103 --
 .../ThriftServerRunner.IOErrorWithCause.html    |  2103 --
 .../thrift/ThriftServerRunner.ImplType.html     |  2103 --
 ...ThriftServerRunner.ResultScannerWrapper.html |  2103 --
 .../hadoop/hbase/thrift/ThriftServerRunner.html |  2103 --
 ...erviceHandler.THBaseServiceMetricsProxy.html |   935 -
 ...ftHBaseServiceHandler.TIOErrorWithCause.html |  1565 +-
 .../thrift2/ThriftHBaseServiceHandler.html      |  1565 +-
 .../hadoop/hbase/thrift2/ThriftServer.html      |   696 +-
 downloads.html                                  |     4 +-
 export_control.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 +-
 testdevapidocs/allclasses-frame.html            |     3 +
 testdevapidocs/allclasses-noframe.html          |     3 +
 testdevapidocs/constant-values.html             |    38 +
 testdevapidocs/index-all.html                   |    46 +-
 .../hadoop/hbase/backup/package-tree.html       |     2 +-
 .../hbase/class-use/HBaseClassTestRule.html     |    40 +-
 .../hbase/class-use/HBaseTestingUtility.html    |     4 +-
 ...tCoprocessorHost.CoprocessorHostForTest.html |     2 +-
 .../coprocessor/TestReadOnlyConfiguration.html  |     4 +-
 .../coprocessor/TestRegionCoprocessorHost.html  |   313 +
 .../coprocessor/TestRegionObserverBypass.html   |     4 +-
 .../class-use/TestRegionCoprocessorHost.html    |   125 +
 .../hadoop/hbase/coprocessor/package-frame.html |     1 +
 .../hbase/coprocessor/package-summary.html      |    82 +-
 .../hadoop/hbase/coprocessor/package-tree.html  |     1 +
 .../hadoop/hbase/io/hfile/package-tree.html     |     2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |     6 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     4 +-
 .../hadoop/hbase/regionserver/package-tree.html |     6 +-
 .../apache/hadoop/hbase/test/package-tree.html  |     2 +-
 .../hbase/thrift/TestThriftHttpServer.html      |    81 +-
 .../TestThriftServer.MySlowHBaseHandler.html    |    60 +-
 .../hadoop/hbase/thrift/TestThriftServer.html   |    18 +-
 .../hbase/thrift/TestThriftServerCmdLine.html   |   101 +-
 .../thrift/TestThriftSpnegoHttpServer.html      |    44 +-
 .../thrift/class-use/TestThriftHttpServer.html  |    22 +
 .../class-use/TestThriftServerCmdLine.html      |    42 +-
 .../hadoop/hbase/thrift/package-summary.html    |     2 +-
 .../hadoop/hbase/thrift/package-tree.html       |    14 +-
 .../apache/hadoop/hbase/thrift/package-use.html |    12 +
 .../hbase/thrift2/TestThrift2HttpServer.html    |   370 +
 .../hbase/thrift2/TestThrift2ServerCmdLine.html |   374 +
 ...seServiceHandler.DelayingRegionObserver.html |    14 +-
 .../thrift2/TestThriftHBaseServiceHandler.html  |   122 +-
 .../class-use/TestThrift2HttpServer.html        |   125 +
 .../class-use/TestThrift2ServerCmdLine.html     |   125 +
 .../hadoop/hbase/thrift2/package-frame.html     |     2 +
 .../hadoop/hbase/thrift2/package-summary.html   |    10 +-
 .../hadoop/hbase/thrift2/package-tree.html      |    10 +
 .../apache/hadoop/hbase/wal/package-tree.html   |     2 +-
 testdevapidocs/overview-tree.html               |    22 +-
 testdevapidocs/serialized-form.html             |    32 +-
 .../coprocessor/TestRegionCoprocessorHost.html  |   149 +
 .../hbase/thrift/TestThriftHttpServer.html      |   366 +-
 .../TestThriftServer.MySlowHBaseHandler.html    |   116 +-
 .../hadoop/hbase/thrift/TestThriftServer.html   |   116 +-
 .../hbase/thrift/TestThriftServerCmdLine.html   |   474 +-
 .../thrift/TestThriftSpnegoHttpServer.html      |   467 +-
 .../hbase/thrift2/TestThrift2HttpServer.html    |   162 +
 .../hbase/thrift2/TestThrift2ServerCmdLine.html |   171 +
 ...seServiceHandler.DelayingRegionObserver.html |  3343 +-
 .../thrift2/TestThriftHBaseServiceHandler.html  |  3343 +-
 215 files changed, 43491 insertions(+), 47791 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index 47e0d6d..2bc9fc5 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -611,7 +611,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: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 2b27e39..66290ec 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:20190101143209+00'00')
-/CreationDate (D:20190101144822+00'00')
+/ModDate (D:20190102143302+00'00')
+/CreationDate (D:20190102144910+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index e08a686..5a5d92d 100644
--- a/book.html
+++ b/book.html
@@ -41411,7 +41411,7 @@ org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2019-01-01 14:32:09 UTC
+Last updated 2019-01-02 14:33:02 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index 5ebd608..d6ffc68 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -316,7 +316,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: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 


[41/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html b/devapidocs/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html
index 352a9b5..7a0615b 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.62">IncrementCoalescer.FullyQualifiedRow</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.61">IncrementCoalescer.FullyQualifiedRow</a>
 extends <a href="https://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">Used to identify a cell that will be incremented.</div>
 </li>
@@ -253,7 +253,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>table</h4>
-<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.63">table</a></pre>
+<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.62">table</a></pre>
 </li>
 </ul>
 <a name="rowKey">
@@ -262,7 +262,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>rowKey</h4>
-<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.64">rowKey</a></pre>
+<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.63">rowKey</a></pre>
 </li>
 </ul>
 <a name="family">
@@ -271,7 +271,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>family</h4>
-<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.65">family</a></pre>
+<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.64">family</a></pre>
 </li>
 </ul>
 <a name="qualifier">
@@ -280,7 +280,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>qualifier</h4>
-<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.66">qualifier</a></pre>
+<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.65">qualifier</a></pre>
 </li>
 </ul>
 </li>
@@ -297,7 +297,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>FullyQualifiedRow</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.68">FullyQualifiedRow</a>(byte[]&nbsp;table,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.67">FullyQualifiedRow</a>(byte[]&nbsp;table,
                          byte[]&nbsp;rowKey,
                          byte[]&nbsp;fam,
                          byte[]&nbsp;qual)</pre>
@@ -317,7 +317,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTable</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.76">getTable</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.75">getTable</a>()</pre>
 </li>
 </ul>
 <a name="setTable-byte:A-">
@@ -326,7 +326,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.80">setTable</a>(byte[]&nbsp;table)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.79">setTable</a>(byte[]&nbsp;table)</pre>
 </li>
 </ul>
 <a name="getRowKey--">
@@ -335,7 +335,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowKey</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.84">getRowKey</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.83">getRowKey</a>()</pre>
 </li>
 </ul>
 <a name="setRowKey-byte:A-">
@@ -344,7 +344,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setRowKey</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.88">setRowKey</a>(byte[]&nbsp;rowKey)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.87">setRowKey</a>(byte[]&nbsp;rowKey)</pre>
 </li>
 </ul>
 <a name="getFamily--">
@@ -353,7 +353,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getFamily</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.92">getFamily</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.91">getFamily</a>()</pre>
 </li>
 </ul>
 <a name="setFamily-byte:A-">
@@ -362,7 +362,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setFamily</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.96">setFamily</a>(byte[]&nbsp;fam)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.95">setFamily</a>(byte[]&nbsp;fam)</pre>
 </li>
 </ul>
 <a name="getQualifier--">
@@ -371,7 +371,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getQualifier</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.100">getQualifier</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.99">getQualifier</a>()</pre>
 </li>
 </ul>
 <a name="setQualifier-byte:A-">
@@ -380,7 +380,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setQualifier</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.104">setQualifier</a>(byte[]&nbsp;qual)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.103">setQualifier</a>(byte[]&nbsp;qual)</pre>
 </li>
 </ul>
 <a name="hashCode--">
@@ -389,7 +389,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>hashCode</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.109">hashCode</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.108">hashCode</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -402,7 +402,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>equals</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.120">equals</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;obj)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.119">equals</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;obj)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 8cd7000..7ed1cd4 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/HttpDoAsClient.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.56">IncrementCoalescer</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.55">IncrementCoalescer</a>
 extends <a href="https://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="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html" title="interface in org.apache.hadoop.hbase.thrift">IncrementCoalescerMBean</a></pre>
 <div class="block">This class will coalesce increments from a thift server if
@@ -179,7 +179,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#failedIncrements">failedIncrements</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></code></td>
+<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#handler">handler</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
@@ -217,7 +217,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <th class="colOne" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#IncrementCoalescer-org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler-">IncrementCoalescer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a>&nbsp;hand)</code>&nbsp;</td>
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#IncrementCoalescer-org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler-">IncrementCoalescer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a>&nbsp;hand)</code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -353,7 +353,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="https://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">failedIncrements</a></pre>
+<pre>private final&nbsp;<a href="https://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">failedIncrements</a></pre>
 </li>
 </ul>
 <a name="successfulCoalescings">
@@ -362,7 +362,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="https://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.178">successfulCoalescings</a></pre>
+<pre>private final&nbsp;<a href="https://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">successfulCoalescings</a></pre>
 </li>
 </ul>
 <a name="totalIncrements">
@@ -371,7 +371,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="https://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.179">totalIncrements</a></pre>
+<pre>private final&nbsp;<a href="https://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.178">totalIncrements</a></pre>
 </li>
 </ul>
 <a name="countersMap">
@@ -380,7 +380,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="https://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="https://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.180">countersMap</a></pre>
+<pre>private final&nbsp;<a href="https://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="https://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.179">countersMap</a></pre>
 </li>
 </ul>
 <a name="pool">
@@ -389,7 +389,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="https://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.182">pool</a></pre>
+<pre>private final&nbsp;<a href="https://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.181">pool</a></pre>
 </li>
 </ul>
 <a name="handler">
@@ -398,7 +398,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.183">handler</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.182">handler</a></pre>
 </li>
 </ul>
 <a name="maxQueueSize">
@@ -407,7 +407,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.185">maxQueueSize</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.184">maxQueueSize</a></pre>
 </li>
 </ul>
 <a name="CORE_POOL_SIZE">
@@ -416,7 +416,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.186">CORE_POOL_SIZE</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.185">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>
@@ -429,7 +429,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.188">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.187">LOG</a></pre>
 </li>
 </ul>
 </li>
@@ -440,13 +440,13 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="IncrementCoalescer-org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler-">
+<a name="IncrementCoalescer-org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler-">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IncrementCoalescer</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.191">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.190">IncrementCoalescer</a>(<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a>&nbsp;hand)</pre>
 </li>
 </ul>
 </li>
@@ -463,7 +463,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.201">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.200">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>
@@ -477,7 +477,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.209">queueIncrements</a>(<a href="https://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.208">queueIncrements</a>(<a href="https://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>
@@ -491,7 +491,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.222">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.221">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>
@@ -760,7 +760,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoale
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/HttpDoAsClient.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.DaemonThreadFactory.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/THBaseThreadPoolExecutor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/THBaseThreadPoolExecutor.html b/devapidocs/org/apache/hadoop/hbase/thrift/THBaseThreadPoolExecutor.html
index 9551de2..e9774a1 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/THBaseThreadPoolExecutor.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/THBaseThreadPoolExecutor.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.ClientConnnection.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/THBaseThreadPoolExecutor.html" target="_top">Frames</a></li>
@@ -368,7 +368,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.ClientConnnection.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/THBaseThreadPoolExecutor.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html
new file mode 100644
index 0000000..7dc15bb
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html
@@ -0,0 +1,414 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>ThriftHBaseServiceHandler.IOErrorWithCause (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ThriftHBaseServiceHandler.IOErrorWithCause (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ThriftHBaseServiceHandler.IOErrorWithCause.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html" target="_top">Frames</a></li>
+<li><a href="ThriftHBaseServiceHandler.IOErrorWithCause.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.thrift.generated.IOError">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.thrift</div>
+<h2 title="Class ThriftHBaseServiceHandler.IOErrorWithCause" class="title">Class ThriftHBaseServiceHandler.IOErrorWithCause</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">java.lang.Throwable</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">java.lang.Exception</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.thrift.TException</li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.thrift.generated.IOError</li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler.IOErrorWithCause</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true" title="class or interface in java.lang">Cloneable</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;org.apache.hadoop.hbase.thrift.generated.IOError&gt;, org.apache.thrift.TBase&lt;org.apache.hadoop.hbase.thrift.generated.IOError,org.apache.hadoop.hbase.thrift.generated.IOError._Fields&gt;</dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#line.1313">ThriftHBaseServiceHandler.IOErrorWithCause</a>
+extends org.apache.hadoop.hbase.thrift.generated.IOError</pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../serialized-form.html#org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler.IOErrorWithCause">Serialized Form</a></dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.thrift.generated.IOError">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.thrift.generated.IOError</h3>
+<code>org.apache.hadoop.hbase.thrift.generated.IOError._Fields</code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html#cause">cause</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.thrift.generated.IOError">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.thrift.generated.IOError</h3>
+<code>message, metaDataMap</code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<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>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html#IOErrorWithCause-java.lang.Throwable-">IOErrorWithCause</a></span>(<a href="https://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)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html#equals-java.lang.Object-">equals</a></span>(<a href="https://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)</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html#getCause--">getCause</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html#hashCode--">hashCode</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.thrift.generated.IOError">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.thrift.generated.IOError</h3>
+<code>clear, compareTo, deepCopy, equals, fieldForId, getFieldValue, getMessage, isSet, isSetMessage, read, setFieldValue, setMessage, setMessageIsSet, toString, unsetMessage, validate, write</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Throwable">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#addSuppressed-java.lang.Throwable-" title="class or interface in java.lang">addSuppressed</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#fillInStackTrace--" title="class or interface in java.lang">fillInStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getLocalizedMessage--" title="class or interface in java.lang">getLocalizedMessage</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getStackTrace--" title="class or interface in java.lang">getStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#getSuppressed--" title="class or interface in java.lang">getSuppressed</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#initCause-java.l
 ang.Throwable-" title="class or interface in java.lang">initCause</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace--" title="class or interface in java.lang">printStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintStream-" title="class or interface in java.lang">printStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#printStackTrace-java.io.PrintWriter-" title="class or interface in java.lang">printStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true#setStackTrace-java.lang.StackTraceElement:A-" title="class or interface in java.lang">setStackTrace</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.htm
 l?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="cause">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>cause</h4>
+<pre>private final&nbsp;<a href="https://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/ThriftHBaseServiceHandler.IOErrorWithCause.html#line.1314">cause</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="IOErrorWithCause-java.lang.Throwable-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>IOErrorWithCause</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html#line.1315">IOErrorWithCause</a>(<a href="https://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>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getCause--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getCause</h4>
+<pre>public&nbsp;<a href="https://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/ThriftHBaseServiceHandler.IOErrorWithCause.html#line.1320">getCause</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="https://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="https://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>
+</dl>
+</li>
+</ul>
+<a name="equals-java.lang.Object-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>equals</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html#line.1325">equals</a>(<a href="https://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>
+</dl>
+</li>
+</ul>
+<a name="hashCode--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>hashCode</h4>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html#line.1339">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>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ThriftHBaseServiceHandler.IOErrorWithCause.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html" target="_top">Frames</a></li>
+<li><a href="ThriftHBaseServiceHandler.IOErrorWithCause.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.thrift.generated.IOError">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html
new file mode 100644
index 0000000..b7b10a2
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html
@@ -0,0 +1,340 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>ThriftHBaseServiceHandler.ResultScannerWrapper (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ThriftHBaseServiceHandler.ResultScannerWrapper (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ThriftHBaseServiceHandler.ResultScannerWrapper.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" target="_top">Frames</a></li>
+<li><a href="ThriftHBaseServiceHandler.ResultScannerWrapper.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.thrift</div>
+<h2 title="Class ThriftHBaseServiceHandler.ResultScannerWrapper" class="title">Class ThriftHBaseServiceHandler.ResultScannerWrapper</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler.ResultScannerWrapper</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dd>
+</dl>
+<hr>
+<br>
+<pre>protected static class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#line.1294">ThriftHBaseServiceHandler.ResultScannerWrapper</a>
+extends <a href="https://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>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html#scanner">scanner</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html#sortColumns">sortColumns</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<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>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html#ResultScannerWrapper-org.apache.hadoop.hbase.client.ResultScanner-boolean-">ResultScannerWrapper</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a>&nbsp;resultScanner,
+                    boolean&nbsp;sortResultColumns)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html#getScanner--">getScanner</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html#isColumnSorted--">isColumnSorted</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="scanner">
+<!--   -->
+</a>
+<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/ThriftHBaseServiceHandler.ResultScannerWrapper.html#line.1296">scanner</a></pre>
+</li>
+</ul>
+<a name="sortColumns">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>sortColumns</h4>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html#line.1297">sortColumns</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="ResultScannerWrapper-org.apache.hadoop.hbase.client.ResultScanner-boolean-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ResultScannerWrapper</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html#line.1298">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>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getScanner--">
+<!--   -->
+</a>
+<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/ThriftHBaseServiceHandler.ResultScannerWrapper.html#line.1304">getScanner</a>()</pre>
+</li>
+</ul>
+<a name="isColumnSorted--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>isColumnSorted</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html#line.1308">isColumnSorted</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ThriftHBaseServiceHandler.ResultScannerWrapper.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" target="_top">Frames</a></li>
+<li><a href="ThriftHBaseServiceHandler.ResultScannerWrapper.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>


[19/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html
new file mode 100644
index 0000000..5b5b199
--- /dev/null
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html
@@ -0,0 +1,1419 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> *<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
+<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
+<span class="sourceLineNo">012</span> *<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
+<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
+<span class="sourceLineNo">018</span> */<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>package org.apache.hadoop.hbase.thrift;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.thrift.Constants.COALESCE_INC_KEY;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.util.Bytes.getBytes;<a name="line.23"></a>
+<span class="sourceLineNo">024</span><a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.IOException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.nio.ByteBuffer;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.ArrayList;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.Collections;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.HashMap;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.List;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.Map;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.TreeMap;<a name="line.32"></a>
+<span class="sourceLineNo">033</span><a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.conf.Configuration;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.Cell;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.CellBuilder;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.CellBuilderFactory;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.HConstants;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.ServerName;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.TableName;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.client.Append;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.client.Get;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.client.OperationWithAttributes;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.client.Put;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.Result;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.client.Table;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.filter.ParseFilter;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.filter.PrefixFilter;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.filter.WhileMatchFilter;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.thrift.generated.AlreadyExists;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.thrift.generated.BatchMutation;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.thrift.generated.ColumnDescriptor;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.thrift.generated.Hbase;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.thrift.generated.IOError;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.thrift.generated.IllegalArgument;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.thrift.generated.Mutation;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.thrift.generated.TAppend;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.thrift.generated.TCell;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.thrift.generated.TIncrement;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.thrift.generated.TRegionInfo;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.thrift.generated.TRowResult;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.thrift.generated.TScan;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.thrift.TException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.slf4j.Logger;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.slf4j.LoggerFactory;<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<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> * The HBaseServiceHandler is a glue object that connects Thrift RPC calls to the<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * HBase client API primarily defined in the Admin and Table objects.<a name="line.90"></a>
+<span class="sourceLineNo">091</span> */<a name="line.91"></a>
+<span class="sourceLineNo">092</span>@InterfaceAudience.Private<a name="line.92"></a>
+<span class="sourceLineNo">093</span>@SuppressWarnings("deprecation")<a name="line.93"></a>
+<span class="sourceLineNo">094</span>public class ThriftHBaseServiceHandler extends HBaseServiceHandler implements Hbase.Iface {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private static final Logger LOG = LoggerFactory.getLogger(ThriftHBaseServiceHandler.class);<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  public static final int HREGION_VERSION = 1;<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>  // nextScannerId and scannerMap are used to manage scanner state<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  private int nextScannerId = 0;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  private HashMap&lt;Integer, ResultScannerWrapper&gt; scannerMap;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  IncrementCoalescer coalescer;<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>   * Returns a list of all the column families for a given Table.<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   *<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @param table table<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @throws IOException<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   */<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  byte[][] getAllColumns(Table table) throws IOException {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    HColumnDescriptor[] cds = table.getTableDescriptor().getColumnFamilies();<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    byte[][] columns = new byte[cds.length][];<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    for (int i = 0; i &lt; cds.length; i++) {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      columns[i] = Bytes.add(cds[i].getName(),<a name="line.114"></a>
+<span class="sourceLineNo">115</span>          KeyValue.COLUMN_FAMILY_DELIM_ARRAY);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    }<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    return columns;<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>  /**<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * Assigns a unique ID to the scanner and adds the mapping to an internal<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   * hash-map.<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   *<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   * @param scanner the {@link ResultScanner} to add<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   * @return integer scanner id<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  protected synchronized int addScanner(ResultScanner scanner, boolean sortColumns) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    int id = nextScannerId++;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    ResultScannerWrapper resultScannerWrapper =<a name="line.130"></a>
+<span class="sourceLineNo">131</span>        new ResultScannerWrapper(scanner, sortColumns);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    scannerMap.put(id, resultScannerWrapper);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    return id;<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>   * Returns the scanner associated with the specified ID.<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   *<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * @param id the ID of the scanner to get<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   * @return a Scanner, or null if ID was invalid.<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   */<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  private synchronized ResultScannerWrapper getScanner(int id) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    return scannerMap.get(id);<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>   * Removes the scanner associated with the specified ID from the internal<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * id-&amp;gt;scanner hash-map.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   *<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   * @param id the ID of the scanner to remove<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * @return a Scanner, or null if ID was invalid.<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private synchronized ResultScannerWrapper removeScanner(int id) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    return scannerMap.remove(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>
+<span class="sourceLineNo">157</span>  protected ThriftHBaseServiceHandler(final Configuration c,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      final UserProvider userProvider) throws IOException {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    super(c, userProvider);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    scannerMap = new HashMap&lt;&gt;();<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    this.coalescer = new IncrementCoalescer(this);<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><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  @Override<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  public void enableTable(ByteBuffer tableName) throws IOError {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    try{<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      getAdmin().enableTable(getTableName(tableName));<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    } catch (IOException e) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      LOG.warn(e.getMessage(), e);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      throw getIOError(e);<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>  @Override<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  public void disableTable(ByteBuffer tableName) throws IOError{<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    try{<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      getAdmin().disableTable(getTableName(tableName));<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    } catch (IOException e) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      LOG.warn(e.getMessage(), e);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      throw getIOError(e);<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><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @Override<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public boolean isTableEnabled(ByteBuffer tableName) throws IOError {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    try {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      return this.connectionCache.getAdmin().isTableEnabled(getTableName(tableName));<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    } catch (IOException e) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      LOG.warn(e.getMessage(), e);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      throw getIOError(e);<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><a name="line.194"></a>
+<span class="sourceLineNo">195</span>  // ThriftServerRunner.compact should be deprecated and replaced with methods specific to<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  // table and region.<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  @Override<a name="line.197"></a>
+<span class="sourceLineNo">198</span>  public void compact(ByteBuffer tableNameOrRegionName) throws IOError {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    try {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      try {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        getAdmin().compactRegion(getBytes(tableNameOrRegionName));<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      } catch (IllegalArgumentException e) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>        // Invalid region, try table<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        getAdmin().compact(TableName.valueOf(getBytes(tableNameOrRegionName)));<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      }<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    } catch (IOException e) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      LOG.warn(e.getMessage(), e);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      throw getIOError(e);<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><a name="line.211"></a>
+<span class="sourceLineNo">212</span>  // ThriftServerRunner.majorCompact should be deprecated and replaced with methods specific<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  // to table and region.<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  @Override<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  public void majorCompact(ByteBuffer tableNameOrRegionName) throws IOError {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    try {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      try {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        getAdmin().compactRegion(getBytes(tableNameOrRegionName));<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      } catch (IllegalArgumentException e) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        // Invalid region, try table<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        getAdmin().compact(TableName.valueOf(getBytes(tableNameOrRegionName)));<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    } catch (IOException e) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      LOG.warn(e.getMessage(), e);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      throw getIOError(e);<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>  @Override<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  public List&lt;ByteBuffer&gt; getTableNames() throws IOError {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    try {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      TableName[] tableNames = this.getAdmin().listTableNames();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      ArrayList&lt;ByteBuffer&gt; list = new ArrayList&lt;&gt;(tableNames.length);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      for (TableName tableName : tableNames) {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        list.add(ByteBuffer.wrap(tableName.getName()));<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      }<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      return list;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    } catch (IOException e) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      LOG.warn(e.getMessage(), e);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      throw getIOError(e);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    }<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  }<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>   * @return the list of regions in the given table, or an empty list if the table does not exist<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 List&lt;TRegionInfo&gt; getTableRegions(ByteBuffer tableName) throws IOError {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    try (RegionLocator locator = connectionCache.getRegionLocator(getBytes(tableName))) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      List&lt;HRegionLocation&gt; regionLocations = locator.getAllRegionLocations();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      List&lt;TRegionInfo&gt; results = new ArrayList&lt;&gt;(regionLocations.size());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      for (HRegionLocation regionLocation : regionLocations) {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        RegionInfo info = regionLocation.getRegionInfo();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        ServerName serverName = regionLocation.getServerName();<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        TRegionInfo region = new TRegionInfo();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        region.serverName = ByteBuffer.wrap(<a name="line.256"></a>
+<span class="sourceLineNo">257</span>            Bytes.toBytes(serverName.getHostname()));<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        region.port = serverName.getPort();<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        region.startKey = ByteBuffer.wrap(info.getStartKey());<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        region.endKey = ByteBuffer.wrap(info.getEndKey());<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        region.id = info.getRegionId();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        region.name = ByteBuffer.wrap(info.getRegionName());<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        region.version = HREGION_VERSION; // HRegion now not versioned, PB encoding used<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        results.add(region);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      return results;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    } catch (TableNotFoundException e) {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      // Return empty list for non-existing table<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      return Collections.emptyList();<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    } catch (IOException e){<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      LOG.warn(e.getMessage(), e);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      throw getIOError(e);<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>  @Override<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  public List&lt;TCell&gt; get(<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      ByteBuffer tableName, ByteBuffer row, ByteBuffer column,<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      throws IOError {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    byte [][] famAndQf = CellUtil.parseColumn(getBytes(column));<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    if (famAndQf.length == 1) {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      return get(tableName, row, famAndQf[0], null, attributes);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    if (famAndQf.length == 2) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      return get(tableName, row, famAndQf[0], famAndQf[1], attributes);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    }<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    throw new IllegalArgumentException("Invalid familyAndQualifier provided.");<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>   * Note: this internal interface is slightly different from public APIs in regard to handling<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   * of the qualifier. Here we differ from the public Java API in that null != byte[0]. Rather,<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   * we respect qual == null as a request for the entire column family. The caller (<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   * {@link #get(ByteBuffer, ByteBuffer, ByteBuffer, Map)}) interface IS consistent in that the<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   * column is parse like normal.<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   */<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  protected List&lt;TCell&gt; get(ByteBuffer tableName,<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      ByteBuffer row,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      byte[] family,<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      byte[] qualifier,<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    Table table = null;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    try {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      table = getTable(tableName);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      Get get = new Get(getBytes(row));<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      addAttributes(get, attributes);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      if (qualifier == null) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        get.addFamily(family);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      } else {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        get.addColumn(family, qualifier);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      }<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      Result result = table.get(get);<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      return ThriftUtilities.cellFromHBase(result.rawCells());<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    } catch (IOException e) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      LOG.warn(e.getMessage(), e);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      throw getIOError(e);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    } finally {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      closeTable(table);<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>  @Override<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  public List&lt;TCell&gt; getVer(ByteBuffer tableName, ByteBuffer row, ByteBuffer column,<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      int numVersions, Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    byte [][] famAndQf = CellUtil.parseColumn(getBytes(column));<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    if(famAndQf.length == 1) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      return getVer(tableName, row, famAndQf[0], null, numVersions, attributes);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    }<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    if (famAndQf.length == 2) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      return getVer(tableName, row, famAndQf[0], famAndQf[1], numVersions, attributes);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    throw new IllegalArgumentException("Invalid familyAndQualifier provided.");<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><a name="line.336"></a>
+<span class="sourceLineNo">337</span>  /**<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * Note: this public interface is slightly different from public Java APIs in regard to<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * handling of the qualifier. Here we differ from the public Java API in that null != byte[0].<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * Rather, we respect qual == null as a request for the entire column family. If you want to<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * access the entire column family, use<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * {@link #getVer(ByteBuffer, ByteBuffer, ByteBuffer, int, Map)} with a {@code column} value<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   * that lacks a {@code ':'}.<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   */<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  public List&lt;TCell&gt; getVer(ByteBuffer tableName, ByteBuffer row, byte[] family,<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      byte[] qualifier, int numVersions, Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>    Table table = null;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    try {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      table = getTable(tableName);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      Get get = new Get(getBytes(row));<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      addAttributes(get, attributes);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      if (null == qualifier) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        get.addFamily(family);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      } else {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        get.addColumn(family, qualifier);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      }<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      get.setMaxVersions(numVersions);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      Result result = table.get(get);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      return ThriftUtilities.cellFromHBase(result.rawCells());<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    } catch (IOException e) {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      LOG.warn(e.getMessage(), e);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      throw getIOError(e);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    } finally{<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      closeTable(table);<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>  @Override<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  public List&lt;TCell&gt; getVerTs(ByteBuffer tableName, ByteBuffer row, ByteBuffer column,<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      long timestamp, int numVersions, Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    byte [][] famAndQf = CellUtil.parseColumn(getBytes(column));<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    if (famAndQf.length == 1) {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      return getVerTs(tableName, row, famAndQf[0], null, timestamp, numVersions, attributes);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    }<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    if (famAndQf.length == 2) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      return getVerTs(tableName, row, famAndQf[0], famAndQf[1], timestamp, numVersions,<a name="line.377"></a>
+<span class="sourceLineNo">378</span>          attributes);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    }<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    throw new IllegalArgumentException("Invalid familyAndQualifier provided.");<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  }<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>   * Note: this internal interface is slightly different from public APIs in regard to handling<a name="line.384"></a>
+<span class="sourceLineNo">385</span>   * of the qualifier. Here we differ from the public Java API in that null != byte[0]. Rather,<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * we respect qual == null as a request for the entire column family. The caller (<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * {@link #getVerTs(ByteBuffer, ByteBuffer, ByteBuffer, long, int, Map)}) interface IS<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * consistent in that the column is parse like normal.<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   */<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  protected List&lt;TCell&gt; getVerTs(ByteBuffer tableName, ByteBuffer row, byte[] family,<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      byte[] qualifier, long timestamp, int numVersions, Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      throws IOError {<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span>    Table table = null;<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    try {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      table = getTable(tableName);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      Get get = new Get(getBytes(row));<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      addAttributes(get, attributes);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      if (null == qualifier) {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        get.addFamily(family);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      } else {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        get.addColumn(family, qualifier);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      get.setTimeRange(0, timestamp);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      get.setMaxVersions(numVersions);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      Result result = table.get(get);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      return ThriftUtilities.cellFromHBase(result.rawCells());<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    } catch (IOException e) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      LOG.warn(e.getMessage(), e);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      throw getIOError(e);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    } finally{<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      closeTable(table);<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>  @Override<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  public List&lt;TRowResult&gt; getRow(ByteBuffer tableName, ByteBuffer row,<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    return getRowWithColumnsTs(tableName, row, null,<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        HConstants.LATEST_TIMESTAMP,<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        attributes);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  }<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>  @Override<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  public List&lt;TRowResult&gt; getRowWithColumns(ByteBuffer tableName,<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      ByteBuffer row,<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      List&lt;ByteBuffer&gt; columns,<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    return getRowWithColumnsTs(tableName, row, columns,<a name="line.429"></a>
+<span class="sourceLineNo">430</span>        HConstants.LATEST_TIMESTAMP,<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        attributes);<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>  @Override<a name="line.434"></a>
+<span class="sourceLineNo">435</span>  public List&lt;TRowResult&gt; getRowTs(ByteBuffer tableName, ByteBuffer row,<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      long timestamp, Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    return getRowWithColumnsTs(tableName, row, null,<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        timestamp, attributes);<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>  @Override<a name="line.441"></a>
+<span class="sourceLineNo">442</span>  public List&lt;TRowResult&gt; getRowWithColumnsTs(<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      ByteBuffer tableName, ByteBuffer row, List&lt;ByteBuffer&gt; columns,<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      long timestamp, Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.444"></a>
+<span class="sourceLineNo">445</span><a name="line.445"></a>
+<span class="sourceLineNo">446</span>    Table table = null;<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    try {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      table = getTable(tableName);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      if (columns == null) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>        Get get = new Get(getBytes(row));<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        addAttributes(get, attributes);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>        get.setTimeRange(0, timestamp);<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        Result result = table.get(get);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        return ThriftUtilities.rowResultFromHBase(result);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      Get get = new Get(getBytes(row));<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      addAttributes(get, attributes);<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      for(ByteBuffer column : columns) {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>        byte [][] famAndQf = CellUtil.parseColumn(getBytes(column));<a name="line.459"></a>
+<span class="sourceLineNo">460</span>        if (famAndQf.length == 1) {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>          get.addFamily(famAndQf[0]);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>        } else {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>          get.addColumn(famAndQf[0], famAndQf[1]);<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>      get.setTimeRange(0, timestamp);<a name="line.466"></a>
+<span class="sourceLineNo">467</span>      Result result = table.get(get);<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      return ThriftUtilities.rowResultFromHBase(result);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    } catch (IOException e) {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      LOG.warn(e.getMessage(), e);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      throw getIOError(e);<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    } finally{<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      closeTable(table);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
+<span class="sourceLineNo">475</span>  }<a name="line.475"></a>
+<span class="sourceLineNo">476</span><a name="line.476"></a>
+<span class="sourceLineNo">477</span>  @Override<a name="line.477"></a>
+<span class="sourceLineNo">478</span>  public List&lt;TRowResult&gt; getRows(ByteBuffer tableName,<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      List&lt;ByteBuffer&gt; rows,<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.480"></a>
+<span class="sourceLineNo">481</span>      throws IOError {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    return getRowsWithColumnsTs(tableName, rows, null,<a name="line.482"></a>
+<span class="sourceLineNo">483</span>        HConstants.LATEST_TIMESTAMP,<a name="line.483"></a>
+<span class="sourceLineNo">484</span>        attributes);<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>  @Override<a name="line.487"></a>
+<span class="sourceLineNo">488</span>  public List&lt;TRowResult&gt; getRowsWithColumns(ByteBuffer tableName,<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      List&lt;ByteBuffer&gt; rows,<a name="line.489"></a>
+<span class="sourceLineNo">490</span>      List&lt;ByteBuffer&gt; columns,<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    return getRowsWithColumnsTs(tableName, rows, columns,<a name="line.492"></a>
+<span class="sourceLineNo">493</span>        HConstants.LATEST_TIMESTAMP,<a name="line.493"></a>
+<span class="sourceLineNo">494</span>        attributes);<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>  @Override<a name="line.497"></a>
+<span class="sourceLineNo">498</span>  public List&lt;TRowResult&gt; getRowsTs(ByteBuffer tableName,<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      List&lt;ByteBuffer&gt; rows,<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      long timestamp,<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    return getRowsWithColumnsTs(tableName, rows, null,<a name="line.502"></a>
+<span class="sourceLineNo">503</span>        timestamp, attributes);<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>  @Override<a name="line.506"></a>
+<span class="sourceLineNo">507</span>  public List&lt;TRowResult&gt; getRowsWithColumnsTs(ByteBuffer tableName,<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      List&lt;ByteBuffer&gt; rows,<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      List&lt;ByteBuffer&gt; columns, long timestamp,<a name="line.509"></a>
+<span class="sourceLineNo">510</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.510"></a>
+<span class="sourceLineNo">511</span><a name="line.511"></a>
+<span class="sourceLineNo">512</span>    Table table= null;<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    try {<a name="line.513"></a>
+<span class="sourceLineNo">514</span>      List&lt;Get&gt; gets = new ArrayList&lt;&gt;(rows.size());<a name="line.514"></a>
+<span class="sourceLineNo">515</span>      table = getTable(tableName);<a name="line.515"></a>
+<span class="sourceLineNo">516</span>      if (metrics != null) {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>        metrics.incNumRowKeysInBatchGet(rows.size());<a name="line.517"></a>
+<span class="sourceLineNo">518</span>      }<a name="line.518"></a>
+<span class="sourceLineNo">519</span>      for (ByteBuffer row : rows) {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>        Get get = new Get(getBytes(row));<a name="line.520"></a>
+<span class="sourceLineNo">521</span>        addAttributes(get, attributes);<a name="line.521"></a>
+<span class="sourceLineNo">522</span>        if (columns != null) {<a name="line.522"></a>
+<span class="sourceLineNo">523</span><a name="line.523"></a>
+<span class="sourceLineNo">524</span>          for(ByteBuffer column : columns) {<a name="line.524"></a>
+<span class="sourceLineNo">525</span>            byte [][] famAndQf = CellUtil.parseColumn(getBytes(column));<a name="line.525"></a>
+<span class="sourceLineNo">526</span>            if (famAndQf.length == 1) {<a name="line.526"></a>
+<span class="sourceLineNo">527</span>              get.addFamily(famAndQf[0]);<a name="line.527"></a>
+<span class="sourceLineNo">528</span>            } else {<a name="line.528"></a>
+<span class="sourceLineNo">529</span>              get.addColumn(famAndQf[0], famAndQf[1]);<a name="line.529"></a>
+<span class="sourceLineNo">530</span>            }<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>        get.setTimeRange(0, timestamp);<a name="line.533"></a>
+<span class="sourceLineNo">534</span>        gets.add(get);<a name="line.534"></a>
+<span class="sourceLineNo">535</span>      }<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      Result[] result = table.get(gets);<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      return ThriftUtilities.rowResultFromHBase(result);<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    } catch (IOException e) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>      LOG.warn(e.getMessage(), e);<a name="line.539"></a>
+<span class="sourceLineNo">540</span>      throw getIOError(e);<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    } finally{<a name="line.541"></a>
+<span class="sourceLineNo">542</span>      closeTable(table);<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><a name="line.545"></a>
+<span class="sourceLineNo">546</span>  @Override<a name="line.546"></a>
+<span class="sourceLineNo">547</span>  public void deleteAll(<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      ByteBuffer tableName, ByteBuffer row, ByteBuffer column,<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      throws IOError {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    deleteAllTs(tableName, row, column, HConstants.LATEST_TIMESTAMP,<a name="line.551"></a>
+<span class="sourceLineNo">552</span>        attributes);<a name="line.552"></a>
+<span class="sourceLineNo">553</span>  }<a name="line.553"></a>
+<span class="sourceLineNo">554</span><a name="line.554"></a>
+<span class="sourceLineNo">555</span>  @Override<a name="line.555"></a>
+<span class="sourceLineNo">556</span>  public void deleteAllTs(ByteBuffer tableName,<a name="line.556"></a>
+<span class="sourceLineNo">557</span>      ByteBuffer row,<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      ByteBuffer column,<a name="line.558"></a>
+<span class="sourceLineNo">559</span>      long timestamp, Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    Table table = null;<a name="line.560"></a>
+<span class="sourceLineNo">561</span>    try {<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      table = getTable(tableName);<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      Delete delete  = new Delete(getBytes(row));<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      addAttributes(delete, attributes);<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      byte [][] famAndQf = CellUtil.parseColumn(getBytes(column));<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      if (famAndQf.length == 1) {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>        delete.addFamily(famAndQf[0], timestamp);<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      } else {<a name="line.568"></a>
+<span class="sourceLineNo">569</span>        delete.addColumns(famAndQf[0], famAndQf[1], timestamp);<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      }<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      table.delete(delete);<a name="line.571"></a>
+<span class="sourceLineNo">572</span><a name="line.572"></a>
+<span class="sourceLineNo">573</span>    } catch (IOException e) {<a name="line.573"></a>
+<span class="sourceLineNo">574</span>      LOG.warn(e.getMessage(), e);<a name="line.574"></a>
+<span class="sourceLineNo">575</span>      throw getIOError(e);<a name="line.575"></a>
+<span class="sourceLineNo">576</span>    } finally {<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      closeTable(table);<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>  @Override<a name="line.581"></a>
+<span class="sourceLineNo">582</span>  public void deleteAllRow(<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      ByteBuffer tableName, ByteBuffer row,<a name="line.583"></a>
+<span class="sourceLineNo">584</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>    deleteAllRowTs(tableName, row, HConstants.LATEST_TIMESTAMP, attributes);<a name="line.585"></a>
+<span class="sourceLineNo">586</span>  }<a name="line.586"></a>
+<span class="sourceLineNo">587</span><a name="line.587"></a>
+<span class="sourceLineNo">588</span>  @Override<a name="line.588"></a>
+<span class="sourceLineNo">589</span>  public void deleteAllRowTs(<a name="line.589"></a>
+<span class="sourceLineNo">590</span>      ByteBuffer tableName, ByteBuffer row, long timestamp,<a name="line.590"></a>
+<span class="sourceLineNo">591</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.591"></a>
+<span class="sourceLineNo">592</span>    Table table = null;<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    try {<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      table = getTable(tableName);<a name="line.594"></a>
+<span class="sourceLineNo">595</span>      Delete delete  = new Delete(getBytes(row), timestamp);<a name="line.595"></a>
+<span class="sourceLineNo">596</span>      addAttributes(delete, attributes);<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      table.delete(delete);<a name="line.597"></a>
+<span class="sourceLineNo">598</span>    } catch (IOException e) {<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      LOG.warn(e.getMessage(), e);<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      throw getIOError(e);<a name="line.600"></a>
+<span class="sourceLineNo">601</span>    } finally {<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      closeTable(table);<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    }<a name="line.603"></a>
+<span class="sourceLineNo">604</span>  }<a name="line.604"></a>
+<span class="sourceLineNo">605</span><a name="line.605"></a>
+<span class="sourceLineNo">606</span>  @Override<a name="line.606"></a>
+<span class="sourceLineNo">607</span>  public void createTable(ByteBuffer in_tableName,<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      List&lt;ColumnDescriptor&gt; columnFamilies) throws IOError, IllegalArgument, AlreadyExists {<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    TableName tableName = getTableName(in_tableName);<a name="line.609"></a>
+<span class="sourceLineNo">610</span>    try {<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      if (getAdmin().tableExists(tableName)) {<a name="line.611"></a>
+<span class="sourceLineNo">612</span>        throw new AlreadyExists("table name already in use");<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      }<a name="line.613"></a>
+<span class="sourceLineNo">614</span>      HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      for (ColumnDescriptor col : columnFamilies) {<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        HColumnDescriptor colDesc = ThriftUtilities.colDescFromThrift(col);<a name="line.616"></a>
+<span class="sourceLineNo">617</span>        desc.addFamily(colDesc);<a name="line.617"></a>
+<span class="sourceLineNo">618</span>      }<a name="line.618"></a>
+<span class="sourceLineNo">619</span>      getAdmin().createTable(desc);<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    } catch (IOException e) {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>      LOG.warn(e.getMessage(), e);<a name="line.621"></a>
+<span class="sourceLineNo">622</span>      throw getIOError(e);<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    } catch (IllegalArgumentException e) {<a name="line.623"></a>
+<span class="sourceLineNo">624</span>      LOG.warn(e.getMessage(), e);<a name="line.624"></a>
+<span class="sourceLineNo">625</span>      throw new IllegalArgument(Throwables.getStackTraceAsString(e));<a name="line.625"></a>
+<span class="sourceLineNo">626</span>    }<a name="line.626"></a>
+<span class="sourceLineNo">627</span>  }<a name="line.627"></a>
+<span class="sourceLineNo">628</span><a name="line.628"></a>
+<span class="sourceLineNo">629</span>  private static TableName getTableName(ByteBuffer buffer) {<a name="line.629"></a>
+<span class="sourceLineNo">630</span>    return TableName.valueOf(getBytes(buffer));<a name="line.630"></a>
+<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
+<span class="sourceLineNo">632</span><a name="line.632"></a>
+<span class="sourceLineNo">633</span>  @Override<a name="line.633"></a>
+<span class="sourceLineNo">634</span>  public void deleteTable(ByteBuffer in_tableName) throws IOError {<a name="line.634"></a>
+<span class="sourceLineNo">635</span>    TableName tableName = getTableName(in_tableName);<a name="line.635"></a>
+<span class="sourceLineNo">636</span>    if (LOG.isDebugEnabled()) {<a name="line.636"></a>
+<span class="sourceLineNo">637</span>      LOG.debug("deleteTable: table={}", tableName);<a name="line.637"></a>
+<span class="sourceLineNo">638</span>    }<a name="line.638"></a>
+<span class="sourceLineNo">639</span>    try {<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      if (!getAdmin().tableExists(tableName)) {<a name="line.640"></a>
+<span class="sourceLineNo">641</span>        throw new IOException("table does not exist");<a name="line.641"></a>
+<span class="sourceLineNo">642</span>      }<a name="line.642"></a>
+<span class="sourceLineNo">643</span>      getAdmin().deleteTable(tableName);<a name="line.643"></a>
+<span class="sourceLineNo">644</span>    } catch (IOException e) {<a name="line.644"></a>
+<span class="sourceLineNo">645</span>      LOG.warn(e.getMessage(), e);<a name="line.645"></a>
+<span class="sourceLineNo">646</span>      throw getIOError(e);<a name="line.646"></a>
+<span class="sourceLineNo">647</span>    }<a name="line.647"></a>
+<span class="sourceLineNo">648</span>  }<a name="line.648"></a>
+<span class="sourceLineNo">649</span><a name="line.649"></a>
+<span class="sourceLineNo">650</span>  @Override<a name="line.650"></a>
+<span class="sourceLineNo">651</span>  public void mutateRow(ByteBuffer tableName, ByteBuffer row,<a name="line.651"></a>
+<span class="sourceLineNo">652</span>      List&lt;Mutation&gt; mutations, Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.652"></a>
+<span class="sourceLineNo">653</span>      throws IOError, IllegalArgument {<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    mutateRowTs(tableName, row, mutations, HConstants.LATEST_TIMESTAMP, attributes);<a name="line.654"></a>
+<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
+<span class="sourceLineNo">656</span><a name="line.656"></a>
+<span class="sourceLineNo">657</span>  @Override<a name="line.657"></a>
+<span class="sourceLineNo">658</span>  public void mutateRowTs(ByteBuffer tableName, ByteBuffer row,<a name="line.658"></a>
+<span class="sourceLineNo">659</span>      List&lt;Mutation&gt; mutations, long timestamp,<a name="line.659"></a>
+<span class="sourceLineNo">660</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.660"></a>
+<span class="sourceLineNo">661</span>      throws IOError, IllegalArgument {<a name="line.661"></a>
+<span class="sourceLineNo">662</span>    Table table = null;<a name="line.662"></a>
+<span class="sourceLineNo">663</span>    try {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>      table = getTable(tableName);<a name="line.664"></a>
+<span class="sourceLineNo">665</span>      Put put = new Put(getBytes(row), timestamp);<a name="line.665"></a>
+<span class="sourceLineNo">666</span>      addAttributes(put, attributes);<a name="line.666"></a>
+<span class="sourceLineNo">667</span><a name="line.667"></a>
+<span class="sourceLineNo">668</span>      Delete delete = new Delete(getBytes(row));<a name="line.668"></a>
+<span class="sourceLineNo">669</span>      addAttributes(delete, attributes);<a name="line.669"></a>
+<span class="sourceLineNo">670</span>      if (metrics != null) {<a name="line.670"></a>
+<span class="sourceLineNo">671</span>        metrics.incNumRowKeysInBatchMutate(mutations.size());<a name="line.671"></a>
+<span class="sourceLineNo">672</span>      }<a name="line.672"></a>
+<span class="sourceLineNo">673</span><a name="line.673"></a>
+<span class="sourceLineNo">674</span>      // I apologize for all this mess :)<a name="line.674"></a>
+<span class="sourceLineNo">675</span>      CellBuilder builder = CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY);<a name="line.675"></a>
+<span class="sourceLineNo">676</span>      for (Mutation m : mutations) {<a name="line.676"></a>
+<span class="sourceLineNo">677</span>        byte[][] famAndQf = CellUtil.parseColumn(getBytes(m.column));<a name="line.677"></a>
+<span class="sourceLineNo">678</span>        if (m.isDelete) {<a name="line.678"></a>
+<span class="sourceLineNo">679</span>          if (famAndQf.length == 1) {<a name="line.679"></a>
+<span class="sourceLineNo">680</span>            delete.addFamily(famAndQf[0], timestamp);<a name="line.680"></a>
+<span class="sourceLineNo">681</span>          } else {<a name="line.681"></a>
+<span class="sourceLineNo">682</span>            delete.addColumns(famAndQf[0], famAndQf[1], timestamp);<a name="line.682"></a>
+<span class="sourceLineNo">683</span>          }<a name="line.683"></a>
+<span class="sourceLineNo">684</span>          delete.setDurability(m.writeToWAL ? Durability.SYNC_WAL : Durability.SKIP_WAL);<a name="line.684"></a>
+<span class="sourceLineNo">685</span>        } else {<a name="line.685"></a>
+<span class="sourceLineNo">686</span>          if(famAndQf.length == 1) {<a name="line.686"></a>
+<span class="sourceLineNo">687</span>            LOG.warn("No column qualifier specified. Delete is the only mutation supported "<a name="line.687"></a>
+<span class="sourceLineNo">688</span>                + "over the whole column family.");<a name="line.688"></a>
+<span class="sourceLineNo">689</span>          } else {<a name="line.689"></a>
+<span class="sourceLineNo">690</span>            put.add(builder.clear()<a name="line.690"></a>
+<span class="sourceLineNo">691</span>                .setRow(put.getRow())<a name="line.691"></a>
+<span class="sourceLineNo">692</span>                .setFamily(famAndQf[0])<a name="line.692"></a>
+<span class="sourceLineNo">693</span>                .setQualifier(famAndQf[1])<a name="line.693"></a>
+<span class="sourceLineNo">694</span>                .setTimestamp(put.getTimestamp())<a name="line.694"></a>
+<span class="sourceLineNo">695</span>                .setType(Cell.Type.Put)<a name="line.695"></a>
+<span class="sourceLineNo">696</span>                .setValue(m.value != null ? getBytes(m.value)<a name="line.696"></a>
+<span class="sourceLineNo">697</span>                    : HConstants.EMPTY_BYTE_ARRAY)<a name="line.697"></a>
+<span class="sourceLineNo">698</span>                .build());<a name="line.698"></a>
+<span class="sourceLineNo">699</span>          }<a name="line.699"></a>
+<span class="sourceLineNo">700</span>          put.setDurability(m.writeToWAL ? Durability.SYNC_WAL : Durability.SKIP_WAL);<a name="line.700"></a>
+<span class="sourceLineNo">701</span>        }<a name="line.701"></a>
+<span class="sourceLineNo">702</span>      }<a name="line.702"></a>
+<span class="sourceLineNo">703</span>      if (!delete.isEmpty()) {<a name="line.703"></a>
+<span class="sourceLineNo">704</span>        table.delete(delete);<a name="line.704"></a>
+<span class="sourceLineNo">705</span>      }<a name="line.705"></a>
+<span class="sourceLineNo">706</span>      if (!put.isEmpty()) {<a name="line.706"></a>
+<span class="sourceLineNo">707</span>        table.put(put);<a name="line.707"></a>
+<span class="sourceLineNo">708</span>      }<a name="line.708"></a>
+<span class="sourceLineNo">709</span>    } catch (IOException e) {<a name="line.709"></a>
+<span class="sourceLineNo">710</span>      LOG.warn(e.getMessage(), e);<a name="line.710"></a>
+<span class="sourceLineNo">711</span>      throw getIOError(e);<a name="line.711"></a>
+<span class="sourceLineNo">712</span>    } catch (IllegalArgumentException e) {<a name="line.712"></a>
+<span class="sourceLineNo">713</span>      LOG.warn(e.getMessage(), e);<a name="line.713"></a>
+<span class="sourceLineNo">714</span>      throw new IllegalArgument(Throwables.getStackTraceAsString(e));<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    } finally{<a name="line.715"></a>
+<span class="sourceLineNo">716</span>      closeTable(table);<a name="line.716"></a>
+<span class="sourceLineNo">717</span>    }<a name="line.717"></a>
+<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
+<span class="sourceLineNo">719</span><a name="line.719"></a>
+<span class="sourceLineNo">720</span>  @Override<a name="line.720"></a>
+<span class="sourceLineNo">721</span>  public void mutateRows(ByteBuffer tableName, List&lt;BatchMutation&gt; rowBatches,<a name="line.721"></a>
+<span class="sourceLineNo">722</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.722"></a>
+<span class="sourceLineNo">723</span>      throws IOError, IllegalArgument, TException {<a name="line.723"></a>
+<span class="sourceLineNo">724</span>    mutateRowsTs(tableName, rowBatches, HConstants.LATEST_TIMESTAMP, attributes);<a name="line.724"></a>
+<span class="sourceLineNo">725</span>  }<a name="line.725"></a>
+<span class="sourceLineNo">726</span><a name="line.726"></a>
+<span class="sourceLineNo">727</span>  @Override<a name="line.727"></a>
+<span class="sourceLineNo">728</span>  public void mutateRowsTs(<a name="line.728"></a>
+<span class="sourceLineNo">729</span>      ByteBuffer tableName, List&lt;BatchMutation&gt; rowBatches, long timestamp,<a name="line.729"></a>
+<span class="sourceLineNo">730</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.730"></a>
+<span class="sourceLineNo">731</span>      throws IOError, IllegalArgument, TException {<a name="line.731"></a>
+<span class="sourceLineNo">732</span>    List&lt;Put&gt; puts = new ArrayList&lt;&gt;();<a name="line.732"></a>
+<span class="sourceLineNo">733</span>    List&lt;Delete&gt; deletes = new ArrayList&lt;&gt;();<a name="line.733"></a>
+<span class="sourceLineNo">734</span>    CellBuilder builder = CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY);<a name="line.734"></a>
+<span class="sourceLineNo">735</span>    for (BatchMutation batch : rowBatches) {<a name="line.735"></a>
+<span class="sourceLineNo">736</span>      byte[] row = getBytes(batch.row);<a name="line.736"></a>
+<span class="sourceLineNo">737</span>      List&lt;Mutation&gt; mutations = batch.mutations;<a name="line.737"></a>
+<span class="sourceLineNo">738</span>      Delete delete = new Delete(row);<a name="line.738"></a>
+<span class="sourceLineNo">739</span>      addAttributes(delete, attributes);<a name="line.739"></a>
+<span class="sourceLineNo">740</span>      Put put = new Put(row, timestamp);<a name="line.740"></a>
+<span class="sourceLineNo">741</span>      addAttributes(put, attributes);<a name="line.741"></a>
+<span class="sourceLineNo">742</span>      for (Mutation m : mutations) {<a name="line.742"></a>
+<span class="sourceLineNo">743</span>        byte[][] famAndQf = CellUtil.parseColumn(getBytes(m.column));<a name="line.743"></a>
+<span class="sourceLineNo">744</span>        if (m.isDelete) {<a name="line.744"></a>
+<span class="sourceLineNo">745</span>          // no qualifier, family only.<a name="line.745"></a>
+<span class="sourceLineNo">746</span>          if (famAndQf.length == 1) {<a name="line.746"></a>
+<span class="sourceLineNo">747</span>            delete.addFamily(famAndQf[0], timestamp);<a name="line.747"></a>
+<span class="sourceLineNo">748</span>          } else {<a name="line.748"></a>
+<span class="sourceLineNo">749</span>            delete.addColumns(famAndQf[0], famAndQf[1], timestamp);<a name="line.749"></a>
+<span class="sourceLineNo">750</span>          }<a name="line.750"></a>
+<span class="sourceLineNo">751</span>          delete.setDurability(m.writeToWAL ? Durability.SYNC_WAL<a name="line.751"></a>
+<span class="sourceLineNo">752</span>              : Durability.SKIP_WAL);<a name="line.752"></a>
+<span class="sourceLineNo">753</span>        } else {<a name="line.753"></a>
+<span class="sourceLineNo">754</span>          if (famAndQf.length == 1) {<a name="line.754"></a>
+<span class="sourceLineNo">755</span>            LOG.warn("No column qualifier specified. Delete is the only mutation supported "<a name="line.755"></a>
+<span class="sourceLineNo">756</span>                + "over the whole column family.");<a name="line.756"></a>
+<span class="sourceLineNo">757</span>          }<a name="line.757"></a>
+<span class="sourceLineNo">758</span>          if (famAndQf.length == 2) {<a name="line.758"></a>
+<span class="sourceLineNo">759</span>            try {<a name="line.759"></a>
+<span class="sourceLineNo">760</span>              put.add(builder.clear()<a name="line.760"></a>
+<span class="sourceLineNo">761</span>                  .setRow(put.getRow())<a name="line.761"></a>
+<span class="sourceLineNo">762</span>                  .setFamily(famAndQf[0])<a name="line.762"></a>
+<span class="sourceLineNo">763</span>                  .setQualifier(famAndQf[1])<a name="line.763"></a>
+<span class="sourceLineNo">764</span>                  .setTimestamp(put.getTimestamp())<a name="line.764"></a>
+<span class="sourceLineNo">765</span>                  .setType(Cell.Type.Put)<a name="line.765"></a>
+<span class="sourceLineNo">766</span>                  .setValue(m.value != null ? getBytes(m.value)<a name="line.766"></a>
+<span class="sourceLineNo">767</span>                      : HConstants.EMPTY_BYTE_ARRAY)<a name="line.767"></a>
+<span class="sourceLineNo">768</span>                  .build());<a name="line.768"></a>
+<span class="sourceLineNo">769</span>            } catch (IOException e) {<a name="line.769"></a>
+<span class="sourceLineNo">770</span>              throw new IllegalArgumentException(e);<a name="line.770"></a>
+<span class="sourceLineNo">771</span>            }<a name="line.771"></a>
+<span class="sourceLineNo">772</span>          } else {<a name="line.772"></a>
+<span class="sourceLineNo">773</span>            throw new IllegalArgumentException("Invalid famAndQf provided.");<a name="line.773"></a>
+<span class="sourceLineNo">774</span>          }<a name="line.774"></a>
+<span class="sourceLineNo">775</span>          put.setDurability(m.writeToWAL ? Durability.SYNC_WAL : Durability.SKIP_WAL);<a name="line.775"></a>
+<span class="sourceLineNo">776</span>        }<a name="line.776"></a>
+<span class="sourceLineNo">777</span>      }<a name="line.777"></a>
+<span class="sourceLineNo">778</span>      if (!delete.isEmpty()) {<a name="line.778"></a>
+<span class="sourceLineNo">779</span>        deletes.add(delete);<a name="line.779"></a>
+<span class="sourceLineNo">780</span>      }<a name="line.780"></a>
+<span class="sourceLineNo">781</span>      if (!put.isEmpty()) {<a name="line.781"></a>
+<span class="sourceLineNo">782</span>        puts.add(put);<a name="line.782"></a>
+<span class="sourceLineNo">783</span>      }<a name="line.783"></a>
+<span class="sourceLineNo">784</span>    }<a name="line.784"></a>
+<span class="sourceLineNo">785</span><a name="line.785"></a>
+<span class="sourceLineNo">786</span>    Table table = null;<a name="line.786"></a>
+<span class="sourceLineNo">787</span>    try {<a name="line.787"></a>
+<span class="sourceLineNo">788</span>      table = getTable(tableName);<a name="line.788"></a>
+<span class="sourceLineNo">789</span>      if (!puts.isEmpty()) {<a name="line.789"></a>
+<span class="sourceLineNo">790</span>        table.put(puts);<a name="line.790"></a>
+<span class="sourceLineNo">791</span>      }<a name="line.791"></a>
+<span class="sourceLineNo">792</span>      if (!deletes.isEmpty()) {<a name="line.792"></a>
+<span class="sourceLineNo">793</span>        table.delete(deletes);<a name="line.793"></a>
+<span class="sourceLineNo">794</span>      }<a name="line.794"></a>
+<span class="sourceLineNo">795</span>    } catch (IOException e) {<a name="line.795"></a>
+<span class="sourceLineNo">796</span>      LOG.warn(e.getMessage(), e);<a name="line.796"></a>
+<span class="sourceLineNo">797</span>      throw getIOError(e);<a name="line.797"></a>
+<span class="sourceLineNo">798</span>    } catch (IllegalArgumentException e) {<a name="line.798"></a>
+<span class="sourceLineNo">799</span>      LOG.warn(e.getMessage(), e);<a name="line.799"></a>
+<span class="sourceLineNo">800</span>      throw new IllegalArgument(Throwables.getStackTraceAsString(e));<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    } finally{<a name="line.801"></a>
+<span class="sourceLineNo">802</span>      closeTable(table);<a name="line.802"></a>
+<span class="sourceLineNo">803</span>    }<a name="line.803"></a>
+<span class="sourceLineNo">804</span>  }<a name="line.804"></a>
+<span class="sourceLineNo">805</span><a name="line.805"></a>
+<span class="sourceLineNo">806</span>  @Override<a name="line.806"></a>
+<span class="sourceLineNo">807</span>  public long atomicIncrement(<a name="line.807"></a>
+<span class="sourceLineNo">808</span>      ByteBuffer tableName, ByteBuffer row, ByteBuffer column, long amount)<a name="line.808"></a>
+<span class="sourceLineNo">809</span>      throws IOError, IllegalArgument, TException {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>    byte [][] famAndQf = CellUtil.parseColumn(getBytes(column));<a name="line.810"></a>
+<span class="sourceLineNo">811</span>    if(famAndQf.length == 1) {<a name="line.811"></a>
+<span class="sourceLineNo">812</span>      return atomicIncrement(tableName, row, famAndQf[0], HConstants.EMPTY_BYTE_ARRAY, amount);<a name="line.812"></a>
+<span class="sourceLineNo">813</span>    }<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    return atomicIncrement(tableName, row, famAndQf[0], famAndQf[1], amount);<a name="line.814"></a>
+<span class="sourceLineNo">815</span>  }<a name="line.815"></a>
+<span class="sourceLineNo">816</span><a name="line.816"></a>
+<span class="sourceLineNo">817</span>  protected long atomicIncrement(ByteBuffer tableName, ByteBuffer row,<a name="line.817"></a>
+<span class="sourceLineNo">818</span>      byte [] family, byte [] qualifier, long amount)<a name="line.818"></a>
+<span class="sourceLineNo">819</span>      throws IOError, IllegalArgument, TException {<a name="line.819"></a>
+<span class="sourceLineNo">820</span>    Table table = null;<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    try {<a name="line.821"></a>
+<span class="sourceLineNo">822</span>      table = getTable(tableName);<a name="line.822"></a>
+<span class="sourceLineNo">823</span>      return table.incrementColumnValue(<a name="line.823"></a>
+<span class="sourceLineNo">824</span>          getBytes(row), family, qualifier, amount);<a name="line.824"></a>
+<span class="sourceLineNo">825</span>    } catch (IOException e) {<a name="line.825"></a>
+<span class="sourceLineNo">826</span>      LOG.warn(e.getMessage(), e);<a name="line.826"></a>
+<span class="sourceLineNo">827</span>      throw getIOError(e);<a name="line.827"></a>
+<span class="sourceLineNo">828</span>    } finally {<a name="line.828"></a>
+<span class="sourceLineNo">829</span>      closeTable(table);<a name="line.829"></a>
+<span class="sourceLineNo">830</span>    }<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">833</span>  @Override<a name="line.833"></a>
+<span class="sourceLineNo">834</span>  public void scannerClose(int id) throws IOError, IllegalArgument {<a name="line.834"></a>
+<span class="sourceLineNo">835</span>    LOG.debug("scannerClose: id={}", id);<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    ResultScannerWrapper resultScannerWrapper = getScanner(id);<a name="line.836"></a>
+<span class="sourceLineNo">837</span>    if (resultScannerWrapper == null) {<a name="line.837"></a>
+<span class="sourceLineNo">838</span>      LOG.warn("scanner ID is invalid");<a name="line.838"></a>
+<span class="sourceLineNo">839</span>      throw new IllegalArgument("scanner ID is invalid");<a name="line.839"></a>
+<span class="sourceLineNo">840</span>    }<a name="line.840"></a>
+<span class="sourceLineNo">841</span>    resultScannerWrapper.getScanner().close();<a name="line.841"></a>
+<span class="sourceLineNo">842</span>    removeScanner(id);<a name="line.842"></a>
+<span class="sourceLineNo">843</span>  }<a name="line.843"></a>
+<span class="sourceLineNo">844</span><a name="line.844"></a>
+<span class="sourceLineNo">845</span>  @Override<a name="line.845"></a>
+<span class="sourceLineNo">846</span>  public List&lt;TRowResult&gt; scannerGetList(int id,int nbRows)<a name="line.846"></a>
+<span class="sourceLineNo">847</span>      throws IllegalArgument, IOError {<a name="line.847"></a>
+<span class="sourceLineNo">848</span>    LOG.debug("scannerGetList: id={}", id);<a name="line.848"></a>
+<span class="sourceLineNo">849</span>    ResultScannerWrapper resultScannerWrapper = getScanner(id);<a name="line.849"></a>
+<span class="sourceLineNo">850</span>    if (null == resultScannerWrapper) {<a name="line.850"></a>
+<span class="sourceLineNo">851</span>      String message = "scanner ID is invalid";<a name="line.851"></a>
+<span class="sourceLineNo">852</span>      LOG.warn(message);<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      throw new IllegalArgument("scanner ID is invalid");<a name="line.853"></a>
+<span class="sourceLineNo">854</span>    }<a name="line.854"></a>
+<span class="sourceLineNo">855</span><a name="line.855"></a>
+<span class="sourceLineNo">856</span>    Result [] results;<a name="line.856"></a>
+<span class="sourceLineNo">857</span>    try {<a name="line.857"></a>
+<span class="sourceLineNo">858</span>      results = resultScannerWrapper.getScanner().next(nbRows);<a name="line.858"></a>
+<span class="sourceLineNo">859</span>      if (null == results) {<a name="line.859"></a>
+<span class="sourceLineNo">860</span>        return new ArrayList&lt;&gt;();<a name="line.860"></a>
+<span class="sourceLineNo">861</span>      }<a name="line.861"></a>
+<span class="sourceLineNo">862</span>    } catch (IOException e) {<a name="line.862"></a>
+<span class="sourceLineNo">863</span>      LOG.warn(e.getMessage(), e);<a name="line.863"></a>
+<span class="sourceLineNo">864</span>      throw getIOError(e);<a name="line.864"></a>
+<span class="sourceLineNo">865</span>    }<a name="line.865"></a>
+<span class="sourceLineNo">866</span>    return ThriftUtilities.rowResultFromHBase(results, resultScannerWrapper.isColumnSorted());<a name="line.866"></a>
+<span class="sourceLineNo">867</span>  }<a name="line.867"></a>
+<span class="sourceLineNo">868</span><a name="line.868"></a>
+<span class="sourceLineNo">869</span>  @Override<a name="line.869"></a>
+<span class="sourceLineNo">870</span>  public List&lt;TRowResult&gt; scannerGet(int id) throws IllegalArgument, IOError {<a name="line.870"></a>
+<span class="sourceLineNo">871</span>    return scannerGetList(id,1);<a name="line.871"></a>
+<span class="sourceLineNo">872</span>  }<a name="line.872"></a>
+<span class="sourceLineNo">873</span><a name="line.873"></a>
+<span class="sourceLineNo">874</span>  @Override<a name="line.874"></a>
+<span class="sourceLineNo">875</span>  public int scannerOpenWithScan(ByteBuffer tableName, TScan tScan,<a name="line.875"></a>
+<span class="sourceLineNo">876</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.876"></a>
+<span class="sourceLineNo">877</span>      throws IOError {<a name="line.877"></a>
+<span class="sourceLineNo">878</span><a name="line.878"></a>
+<span class="sourceLineNo">879</span>    Table table = null;<a name="line.879"></a>
+<span class="sourceLineNo">880</span>    try {<a name="line.880"></a>
+<span class="sourceLineNo">881</span>      table = getTable(tableName);<a name="line.881"></a>
+<span class="sourceLineNo">882</span>      Scan scan = new Scan();<a name="line.882"></a>
+<span class="sourceLineNo">883</span>      addAttributes(scan, attributes);<a name="line.883"></a>
+<span class="sourceLineNo">884</span>      if (tScan.isSetStartRow()) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>        scan.setStartRow(tScan.getStartRow());<a name="line.885"></a>
+<span class="sourceLineNo">886</span>      }<a name="line.886"></a>
+<span class="sourceLineNo">887</span>      if (tScan.isSetStopRow()) {<a name="line.887"></a>
+<span class="sourceLineNo">888</span>        scan.setStopRow(tScan.getStopRow());<a name="line.888"></a>
+<span class="sourceLineNo">889</span>      }<a name="line.889"></a>
+<span class="sourceLineNo">890</span>      if (tScan.isSetTimestamp()) {<a name="line.890"></a>
+<span class="sourceLineNo">891</span>        scan.setTimeRange(0, tScan.getTimestamp());<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      }<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      if (tScan.isSetCaching()) {<a name="line.893"></a>
+<span class="sourceLineNo">894</span>        scan.setCaching(tScan.getCaching());<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      }<a name="line.895"></a>
+<span class="sourceLineNo">896</span>      if (tScan.isSetBatchSize()) {<a name="line.896"></a>
+<span class="sourceLineNo">897</span>        scan.setBatch(tScan.getBatchSize());<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      }<a name="line.898"></a>
+<span class="sourceLineNo">899</span>      if (tScan.isSetColumns() &amp;&amp; !tScan.getColumns().isEmpty()) {<a name="line.899"></a>
+<span class="sourceLineNo">900</span>        for(ByteBuffer column : tScan.getColumns()) {<a name="line.900"></a>
+<span class="sourceLineNo">901</span>          byte [][] famQf = CellUtil.parseColumn(getBytes(column));<a name="line.901"></a>
+<span class="sourceLineNo">902</span>          if(famQf.length == 1) {<a name="line.902"></a>
+<span class="sourceLineNo">903</span>            scan.addFamily(famQf[0]);<a name="line.903"></a>
+<span class="sourceLineNo">904</span>          } else {<a name="line.904"></a>
+<span class="sourceLineNo">905</span>            scan.addColumn(famQf[0], famQf[1]);<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>      }<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      if (tScan.isSetFilterString()) {<a name="line.909"></a>
+<span class="sourceLineNo">910</span>        ParseFilter parseFilter = new ParseFilter();<a name="line.910"></a>
+<span class="sourceLineNo">911</span>        scan.setFilter(<a name="line.911"></a>
+<span class="sourceLineNo">912</span>            parseFilter.parseFilterString(tScan.getFilterString()));<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      }<a name="line.913"></a>
+<span class="sourceLineNo">914</span>      if (tScan.isSetReversed()) {<a name="line.914"></a>
+<span class="sourceLineNo">915</span>        scan.setReversed(tScan.isReversed());<a name="line.915"></a>
+<span class="sourceLineNo">916</span>      }<a name="line.916"></a>
+<span class="sourceLineNo">917</span>      if (tScan.isSetCacheBlocks()) {<a name="line.917"></a>
+<span class="sourceLineNo">918</span>        scan.setCacheBlocks(tScan.isCacheBlocks());<a name="line.918"></a>
+<span class="sourceLineNo">919</span>      }<a name="line.919"></a>
+<span class="sourceLineNo">920</span>      return addScanner(table.getScanner(scan), tScan.sortColumns);<a name="line.920"></a>
+<span class="sourceLineNo">921</span>    } catch (IOException e) {<a name="line.921"></a>
+<span class="sourceLineNo">922</span>      LOG.warn(e.getMessage(), e);<a name="line.922"></a>
+<span class="sourceLineNo">

<TRUNCATED>

[38/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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
deleted file mode 100644
index 5be3d57..0000000
--- a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html
+++ /dev/null
@@ -1,2385 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ThriftServerRunner.HBaseHandler (Apache HBase 3.0.0-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
-    try {
-        if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="ThriftServerRunner.HBaseHandler (Apache HBase 3.0.0-SNAPSHOT API)";
-        }
-    }
-    catch(err) {
-    }
-//-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":9,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":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";
-var tableTab = "tableTab";
-var activeTableTab = "activeTableTab";
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/ThriftServerRunner.HBaseHandler.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" target="_top">Frames</a></li>
-<li><a href="ThriftServerRunner.HBaseHandler.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
-<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<!-- ======== START OF CLASS DATA ======== -->
-<div class="header">
-<div class="subTitle">org.apache.hadoop.hbase.thrift</div>
-<h2 title="Class ThriftServerRunner.HBaseHandler" class="title">Class ThriftServerRunner.HBaseHandler</h2>
-</div>
-<div class="contentContainer">
-<ul class="inheritance">
-<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
-<li>
-<ul class="inheritance">
-<li>org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler</li>
-</ul>
-</li>
-</ul>
-<div class="description">
-<ul class="blockList">
-<li class="blockList">
-<dl>
-<dt>All Implemented Interfaces:</dt>
-<dd>org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</dd>
-</dl>
-<dl>
-<dt>Enclosing class:</dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner</a></dd>
-</dl>
-<hr>
-<br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.743">ThriftServerRunner.HBaseHandler</a>
-extends <a href="https://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
- HBase client API primarily defined in the Admin and Table objects.</div>
-</li>
-</ul>
-</div>
-<div class="summary">
-<ul class="blockList">
-<li class="blockList">
-<!-- =========== FIELD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.summary">
-<!--   -->
-</a>
-<h3>Field Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
-<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Field and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.HBaseHandler.html#CLEANUP_INTERVAL">CLEANUP_INTERVAL</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.html" title="class in org.apache.hadoop.hbase.thrift">IncrementCoalescer</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#coalescer">coalescer</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>protected org.apache.hadoop.conf.Configuration</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#conf">conf</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/util/ConnectionCache.html" title="class in org.apache.hadoop.hbase.util">ConnectionCache</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#connectionCache">connectionCache</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>protected static org.slf4j.Logger</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#LOG">LOG</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.HBaseHandler.html#MAX_IDLETIME">MAX_IDLETIME</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#metrics">metrics</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>protected int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#nextScannerId">nextScannerId</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>protected <a href="https://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="https://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;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#scannerMap">scannerMap</a></span></code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.summary">
-<!--   -->
-</a>
-<h3>Constructor Summary</h3>
-<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="colFirst" scope="col">Modifier</th>
-<th class="colLast" scope="col">Constructor and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>protected </code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#HBaseHandler-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.UserProvider-">HBaseHandler</a></span>(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)</code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-<!-- ========== METHOD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.summary">
-<!--   -->
-</a>
-<h3>Method Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tr id="i0" class="altColor">
-<td class="colFirst"><code>protected int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#addScanner-org.apache.hadoop.hbase.client.ResultScanner-boolean-">addScanner</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a>&nbsp;scanner,
-          boolean&nbsp;sortColumns)</code>
-<div class="block">Assigns a unique ID to the scanner and adds the mapping to an internal
- hash-map.</div>
-</td>
-</tr>
-<tr id="i1" class="rowColor">
-<td class="colFirst"><code><a href="https://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;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#append-org.apache.hadoop.hbase.thrift.generated.TAppend-">append</a></span>(org.apache.hadoop.hbase.thrift.generated.TAppend&nbsp;tappend)</code>
-<div class="block">Appends values to one or more columns within a single row.</div>
-</td>
-</tr>
-<tr id="i2" class="altColor">
-<td class="colFirst"><code>protected long</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#atomicIncrement-java.nio.ByteBuffer-java.nio.ByteBuffer-byte:A-byte:A-long-">atomicIncrement</a></span>(<a href="https://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="https://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,
-               long&nbsp;amount)</code>&nbsp;</td>
-</tr>
-<tr id="i3" class="rowColor">
-<td class="colFirst"><code>long</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#atomicIncrement-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-long-">atomicIncrement</a></span>(<a href="https://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="https://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="https://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)</code>
-<div class="block">Atomically increment the column value specified.</div>
-</td>
-</tr>
-<tr id="i4" class="altColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#checkAndPut-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-org.apache.hadoop.hbase.thrift.generated.Mutation-java.util.Map-">checkAndPut</a></span>(<a href="https://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="https://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="https://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="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;value,
-           org.apache.hadoop.hbase.thrift.generated.Mutation&nbsp;mput,
-           <a href="https://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="https://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="https://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)</code>
-<div class="block">Atomically checks if a row/family/qualifier value matches the expected
- value.</div>
-</td>
-</tr>
-<tr id="i5" 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.HBaseHandler.html#closeTable-org.apache.hadoop.hbase.client.Table-">closeTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;table)</code>&nbsp;</td>
-</tr>
-<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.HBaseHandler.html#compact-java.nio.ByteBuffer-">compact</a></span>(<a href="https://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)</code>&nbsp;</td>
-</tr>
-<tr id="i7" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#createTable-java.nio.ByteBuffer-java.util.List-">createTable</a></span>(<a href="https://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="https://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)</code>
-<div class="block">Create a table with the specified column families.</div>
-</td>
-</tr>
-<tr id="i8" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#deleteAll-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.Map-">deleteAll</a></span>(<a href="https://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="https://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="https://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="https://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="https://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="https://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)</code>
-<div class="block">Delete all cells that match the passed row and column.</div>
-</td>
-</tr>
-<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.HBaseHandler.html#deleteAllRow-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.Map-">deleteAllRow</a></span>(<a href="https://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="https://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="https://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="https://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="https://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)</code>
-<div class="block">Completely delete the row's cells.</div>
-</td>
-</tr>
-<tr id="i10" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#deleteAllRowTs-java.nio.ByteBuffer-java.nio.ByteBuffer-long-java.util.Map-">deleteAllRowTs</a></span>(<a href="https://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="https://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="https://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="https://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="https://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)</code>
-<div class="block">Completely delete the row's cells marked with a timestamp
- equal-to or older than the passed timestamp.</div>
-</td>
-</tr>
-<tr id="i11" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#deleteAllTs-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-long-java.util.Map-">deleteAllTs</a></span>(<a href="https://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="https://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="https://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,
-           <a href="https://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="https://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="https://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)</code>
-<div class="block">Delete all cells that match the passed row and column and whose
- timestamp is equal-to or older than the passed timestamp.</div>
-</td>
-</tr>
-<tr id="i12" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#deleteTable-java.nio.ByteBuffer-">deleteTable</a></span>(<a href="https://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)</code>
-<div class="block">Deletes a table</div>
-</td>
-</tr>
-<tr id="i13" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#disableTable-java.nio.ByteBuffer-">disableTable</a></span>(<a href="https://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)</code>
-<div class="block">Disables a table (takes it off-line) If it is being served, the master
- will tell the servers to stop serving it.</div>
-</td>
-</tr>
-<tr id="i14" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#enableTable-java.nio.ByteBuffer-">enableTable</a></span>(<a href="https://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)</code>
-<div class="block">Brings a table on-line (enables it)</div>
-</td>
-</tr>
-<tr id="i15" class="rowColor">
-<td class="colFirst"><code>protected <a href="https://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;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#get-java.nio.ByteBuffer-java.nio.ByteBuffer-byte:A-byte:A-java.util.Map-">get</a></span>(<a href="https://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="https://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,
-   <a href="https://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="https://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="https://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)</code>
-<div class="block">Note: this internal interface is slightly different from public APIs in regard to handling
- of the qualifier.</div>
-</td>
-</tr>
-<tr id="i16" class="altColor">
-<td class="colFirst"><code><a href="https://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;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#get-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.Map-">get</a></span>(<a href="https://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="https://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="https://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="https://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="https://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="https://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)</code>
-<div class="block">Get a single TCell for the specified table, row, and column at the
- latest timestamp.</div>
-</td>
-</tr>
-<tr id="i17" class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getAdmin--">getAdmin</a></span>()</code>
-<div class="block">Obtain HBaseAdmin.</div>
-</td>
-</tr>
-<tr id="i18" class="altColor">
-<td class="colFirst"><code>(package private) byte[][]</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getAllColumns-org.apache.hadoop.hbase.client.Table-">getAllColumns</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;table)</code>
-<div class="block">Returns a list of all the column families for a given Table.</div>
-</td>
-</tr>
-<tr id="i19" class="rowColor">
-<td class="colFirst"><code><a href="https://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="https://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;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getColumnDescriptors-java.nio.ByteBuffer-">getColumnDescriptors</a></span>(<a href="https://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)</code>
-<div class="block">List all the column families assoicated with a table.</div>
-</td>
-</tr>
-<tr id="i20" class="altColor">
-<td class="colFirst"><code>org.apache.hadoop.hbase.thrift.generated.TRegionInfo</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getRegionInfo-java.nio.ByteBuffer-">getRegionInfo</a></span>(<a href="https://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)</code>
-<div class="block">Get the regininfo for the specified row.</div>
-</td>
-</tr>
-<tr id="i21" class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getReverseScanResult-byte:A-byte:A-byte:A-">getReverseScanResult</a></span>(byte[]&nbsp;tableName,
-                    byte[]&nbsp;row,
-                    byte[]&nbsp;family)</code>&nbsp;</td>
-</tr>
-<tr id="i22" class="altColor">
-<td class="colFirst"><code><a href="https://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;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getRow-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.Map-">getRow</a></span>(<a href="https://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="https://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="https://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="https://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="https://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)</code>
-<div class="block">Get all the data for the specified table and row at the latest
- timestamp.</div>
-</td>
-</tr>
-<tr id="i23" class="rowColor">
-<td class="colFirst"><code><a href="https://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;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getRows-java.nio.ByteBuffer-java.util.List-java.util.Map-">getRows</a></span>(<a href="https://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="https://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="https://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="https://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="https://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="https://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)</code>
-<div class="block">Get all the data for the specified table and rows at the latest
- timestamp.</div>
-</td>
-</tr>
-<tr id="i24" class="altColor">
-<td class="colFirst"><code><a href="https://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;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getRowsTs-java.nio.ByteBuffer-java.util.List-long-java.util.Map-">getRowsTs</a></span>(<a href="https://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="https://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="https://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="https://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="https://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="https://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)</code>
-<div class="block">Get all the data for the specified table and rows at the specified
- timestamp.</div>
-</td>
-</tr>
-<tr id="i25" class="rowColor">
-<td class="colFirst"><code><a href="https://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;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getRowsWithColumns-java.nio.ByteBuffer-java.util.List-java.util.List-java.util.Map-">getRowsWithColumns</a></span>(<a href="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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)</code>
-<div class="block">Get the specified columns for the specified table and rows at the latest
- timestamp.</div>
-</td>
-</tr>
-<tr id="i26" class="altColor">
-<td class="colFirst"><code><a href="https://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;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getRowsWithColumnsTs-java.nio.ByteBuffer-java.util.List-java.util.List-long-java.util.Map-">getRowsWithColumnsTs</a></span>(<a href="https://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="https://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="https://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="https://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="https://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,
-                    <a href="https://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="https://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="https://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)</code>
-<div class="block">Get the specified columns for the specified table and rows at the specified
- timestamp.</div>
-</td>
-</tr>
-<tr id="i27" class="rowColor">
-<td class="colFirst"><code><a href="https://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;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getRowTs-java.nio.ByteBuffer-java.nio.ByteBuffer-long-java.util.Map-">getRowTs</a></span>(<a href="https://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="https://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="https://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="https://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="https://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)</code>
-<div class="block">Get all the data for the specified table and row at the specified
- timestamp.</div>
-</td>
-</tr>
-<tr id="i28" class="altColor">
-<td class="colFirst"><code><a href="https://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;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getRowWithColumns-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.List-java.util.Map-">getRowWithColumns</a></span>(<a href="https://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="https://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="https://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="https://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="https://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="https://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="https://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)</code>
-<div class="block">Get the specified columns for the specified table and row at the latest
- timestamp.</div>
-</td>
-</tr>
-<tr id="i29" class="rowColor">
-<td class="colFirst"><code><a href="https://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;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getRowWithColumnsTs-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.List-long-java.util.Map-">getRowWithColumnsTs</a></span>(<a href="https://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="https://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="https://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="https://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,
-                   <a href="https://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="https://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="https://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)</code>
-<div class="block">Get the specified columns for the specified table and row at the specified
- timestamp.</div>
-</td>
-</tr>
-<tr id="i30" class="altColor">
-<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ResultScannerWrapper</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getScanner-int-">getScanner</a></span>(int&nbsp;id)</code>
-<div class="block">Returns the scanner associated with the specified ID.</div>
-</td>
-</tr>
-<tr id="i31" class="rowColor">
-<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getTable-byte:A-">getTable</a></span>(byte[]&nbsp;tableName)</code>
-<div class="block">Creates and returns a Table instance from a given table name.</div>
-</td>
-</tr>
-<tr id="i32" class="altColor">
-<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getTable-java.nio.ByteBuffer-">getTable</a></span>(<a href="https://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)</code>&nbsp;</td>
-</tr>
-<tr id="i33" class="rowColor">
-<td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getTableName-java.nio.ByteBuffer-">getTableName</a></span>(<a href="https://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)</code>&nbsp;</td>
-</tr>
-<tr id="i34" class="altColor">
-<td class="colFirst"><code><a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getTableNames--">getTableNames</a></span>()</code>
-<div class="block">List all the userspace tables.</div>
-</td>
-</tr>
-<tr id="i35" class="rowColor">
-<td class="colFirst"><code><a href="https://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;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getTableRegions-java.nio.ByteBuffer-">getTableRegions</a></span>(<a href="https://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)</code>
-<div class="block">List the regions associated with a table.</div>
-</td>
-</tr>
-<tr id="i36" class="altColor">
-<td class="colFirst"><code><a href="https://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;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getVer-java.nio.ByteBuffer-java.nio.ByteBuffer-byte:A-byte:A-int-java.util.Map-">getVer</a></span>(<a href="https://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="https://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,
-      int&nbsp;numVersions,
-      <a href="https://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="https://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="https://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)</code>
-<div class="block">Note: this public interface is slightly different from public Java APIs in regard to
- handling of the qualifier.</div>
-</td>
-</tr>
-<tr id="i37" class="rowColor">
-<td class="colFirst"><code><a href="https://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;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getVer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-int-java.util.Map-">getVer</a></span>(<a href="https://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="https://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="https://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,
-      <a href="https://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="https://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="https://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)</code>
-<div class="block">Get the specified number of versions for the specified table,
- row, and column.</div>
-</td>
-</tr>
-<tr id="i38" class="altColor">
-<td class="colFirst"><code>protected <a href="https://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;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getVerTs-java.nio.ByteBuffer-java.nio.ByteBuffer-byte:A-byte:A-long-int-java.util.Map-">getVerTs</a></span>(<a href="https://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="https://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,
-        long&nbsp;timestamp,
-        int&nbsp;numVersions,
-        <a href="https://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="https://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="https://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)</code>
-<div class="block">Note: this internal interface is slightly different from public APIs in regard to handling
- of the qualifier.</div>
-</td>
-</tr>
-<tr id="i39" class="rowColor">
-<td class="colFirst"><code><a href="https://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;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getVerTs-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-long-int-java.util.Map-">getVerTs</a></span>(<a href="https://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="https://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="https://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,
-        int&nbsp;numVersions,
-        <a href="https://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="https://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="https://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)</code>
-<div class="block">Get the specified number of versions for the specified table,
- row, and column.</div>
-</td>
-</tr>
-<tr id="i40" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#increment-org.apache.hadoop.hbase.thrift.generated.TIncrement-">increment</a></span>(org.apache.hadoop.hbase.thrift.generated.TIncrement&nbsp;tincrement)</code>
-<div class="block">Increment a cell by the ammount.</div>
-</td>
-</tr>
-<tr id="i41" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#incrementRows-java.util.List-">incrementRows</a></span>(<a href="https://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;tincrements)</code>&nbsp;</td>
-</tr>
-<tr id="i42" 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.HBaseHandler.html#initMetrics-org.apache.hadoop.hbase.thrift.ThriftMetrics-">initMetrics</a></span>(<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="i43" class="rowColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#isTableEnabled-java.nio.ByteBuffer-">isTableEnabled</a></span>(<a href="https://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)</code>&nbsp;</td>
-</tr>
-<tr id="i44" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#majorCompact-java.nio.ByteBuffer-">majorCompact</a></span>(<a href="https://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)</code>&nbsp;</td>
-</tr>
-<tr id="i45" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#mutateRow-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.List-java.util.Map-">mutateRow</a></span>(<a href="https://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="https://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="https://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="https://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="https://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="https://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)</code>
-<div class="block">Apply a series of mutations (updates/deletes) to a row in a
- single transaction.</div>
-</td>
-</tr>
-<tr id="i46" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#mutateRows-java.nio.ByteBuffer-java.util.List-java.util.Map-">mutateRows</a></span>(<a href="https://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="https://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="https://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="https://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="https://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)</code>
-<div class="block">Apply a series of batches (each a series of mutations on a single row)
- in a single transaction.</div>
-</td>
-</tr>
-<tr id="i47" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#mutateRowsTs-java.nio.ByteBuffer-java.util.List-long-java.util.Map-">mutateRowsTs</a></span>(<a href="https://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="https://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="https://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="https://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="https://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)</code>
-<div class="block">Apply a series of batches (each a series of mutations on a single row)
- in a single transaction.</div>
-</td>
-</tr>
-<tr id="i48" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#mutateRowTs-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.List-long-java.util.Map-">mutateRowTs</a></span>(<a href="https://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="https://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="https://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,
-           <a href="https://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="https://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="https://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)</code>
-<div class="block">Apply a series of mutations (updates/deletes) to a row in a
- single transaction.</div>
-</td>
-</tr>
-<tr id="i49" class="rowColor">
-<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ResultScannerWrapper</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#removeScanner-int-">removeScanner</a></span>(int&nbsp;id)</code>
-<div class="block">Removes the scanner associated with the specified ID from the internal
- id-&gt;scanner hash-map.</div>
-</td>
-</tr>
-<tr id="i50" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#scannerClose-int-">scannerClose</a></span>(int&nbsp;id)</code>
-<div class="block">Closes the server-state associated with an open scanner.</div>
-</td>
-</tr>
-<tr id="i51" class="rowColor">
-<td class="colFirst"><code><a href="https://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;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#scannerGet-int-">scannerGet</a></span>(int&nbsp;id)</code>
-<div class="block">Returns the scanner's current row value and advances to the next
- row in the table.</div>
-</td>
-</tr>
-<tr id="i52" class="altColor">
-<td class="colFirst"><code><a href="https://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;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#scannerGetList-int-int-">scannerGetList</a></span>(int&nbsp;id,
-              int&nbsp;nbRows)</code>
-<div class="block">Returns, starting at the scanner's current row value nbRows worth of
- rows and advances to the next row in the table.</div>
-</td>
-</tr>
-<tr id="i53" class="rowColor">
-<td class="colFirst"><code>int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#scannerOpen-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.List-java.util.Map-">scannerOpen</a></span>(<a href="https://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="https://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="https://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="https://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="https://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="https://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="https://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)</code>
-<div class="block">Get a scanner on the current table starting at the specified row and
- ending at the last row in the table.</div>
-</td>
-</tr>
-<tr id="i54" class="altColor">
-<td class="colFirst"><code>int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#scannerOpenTs-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.List-long-java.util.Map-">scannerOpenTs</a></span>(<a href="https://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="https://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="https://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="https://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,
-             <a href="https://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="https://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="https://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)</code>
-<div class="block">Get a scanner on the current table starting at the specified row and
- ending at the last row in the table.</div>
-</td>
-</tr>
-<tr id="i55" class="rowColor">
-<td class="colFirst"><code>int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#scannerOpenWithPrefix-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.List-java.util.Map-">scannerOpenWithPrefix</a></span>(<a href="https://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="https://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="https://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="https://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="https://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="https://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="https://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)</code>
-<div class="block">Open a scanner for a given prefix.</div>
-</td>
-</tr>
-<tr id="i56" class="altColor">
-<td class="colFirst"><code>int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#scannerOpenWithScan-java.nio.ByteBuffer-org.apache.hadoop.hbase.thrift.generated.TScan-java.util.Map-">scannerOpenWithScan</a></span>(<a href="https://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="https://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="https://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="https://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)</code>
-<div class="block">Get a scanner on the current table, using the Scan instance
- for the scan parameters.</div>
-</td>
-</tr>
-<tr id="i57" class="rowColor">
-<td class="colFirst"><code>int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#scannerOpenWithStop-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.List-java.util.Map-">scannerOpenWithStop</a></span>(<a href="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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)</code>
-<div class="block">Get a scanner on the current table starting and stopping at the
- specified rows.</div>
-</td>
-</tr>
-<tr id="i58" class="altColor">
-<td class="colFirst"><code>int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#scannerOpenWithStopTs-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.List-long-java.util.Map-">scannerOpenWithStopTs</a></span>(<a href="https://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="https://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="https://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="https://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="https://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,
-                     <a href="https://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="https://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="https://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)</code>
-<div class="block">Get a scanner on the current table starting and stopping at the
- specified rows.</div>
-</td>
-</tr>
-<tr id="i59" class="rowColor">
-<td class="colFirst"><code>(package private) void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#setEffectiveUser-java.lang.String-">setEffectiveUser</a></span>(<a href="https://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)</code>&nbsp;</td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<div class="details">
-<ul class="blockList">
-<li class="blockList">
-<!-- ============ FIELD DETAIL =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.detail">
-<!--   -->
-</a>
-<h3>Field Detail</h3>
-<a name="conf">
-<!--   -->
-</a>
-<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.744">conf</a></pre>
-</li>
-</ul>
-<a name="LOG">
-<!--   -->
-</a>
-<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.745">LOG</a></pre>
-</li>
-</ul>
-<a name="nextScannerId">
-<!--   -->
-</a>
-<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.748">nextScannerId</a></pre>
-</li>
-</ul>
-<a name="scannerMap">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>scannerMap</h4>
-<pre>protected&nbsp;<a href="https://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="https://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.749">scannerMap</a></pre>
-</li>
-</ul>
-<a name="metrics">
-<!--   -->
-</a>
-<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.750">metrics</a></pre>
-</li>
-</ul>
-<a name="connectionCache">
-<!--   -->
-</a>
-<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.752">connectionCache</a></pre>
-</li>
-</ul>
-<a name="coalescer">
-<!--   -->
-</a>
-<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.753">coalescer</a></pre>
-</li>
-</ul>
-<a name="CLEANUP_INTERVAL">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>CLEANUP_INTERVAL</h4>
-<pre>static final&nbsp;<a href="https://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.755">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>
-</dl>
-</li>
-</ul>
-<a name="MAX_IDLETIME">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>MAX_IDLETIME</h4>
-<pre>static final&nbsp;<a href="https://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.756">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>
-</dl>
-</li>
-</ul>
-</li>
-</ul>
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.detail">
-<!--   -->
-</a>
-<h3>Constructor Detail</h3>
-<a name="HBaseHandler-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.UserProvider-">
-<!--   -->
-</a>
-<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.826">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="https://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="https://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>
-</li>
-</ul>
-<!-- ============ METHOD DETAIL ========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.detail">
-<!--   -->
-</a>
-<h3>Method Detail</h3>
-<a name="getAllColumns-org.apache.hadoop.hbase.client.Table-">
-<!--   -->
-</a>
-<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.764">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="https://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>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>table</code> - </dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://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="getTable-byte:A-">
-<!--   -->
-</a>
-<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.782">getTable</a>(byte[]&nbsp;tableName)
-               throws <a href="https://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>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>tableName</code> - name of table</dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>Table object</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://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>
-<a name="getTable-java.nio.ByteBuffer-">
-<!--   -->
-</a>
-<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.787">getTable</a>(<a href="https://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="https://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="https://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="addScanner-org.apache.hadoop.hbase.client.ResultScanner-boolean-">
-<!--   -->
-</a>
-<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.798">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> - 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>
-</li>
-</ul>
-<a name="getScanner-int-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getScanner</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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
deleted file mode 100644
index 780d858..0000000
--- a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html
+++ /dev/null
@@ -1,1291 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ThriftServerRunner (Apache HBase 3.0.0-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
-    try {
-        if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="ThriftServerRunner (Apache HBase 3.0.0-SNAPSHOT API)";
-        }
-    }
-    catch(err) {
-    }
-//-->
-var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":9,"i5":10,"i6":9,"i7":10,"i8":10,"i9":10,"i10":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";
-var tableTab = "tableTab";
-var activeTableTab = "activeTableTab";
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/ThriftServerRunner.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" target="_top">Frames</a></li>
-<li><a href="ThriftServerRunner.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
-<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<!-- ======== START OF CLASS DATA ======== -->
-<div class="header">
-<div class="subTitle">org.apache.hadoop.hbase.thrift</div>
-<h2 title="Class ThriftServerRunner" class="title">Class ThriftServerRunner</h2>
-</div>
-<div class="contentContainer">
-<ul class="inheritance">
-<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
-<li>
-<ul class="inheritance">
-<li>org.apache.hadoop.hbase.thrift.ThriftServerRunner</li>
-</ul>
-</li>
-</ul>
-<div class="description">
-<ul class="blockList">
-<li class="blockList">
-<dl>
-<dt>All Implemented Interfaces:</dt>
-<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></dd>
-</dl>
-<hr>
-<br>
-<pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.153">ThriftServerRunner</a>
-extends <a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></pre>
-<div class="block">ThriftServerRunner - this class starts up a Thrift server which implements
- the Hbase API specified in the Hbase.thrift IDL file.</div>
-</li>
-</ul>
-</div>
-<div class="summary">
-<ul class="blockList">
-<li class="blockList">
-<!-- ======== NESTED CLASS SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="nested.class.summary">
-<!--   -->
-</a>
-<h3>Nested Class Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
-<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Class and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>static class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></span></code>
-<div class="block">The HBaseHandler is a glue object that connects Thrift RPC calls to the
- HBase client API primarily defined in the Admin and Table objects.</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>static class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a></span></code>
-<div class="block">An enum of server implementation selections</div>
-</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>static class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.IOErrorWithCause</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>protected static class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ResultScannerWrapper</a></span></code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-<!-- =========== FIELD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.summary">
-<!--   -->
-</a>
-<h3>Field Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
-<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Field and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#BACKLOG_CONF_KEY">BACKLOG_CONF_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#BIND_CONF_KEY">BIND_CONF_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#COALESCE_INC_KEY">COALESCE_INC_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#COMPACT_CONF_KEY">COMPACT_CONF_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private org.apache.hadoop.conf.Configuration</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#conf">conf</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private static <a href="https://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/thrift/ThriftServerRunner.html#DEFAULT_BIND_ADDR">DEFAULT_BIND_ADDR</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private static int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#DEFAULT_HTTP_MAX_HEADER_SIZE">DEFAULT_HTTP_MAX_HEADER_SIZE</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>static int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#DEFAULT_LISTEN_PORT">DEFAULT_LISTEN_PORT</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#doAsEnabled">doAsEnabled</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#FRAMED_CONF_KEY">FRAMED_CONF_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#handler">handler</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#hbaseHandler">hbaseHandler</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private <a href="https://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/thrift/ThriftServerRunner.html#host">host</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>static int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#HREGION_VERSION">HREGION_VERSION</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#HTTP_MAX_THREADS_KEY">HTTP_MAX_THREADS_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#HTTP_MIN_THREADS_KEY">HTTP_MIN_THREADS_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) org.eclipse.jetty.server.Server</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#httpServer">httpServer</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#listenPort">listenPort</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private static org.slf4j.Logger</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#LOG">LOG</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#MAX_FRAME_SIZE_CONF_KEY">MAX_FRAME_SIZE_CONF_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#metrics">metrics</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/util/JvmPauseMonitor.html" title="class in org.apache.hadoop.hbase.util">JvmPauseMonitor</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#pauseMonitor">pauseMonitor</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#PORT_CONF_KEY">PORT_CONF_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security">SaslUtil.QualityOfProtection</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#qop">qop</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#securityEnabled">securityEnabled</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#SERVER_TYPE_CONF_KEY">SERVER_TYPE_CONF_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private org.apache.hadoop.security.UserGroupInformation</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#serviceUGI">serviceUGI</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#THRIFT_DNS_INTERFACE_KEY">THRIFT_DNS_INTERFACE_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#THRIFT_DNS_NAMESERVER_KEY">THRIFT_DNS_NAMESERVER_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#THRIFT_HTTP_ALLOW_OPTIONS_METHOD">THRIFT_HTTP_ALLOW_OPTIONS_METHOD</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private static boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT">THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#THRIFT_KERBEROS_PRINCIPAL_KEY">THRIFT_KERBEROS_PRINCIPAL_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#THRIFT_KEYTAB_FILE_KEY">THRIFT_KEYTAB_FILE_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#THRIFT_QOP_KEY">THRIFT_QOP_KEY</a></span></code>
-<div class="block">Thrift quality of protection configuration key.</div>
-</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>static int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT">THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>static <a href="https://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/thrift/ThriftServerRunner.html#THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY">THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY</a></span></code>
-<div class="block">Amount of time in milliseconds before a server thread will timeout
- waiting for client to send data on a connected socket.</div>
-</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#THRIFT_SPNEGO_KEYTAB_FILE_KEY">THRIFT_SPNEGO_KEYTAB_FILE_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#THRIFT_SPNEGO_PRINCIPAL_KEY">THRIFT_SPNEGO_PRINCIPAL_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#THRIFT_SSL_ENABLED_KEY">THRIFT_SSL_ENABLED_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY">THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY">THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY">THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#THRIFT_SSL_INCLUDE_PROTOCOLS_KEY">THRIFT_SSL_INCLUDE_PROTOCOLS_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY">THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#THRIFT_SSL_KEYSTORE_PASSWORD_KEY">THRIFT_SSL_KEYSTORE_PASSWORD_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#THRIFT_SSL_KEYSTORE_STORE_KEY">THRIFT_SSL_KEYSTORE_STORE_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#THRIFT_SUPPORT_PROXYUSER_KEY">THRIFT_SUPPORT_PROXYUSER_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) org.apache.thrift.server.TServer</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#tserver">tserver</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServerRunner.html#USE_HTTP_CONF_KEY">USE_HTTP_CONF_KEY</a></span></code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.summary">
-<!--   -->
-</a>
-<h3>Constructor Summary</h3>
-<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>
-</tr>
-<tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#ThriftServerRunner-org.apache.hadoop.conf.Configuration-">ThriftServerRunner</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-<!-- ========== METHOD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.summary">
-<!--   -->
-</a>
-<h3>Method Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tr id="i0" class="altColor">
-<td class="colFirst"><code>private static void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#addAttributes-org.apache.hadoop.hbase.client.OperationWithAttributes-java.util.Map-">addAttributes</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/OperationWithAttributes.html" title="class in org.apache.hadoop.hbase.client">OperationWithAttributes</a>&nbsp;op,
-             <a href="https://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="https://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="https://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)</code>
-<div class="block">Adds all the attributes into the Operation object</div>
-</td>
-</tr>
-<tr id="i1" 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#checkHttpSecurity-org.apache.hadoop.hbase.security.SaslUtil.QualityOfProtection-org.apache.hadoop.conf.Configuration-">checkHttpSecurity</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,
-                 org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
-</tr>
-<tr id="i2" class="altColor">
-<td class="colFirst"><code>(package private) <a href="https://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/thrift/ThriftServerRunner.html#createExecutor-java.util.concurrent.BlockingQueue-int-int-">createExecutor</a></span>(<a href="https://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="https://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)</code>&nbsp;</td>
-</tr>
-<tr id="i3" class="rowColor">
-<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetAddress.html?is-external=true" title="class or interface in java.net">InetAddress</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#getBindAddress-org.apache.hadoop.conf.Configuration-">getBindAddress</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
-</tr>
-<tr id="i4" class="altColor">
-<td class="colFirst"><code>private static org.apache.hadoop.hbase.thrift.generated.IOError</code></td>
-<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="https://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="i5" class="rowColor">
-<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="i6" class="altColor">
-<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="i7" 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#run--">run</a></span>()</code>&nbsp;</td>
-</tr>
-<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#setupHTTPServer--">setupHTTPServer</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i9" 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#setupServer--">setupServer</a></span>()</code>
-<div class="block">Setting up the thrift TServer</div>
-</td>
-</tr>
-<tr id="i10" 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#shutdown--">shutdown</a></span>()</code>&nbsp;</td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<div class="details">
-<ul class="blockList">
-<li class="blockList">
-<!-- ============ FIELD DETAIL =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.detail">
-<!--   -->
-</a>
-<h3>Field Detail</h3>
-<a name="LOG">
-<!--   -->
-</a>
-<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/thrift/ThriftServerRunner.html#line.155">LOG</a></pre>
-</li>
-</ul>
-<a name="DEFAULT_HTTP_MAX_HEADER_SIZE">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>DEFAULT_HTTP_MAX_HEADER_SIZE</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.157">DEFAULT_HTTP_MAX_HEADER_SIZE</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.DEFAULT_HTTP_MAX_HEADER_SIZE">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="SERVER_TYPE_CONF_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>SERVER_TYPE_CONF_KEY</h4>
-<pre>static final&nbsp;<a href="https://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.159">SERVER_TYPE_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.SERVER_TYPE_CONF_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="BIND_CONF_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>BIND_CONF_KEY</h4>
-<pre>static final&nbsp;<a href="https://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.162">BIND_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.BIND_CONF_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="COMPACT_CONF_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>COMPACT_CONF_KEY</h4>
-<pre>static final&nbsp;<a href="https://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.163">COMPACT_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.COMPACT_CONF_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="FRAMED_CONF_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>FRAMED_CONF_KEY</h4>
-<pre>static final&nbsp;<a href="https://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.164">FRAMED_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.FRAMED_CONF_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="MAX_FRAME_SIZE_CONF_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>MAX_FRAME_SIZE_CONF_KEY</h4>
-<pre>static final&nbsp;<a href="https://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">MAX_FRAME_SIZE_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.MAX_FRAME_SIZE_CONF_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="PORT_CONF_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>PORT_CONF_KEY</h4>
-<pre>static final&nbsp;<a href="https://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">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>
-</dl>
-</li>
-</ul>
-<a name="COALESCE_INC_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>COALESCE_INC_KEY</h4>
-<pre>static final&nbsp;<a href="https://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">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>
-</dl>
-</li>
-</ul>
-<a name="USE_HTTP_CONF_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>USE_HTTP_CONF_KEY</h4>
-<pre>static final&nbsp;<a href="https://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">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>
-</dl>
-</li>
-</ul>
-<a name="HTTP_MIN_THREADS_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>HTTP_MIN_THREADS_KEY</h4>
-<pre>static final&nbsp;<a href="https://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_MIN_THREADS_KEY</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_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="HTTP_MAX_THREADS_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>HTTP_MAX_THREADS_KEY</h4>
-<pre>static final&nbsp;<a href="https://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">HTTP_MAX_THREADS_KEY</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_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="THRIFT_SSL_ENABLED_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>THRIFT_SSL_ENABLED_KEY</h4>
-<pre>static final&nbsp;<a href="https://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_ENABLED_KEY</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_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="THRIFT_SSL_KEYSTORE_STORE_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>THRIFT_SSL_KEYSTORE_STORE_KEY</h4>
-<pre>static final&nbsp;<a href="https://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_STORE_KEY</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_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="THRIFT_SSL_KEYSTORE_PASSWORD_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>THRIFT_SSL_KEYSTORE_PASSWORD_KEY</h4>
-<pre>static final&nbsp;<a href="https://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_PASSWORD_KEY</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_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY</h4>
-<pre>static final&nbsp;<a href="https://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_KEYSTORE_KEYPASSWORD_KEY</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_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY</h4>
-<pre>static final&nbsp;<a href="https://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_CIPHER_SUITES_KEY</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_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY</h4>
-<pre>static final&nbsp;<a href="https://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_CIPHER_SUITES_KEY</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_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY</h4>
-<pre>static final&nbsp;<a href="https://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.181">THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY</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_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="THRIFT_SSL_INCLUDE_PROTOCOLS_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>THRIFT_SSL_INCLUDE_PROTOCOLS_KEY</h4>
-<pre>static final&nbsp;<a href="https://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.182">THRIFT_SSL_INCLUDE_PROTOCOLS_KEY</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_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="THRIFT_SUPPORT_PROXYUSER_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>THRIFT_SUPPORT_PROXYUSER_KEY</h4>
-<pre>static final&nbsp;<a href="https://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.184">THRIFT_SUPPORT_PROXYUSER_KEY</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_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="THRIFT_DNS_INTERFACE_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>THRIFT_DNS_INTERFACE_KEY</h4>
-<pre>static final&nbsp;<a href="https://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_DNS_INTERFACE_KEY</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_DNS_INTERFACE_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="THRIFT_DNS_NAMESERVER_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>THRIFT_DNS_NAMESERVER_KEY</h4>
-<pre>static final&nbsp;<a href="https://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.187">THRIFT_DNS_NAMESERVER_KEY</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_DNS_NAMESERVER_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="THRIFT_KERBEROS_PRINCIPAL_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>THRIFT_KERBEROS_PRINCIPAL_KEY</h4>
-<pre>static final&nbsp;<a href="https://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.188">THRIFT_KERBEROS_PRINCIPAL_KEY</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_KERBEROS_PRINCIPAL_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="THRIFT_KEYTAB_FILE_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>THRIFT_KEYTAB_FILE_KEY</h4>
-<pre>static final&nbsp;<a href="https://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.189">THRIFT_KEYTAB_FILE_KEY</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_KEYTAB_FILE_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="THRIFT_SPNEGO_PRINCIPAL_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>THRIFT_SPNEGO_PRINCIPAL_KEY</h4>
-<pre>static final&nbsp;<a href="https://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.190">THRIFT_SPNEGO_PRINCIPAL_KEY</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SPNEGO_PRINCIPAL_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="THRIFT_SPNEGO_KEYTAB_FILE_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>THRIFT_SPNEGO_KEYTAB_FILE_KEY</h4>
-<pre>static final&nbsp;<a href="https://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.191">THRIFT_SPNEGO_KEYTAB_FILE_KEY</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SPNEGO_KEYTAB_FILE_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY</h4>
-<pre>public static final&nbsp;<a href="https://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.198">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>
-<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_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT">
-<!--   -->
-</a>
-<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.200">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>
-</dl>
-</li>
-</ul>
-<a name="THRIFT_QOP_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>THRIFT_QOP_KEY</h4>
-<pre>static final&nbsp;<a href="https://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.212">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
- auth: authentication only
-
- This is used to authenticate the callers and support impersonation.
- The thrift server and the HBase cluster must run in secure mode.</div>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_QOP_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="BACKLOG_CONF_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>BACKLOG_CONF_KEY</h4>
-<pre>static final&nbsp;<a href="https://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.213">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>
-</dl>
-</li>
-</ul>
-<a name="DEFAULT_BIND_ADDR">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>DEFAULT_BIND_ADDR</h4>
-<pre>private static final&nbsp;<a href="https://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.215">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>
-</dl>
-</li>
-</ul>
-<a name="DEFAULT_LISTEN_PORT">
-<!--   -->
-</a>
-<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.216">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>
-</dl>
-</li>
-</ul>
-<a name="HREGION_VERSION">
-<!--   -->
-</a>
-<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.217">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>
-</dl>
-</li>
-</ul>
-<a name="listenPort">
-<!--   -->
-</a>
-<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.219">listenPort</a></pre>
-</li>
-</ul>
-<a name="conf">
-<!--   -->
-</a>
-<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.221">conf</a></pre>
-</li>
-</ul>
-<a name="tserver">
-<!--   -->
-</a>
-<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.222">tserver</a></pre>
-</li>
-</ul>
-<a name="httpServer">
-<!--   -->
-</a>
-<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.223">httpServer</a></pre>
-</li>
-</ul>
-<a name="handler">
-<!--   -->
-</a>
-<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.224">handler</a></pre>
-</li>
-</ul>
-<a name="metrics">
-<!--   -->
-</a>
-<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.225">metrics</a></pre>
-</li>
-</ul>
-<a name="hbaseHandler">
-<!--   -->
-</a>
-<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.226">hbaseHandler</a></pre>
-</li>
-</ul>
-<a name="serviceUGI">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>serviceUGI</h4>
-<pre>private final&nbsp;org.apache.hadoop.security.UserGroupInformation <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.227">serviceUGI</a></pre>
-</li>
-</ul>
-<a name="qop">
-<!--   -->
-</a>
-<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.229">qop</a></pre>
-</li>
-</ul>
-<a name="host">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>host</h4>
-<pre>private&nbsp;<a href="https://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.230">host</a></pre>
-</li>
-</ul>
-<a name="securityEnabled">
-<!--   -->
-</a>
-<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.232">securityEnabled</a></pre>
-</li>
-</ul>
-<a name="doAsEnabled">
-<!--   -->
-</a>
-<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.233">doAsEnabled</a></pre>
-</li>
-</ul>
-<a name="pauseMonitor">
-<!--   -->
-</a>
-<ul class="blockList">
-<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.235">pauseMonitor</a></pre>
-</li>
-</ul>
-<a name="THRIFT_HTTP_ALLOW_OPTIONS_METHOD">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>THRIFT_HTTP_ALLOW_OPTIONS_METHOD</h4>
-<pre>static&nbsp;<a href="https://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.237">THRIFT_HTTP_ALLOW_OPTIONS_METHOD</a></pre>
-</li>
-</ul>
-<a name="THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT</h4>
-<pre>private static&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.238">THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT</a></pre>
-</li>
-</ul>
-</li>
-</ul>
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.detail">
-<!--   -->
-</a>
-<h3>Constructor Detail</h3>
-<a name="ThriftServerRunner-org.apache.hadoop.conf.Configuration-">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>ThriftServerRunner</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.343">ThriftServerRunner</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
-                   throws <a href="https://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="https://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>
-</li>
-</ul>
-<!-- ============ METHOD DETAIL ========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.detail">
-<!--   -->
-</a>
-<h3>Method Detail</h3>
-<a name="checkHttpSecurity-org.apache.hadoop.hbase.security.SaslUtil.QualityOfProtection-org.apache.hadoop.conf.Configuration-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>checkHttpSecurity</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.391">checkHttpSecurity</a>(<a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security">SaslUtil.QualityOfProtection</a>&nbsp;qop,
-                               org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
-</li>
-</ul>
-<a name="run--">
-<!--   -->
-</a>
-<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.404">run</a>()</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="https://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="https://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>
-</dl>
-</li>
-</ul>
-<a name="shutdown--">
-<!--   -->
-</a>
-<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.429">shutdown</a>()</pre>
-</li>
-</ul>
-<a name="setupHTTPServer--">
-<!--   -->
-</a>
-<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.448">setupHTTPServer</a>()
-                      throws <a href="https://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="https://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="setupServer--">
-<!--   -->
-</a>
-<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.541">setupServer</a>()
-                  throws <a href="https://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>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://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>
-</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.689">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="https://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.703">createExecutor</a>(<a href="https://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="https://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>
-</ul>
-<a name="getBindAddress-org.apache.hadoop.conf.Configuration-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getBindAddress</h4>
-<pre>private&nbsp;<a href="https://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.714">getBindAddress</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
-                            throws <a href="https://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>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/net/UnknownHostException.html?is-external=true" title="class or interface in java.net">UnknownHostException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="getIOError-java.lang.Throwable-">
-<!--   -->
-</a>
-<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.1963">getIOError</a>(<a href="https://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-">
-<!--   -->
-</a>
-<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.1972">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="https://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="https://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="https://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>
-</ul>
-<a name="registerFilters-org.apache.hadoop.conf.Configuration-">
-<!--   -->
-</a>
-<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.1984">registerFilters</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
-</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-</div>
-<!-- ========= END OF CLASS DATA ========= -->
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar.bottom">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.bottom.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/ThriftServerRunner.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" target="_top">Frames</a></li>
-<li><a href="ThriftServerRunner.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
-<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 594031c..267f51d 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftUtilities.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftUtilities.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li>Next&nbsp;Class</li>
 </ul>
 <ul class="navList">
@@ -429,7 +429,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li>Next&nbsp;Class</li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/class-use/Constants.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/Constants.html b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/Constants.html
new file mode 100644
index 0000000..06ba305
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/Constants.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.thrift.Constants (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.thrift.Constants (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/Constants.html" target="_top">Frames</a></li>
+<li><a href="Constants.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.thrift.Constants" class="title">Uses of Class<br>org.apache.hadoop.hbase.thrift.Constants</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.thrift.Constants</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/Constants.html" target="_top">Frames</a></li>
+<li><a href="Constants.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>


[39/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html
index 7c7d5f4..d7a3f03 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/THBaseThreadPoolExecutor.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHttpServlet.HttpKerberosServerAction.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -186,8 +186,8 @@ extends org.apache.thrift.server.TServlet</pre>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html#doAsEnabled">doAsEnabled</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html#hbaseHandler">hbaseHandler</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html#handler">handler</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private org.apache.hadoop.security.UserGroupInformation</code></td>
@@ -228,11 +228,11 @@ extends org.apache.thrift.server.TServlet</pre>
 <th class="colOne" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html#ThriftHttpServlet-org.apache.thrift.TProcessor-org.apache.thrift.protocol.TProtocolFactory-org.apache.hadoop.security.UserGroupInformation-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler-boolean-boolean-">ThriftHttpServlet</a></span>(org.apache.thrift.TProcessor&nbsp;processor,
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html#ThriftHttpServlet-org.apache.thrift.TProcessor-org.apache.thrift.protocol.TProtocolFactory-org.apache.hadoop.security.UserGroupInformation-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.thrift.HBaseServiceHandler-boolean-boolean-">ThriftHttpServlet</a></span>(org.apache.thrift.TProcessor&nbsp;processor,
                  org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
                  org.apache.hadoop.security.UserGroupInformation&nbsp;serviceUGI,
                  org.apache.hadoop.conf.Configuration&nbsp;conf,
-                 <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a>&nbsp;hbaseHandler,
+                 <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a>&nbsp;handler,
                  boolean&nbsp;securityEnabled,
                  boolean&nbsp;doAsEnabled)</code>&nbsp;</td>
 </tr>
@@ -345,13 +345,13 @@ extends org.apache.thrift.server.TServlet</pre>
 <pre>private final transient&nbsp;org.apache.hadoop.security.UserGroupInformation <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html#line.60">httpUGI</a></pre>
 </li>
 </ul>
-<a name="hbaseHandler">
+<a name="handler">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>hbaseHandler</h4>
-<pre>private final transient&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/ThriftHttpServlet.html#line.61">hbaseHandler</a></pre>
+<h4>handler</h4>
+<pre>private final transient&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html#line.61">handler</a></pre>
 </li>
 </ul>
 <a name="doAsEnabled">
@@ -393,7 +393,7 @@ extends org.apache.thrift.server.TServlet</pre>
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="ThriftHttpServlet-org.apache.thrift.TProcessor-org.apache.thrift.protocol.TProtocolFactory-org.apache.hadoop.security.UserGroupInformation-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler-boolean-boolean-">
+<a name="ThriftHttpServlet-org.apache.thrift.TProcessor-org.apache.thrift.protocol.TProtocolFactory-org.apache.hadoop.security.UserGroupInformation-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.thrift.HBaseServiceHandler-boolean-boolean-">
 <!--   -->
 </a>
 <ul class="blockListLast">
@@ -403,7 +403,7 @@ extends org.apache.thrift.server.TServlet</pre>
                          org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
                          org.apache.hadoop.security.UserGroupInformation&nbsp;serviceUGI,
                          org.apache.hadoop.conf.Configuration&nbsp;conf,
-                         <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a>&nbsp;hbaseHandler,
+                         <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a>&nbsp;handler,
                          boolean&nbsp;securityEnabled,
                          boolean&nbsp;doAsEnabled)
                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -485,7 +485,7 @@ extends org.apache.thrift.server.TServlet</pre>
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/THBaseThreadPoolExecutor.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHttpServlet.HttpKerberosServerAction.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 734cfc3..1088fbe 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServer.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftServer.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":9,"i2":9,"i3":9,"i4":10,"i5":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":9,"i12":9,"i13":10,"i14":10,"i15":10,"i16":9,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":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";
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftUtilities.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/ThriftServer.html" target="_top">Frames</a></li>
@@ -100,18 +100,32 @@ var activeTableTab = "activeTableTab";
 <li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
 <li>
 <ul class="inheritance">
+<li>org.apache.hadoop.conf.Configured</li>
+<li>
+<ul class="inheritance">
 <li>org.apache.hadoop.hbase.thrift.ThriftServer</li>
 </ul>
 </li>
 </ul>
+</li>
+</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>org.apache.hadoop.conf.Configurable, org.apache.hadoop.util.Tool</dd>
+</dl>
+<dl>
+<dt>Direct Known Subclasses:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftServer</a></dd>
+</dl>
 <hr>
 <br>
 <pre>@InterfaceAudience.LimitedPrivate(value="Tools")
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.43">ThriftServer</a>
-extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.159">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 Hbase.thrift IDL file. The server runs in an
  independent process.</div>
@@ -134,68 +148,68 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServer.html#BIND_OPTION">BIND_OPTION</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected org.apache.hadoop.conf.Configuration</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#conf">conf</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServer.html#COMPACT_OPTION">COMPACT_OPTION</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#doAsEnabled">doAsEnabled</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private org.apache.hadoop.conf.Configuration</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#conf">conf</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#hbaseServiceHandler">hbaseServiceHandler</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private static <a href="https://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/thrift/ThriftServer.html#DEFAULT_BIND_ADDR">DEFAULT_BIND_ADDR</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected <a href="https://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/thrift/ThriftServer.html#host">host</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private static int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#DEFAULT_LISTEN_PORT">DEFAULT_LISTEN_PORT</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#httpEnabled">httpEnabled</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServer.html#FRAMED_OPTION">FRAMED_OPTION</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected org.eclipse.jetty.server.Server</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#httpServer">httpServer</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServer.html#INFOPORT_OPTION">INFOPORT_OPTION</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http">InfoServer</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#infoServer">infoServer</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http">InfoServer</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#infoServer">infoServer</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#listenPort">listenPort</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private static <a href="https://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/thrift/ThriftServer.html#KEEP_ALIVE_SEC_OPTION">KEEP_ALIVE_SEC_OPTION</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
 <td class="colFirst"><code>private static org.slf4j.Logger</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#LOG">LOG</a></span></code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#metrics">metrics</a></span></code>&nbsp;</td>
+</tr>
 <tr class="altColor">
-<td class="colFirst"><code>private static <a href="https://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/thrift/ThriftServer.html#MAX_QUEUE_SIZE_OPTION">MAX_QUEUE_SIZE_OPTION</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/util/JvmPauseMonitor.html" title="class in org.apache.hadoop.hbase.util">JvmPauseMonitor</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#pauseMonitor">pauseMonitor</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private static <a href="https://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/thrift/ThriftServer.html#MAX_WORKERS_OPTION">MAX_WORKERS_OPTION</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected org.apache.thrift.TProcessor</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#processor">processor</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private static <a href="https://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/thrift/ThriftServer.html#MIN_WORKERS_OPTION">MIN_WORKERS_OPTION</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security">SaslUtil.QualityOfProtection</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#qop">qop</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/thrift/ThriftServer.html#PORT_OPTION">PORT_OPTION</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#securityEnabled">securityEnabled</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private static <a href="https://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/thrift/ThriftServer.html#READ_TIMEOUT_OPTION">READ_TIMEOUT_OPTION</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected org.apache.hadoop.security.UserGroupInformation</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#serviceUGI">serviceUGI</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#serverRunner">serverRunner</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected org.apache.thrift.server.TServer</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#tserver">tserver</a></span></code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -230,45 +244,157 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <th class="colLast" scope="col">Method and Description</th>
 </tr>
 <tr id="i0" class="altColor">
-<td class="colFirst"><code>(package private) void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#doMain-java.lang.String:A-">doMain</a></span>(<a href="https://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 or shuts down the Thrift server, depending on the arguments.</div>
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#addOptions-org.apache.hbase.thirdparty.org.apache.commons.cli.Options-">addOptions</a></span>(org.apache.hbase.thirdparty.org.apache.commons.cli.Options&nbsp;options)</code>
+<div class="block">Add options to command lines</div>
 </td>
 </tr>
 <tr id="i1" class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#checkHttpSecurity-org.apache.hadoop.hbase.security.SaslUtil.QualityOfProtection-org.apache.hadoop.conf.Configuration-">checkHttpSecurity</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,
+                 org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>(package private) <a href="https://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/thrift/ThriftServer.html#createExecutor-java.util.concurrent.BlockingQueue-int-int-">createExecutor</a></span>(<a href="https://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="https://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)</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#createHandler-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.UserProvider-">createHandler</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+             <a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a>&nbsp;userProvider)</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>protected org.apache.thrift.TProcessor</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#createProcessor--">createProcessor</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetAddress.html?is-external=true" title="class or interface in java.net">InetAddress</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#getBindAddress-org.apache.hadoop.conf.Configuration-">getBindAddress</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
+</tr>
+<tr id="i6" 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/ThriftServer.html#getProtocolFactory--">getProtocolFactory</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i7" class="rowColor">
+<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/thrift/ThriftServer.html#getTHsHaServer-org.apache.thrift.transport.TNonblockingServerTransport-org.apache.thrift.protocol.TProtocolFactory-org.apache.thrift.TProcessor-org.apache.thrift.transport.TTransportFactory-java.net.InetSocketAddress-">getTHsHaServer</a></span>(org.apache.thrift.transport.TNonblockingServerTransport&nbsp;serverTransport,
+              org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
+              org.apache.thrift.TProcessor&nbsp;processor,
+              org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
+              <a href="https://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="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/thrift/ThriftServer.html#getTNonBlockingServer-org.apache.thrift.transport.TNonblockingServerTransport-org.apache.thrift.protocol.TProtocolFactory-org.apache.thrift.TProcessor-org.apache.thrift.transport.TTransportFactory-java.net.InetSocketAddress-">getTNonBlockingServer</a></span>(org.apache.thrift.transport.TNonblockingServerTransport&nbsp;serverTransport,
+                     org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
+                     org.apache.thrift.TProcessor&nbsp;processor,
+                     org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
+                     <a href="https://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 org.apache.thrift.server.TServer</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#getTThreadedSelectorServer-org.apache.thrift.transport.TNonblockingServerTransport-org.apache.thrift.protocol.TProtocolFactory-org.apache.thrift.TProcessor-org.apache.thrift.transport.TTransportFactory-java.net.InetSocketAddress-">getTThreadedSelectorServer</a></span>(org.apache.thrift.transport.TNonblockingServerTransport&nbsp;serverTransport,
+                          org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
+                          org.apache.thrift.TProcessor&nbsp;processor,
+                          org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
+                          <a href="https://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="i10" 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/thrift/ThriftServer.html#getTThreadPoolServer-org.apache.thrift.protocol.TProtocolFactory-org.apache.thrift.TProcessor-org.apache.thrift.transport.TTransportFactory-java.net.InetSocketAddress-">getTThreadPoolServer</a></span>(org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
+                    org.apache.thrift.TProcessor&nbsp;processor,
+                    org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
+                    <a href="https://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="i11" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#main-java.lang.String:A-">main</a></span>(<a href="https://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="i2" class="altColor">
-<td class="colFirst"><code>private static void</code></td>
+<tr id="i12" class="altColor">
+<td class="colFirst"><code>protected static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#optionToConf-org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine-java.lang.String-org.apache.hadoop.conf.Configuration-java.lang.String-">optionToConf</a></span>(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine&nbsp;cmd,
             <a href="https://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="https://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)</code>&nbsp;</td>
 </tr>
-<tr id="i3" class="rowColor">
-<td class="colFirst"><code>private static void</code></td>
+<tr id="i13" class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#parseCommandLine-org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine-org.apache.hbase.thirdparty.org.apache.commons.cli.Options-">parseCommandLine</a></span>(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine&nbsp;cmd,
+                org.apache.hbase.thirdparty.org.apache.commons.cli.Options&nbsp;options)</code>&nbsp;</td>
+</tr>
+<tr id="i14" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#printUsageAndExit-org.apache.hbase.thirdparty.org.apache.commons.cli.Options-int-">printUsageAndExit</a></span>(org.apache.hbase.thirdparty.org.apache.commons.cli.Options&nbsp;options,
                  int&nbsp;exitCode)</code>&nbsp;</td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#processOptions-java.lang.String:A-">processOptions</a></span>(<a href="https://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">Parse the command line options to set parameters the conf.</div>
 </td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i16" class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#registerFilters-org.apache.hadoop.conf.Configuration-">registerFilters</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
+</tr>
+<tr id="i17" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#run--">run</a></span>()</code>
+<div class="block">Run without any command line arguments</div>
+</td>
+</tr>
+<tr id="i18" class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#run-java.lang.String:A-">run</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;strings)</code>&nbsp;</td>
+</tr>
+<tr id="i19" class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#setupHTTPServer--">setupHTTPServer</a></span>()</code>
+<div class="block">Setup a HTTP Server using Jetty to serve calls from THttpClient</div>
+</td>
+</tr>
+<tr id="i20" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#setupParamters--">setupParamters</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i21" class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#setupServer--">setupServer</a></span>()</code>
+<div class="block">Setting up the thrift TServer</div>
+</td>
+</tr>
+<tr id="i22" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#startInfoServer--">startInfoServer</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#stop--">stop</a></span>()</code>&nbsp;</td>
 </tr>
 </table>
 <ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.conf.Configured">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.conf.Configured</h3>
+<code>getConf, setConf</code></li>
+</ul>
+<ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
 <code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
 </ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.conf.Configurable">
+<!--   -->
+</a>
+<h3>Methods inherited from interface&nbsp;org.apache.hadoop.conf.Configurable</h3>
+<code>getConf, setConf</code></li>
+</ul>
 </li>
 </ul>
 </li>
@@ -289,190 +415,142 @@ extends <a href="https://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/thrift/ThriftServer.html#line.45">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.161">LOG</a></pre>
 </li>
 </ul>
-<a name="MIN_WORKERS_OPTION">
+<a name="conf">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>MIN_WORKERS_OPTION</h4>
-<pre>private static final&nbsp;<a href="https://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/ThriftServer.html#line.47">MIN_WORKERS_OPTION</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServer.MIN_WORKERS_OPTION">Constant Field Values</a></dd>
-</dl>
+<h4>conf</h4>
+<pre>protected&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.165">conf</a></pre>
 </li>
 </ul>
-<a name="MAX_WORKERS_OPTION">
+<a name="infoServer">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>MAX_WORKERS_OPTION</h4>
-<pre>private static final&nbsp;<a href="https://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/ThriftServer.html#line.48">MAX_WORKERS_OPTION</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServer.MAX_WORKERS_OPTION">Constant Field Values</a></dd>
-</dl>
+<h4>infoServer</h4>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http">InfoServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.167">infoServer</a></pre>
 </li>
 </ul>
-<a name="MAX_QUEUE_SIZE_OPTION">
+<a name="processor">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>MAX_QUEUE_SIZE_OPTION</h4>
-<pre>private static final&nbsp;<a href="https://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/ThriftServer.html#line.49">MAX_QUEUE_SIZE_OPTION</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServer.MAX_QUEUE_SIZE_OPTION">Constant Field Values</a></dd>
-</dl>
+<h4>processor</h4>
+<pre>protected&nbsp;org.apache.thrift.TProcessor <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.169">processor</a></pre>
 </li>
 </ul>
-<a name="KEEP_ALIVE_SEC_OPTION">
+<a name="metrics">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>KEEP_ALIVE_SEC_OPTION</h4>
-<pre>private static final&nbsp;<a href="https://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/ThriftServer.html#line.50">KEEP_ALIVE_SEC_OPTION</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServer.KEEP_ALIVE_SEC_OPTION">Constant Field Values</a></dd>
-</dl>
+<h4>metrics</h4>
+<pre>protected&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/ThriftServer.html#line.171">metrics</a></pre>
 </li>
 </ul>
-<a name="BIND_OPTION">
+<a name="hbaseServiceHandler">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>BIND_OPTION</h4>
-<pre>static final&nbsp;<a href="https://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/ThriftServer.html#line.51">BIND_OPTION</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServer.BIND_OPTION">Constant Field Values</a></dd>
-</dl>
+<h4>hbaseServiceHandler</h4>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.172">hbaseServiceHandler</a></pre>
 </li>
 </ul>
-<a name="COMPACT_OPTION">
+<a name="serviceUGI">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>COMPACT_OPTION</h4>
-<pre>static final&nbsp;<a href="https://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/ThriftServer.html#line.52">COMPACT_OPTION</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServer.COMPACT_OPTION">Constant Field Values</a></dd>
-</dl>
+<h4>serviceUGI</h4>
+<pre>protected&nbsp;org.apache.hadoop.security.UserGroupInformation <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.173">serviceUGI</a></pre>
 </li>
 </ul>
-<a name="FRAMED_OPTION">
+<a name="httpEnabled">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>FRAMED_OPTION</h4>
-<pre>static final&nbsp;<a href="https://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/ThriftServer.html#line.53">FRAMED_OPTION</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServer.FRAMED_OPTION">Constant Field Values</a></dd>
-</dl>
+<h4>httpEnabled</h4>
+<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.174">httpEnabled</a></pre>
 </li>
 </ul>
-<a name="PORT_OPTION">
+<a name="qop">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>PORT_OPTION</h4>
-<pre>static final&nbsp;<a href="https://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/ThriftServer.html#line.54">PORT_OPTION</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServer.PORT_OPTION">Constant Field Values</a></dd>
-</dl>
+<h4>qop</h4>
+<pre>protected&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/ThriftServer.html#line.176">qop</a></pre>
 </li>
 </ul>
-<a name="INFOPORT_OPTION">
+<a name="host">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>INFOPORT_OPTION</h4>
-<pre>static final&nbsp;<a href="https://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/ThriftServer.html#line.55">INFOPORT_OPTION</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServer.INFOPORT_OPTION">Constant Field Values</a></dd>
-</dl>
+<h4>host</h4>
+<pre>protected&nbsp;<a href="https://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/ThriftServer.html#line.177">host</a></pre>
 </li>
 </ul>
-<a name="DEFAULT_BIND_ADDR">
+<a name="listenPort">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>DEFAULT_BIND_ADDR</h4>
-<pre>private static final&nbsp;<a href="https://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/ThriftServer.html#line.57">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.ThriftServer.DEFAULT_BIND_ADDR">Constant Field Values</a></dd>
-</dl>
+<h4>listenPort</h4>
+<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.178">listenPort</a></pre>
 </li>
 </ul>
-<a name="DEFAULT_LISTEN_PORT">
+<a name="securityEnabled">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>DEFAULT_LISTEN_PORT</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.58">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.ThriftServer.DEFAULT_LISTEN_PORT">Constant Field Values</a></dd>
-</dl>
+<h4>securityEnabled</h4>
+<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.181">securityEnabled</a></pre>
 </li>
 </ul>
-<a name="conf">
+<a name="doAsEnabled">
 <!--   -->
 </a>
 <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/ThriftServer.html#line.60">conf</a></pre>
+<h4>doAsEnabled</h4>
+<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.182">doAsEnabled</a></pre>
 </li>
 </ul>
-<a name="serverRunner">
+<a name="pauseMonitor">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>serverRunner</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.61">serverRunner</a></pre>
+<h4>pauseMonitor</h4>
+<pre>protected&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/ThriftServer.html#line.184">pauseMonitor</a></pre>
 </li>
 </ul>
-<a name="infoServer">
+<a name="tserver">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>infoServer</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http">InfoServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.63">infoServer</a></pre>
+<h4>tserver</h4>
+<pre>protected volatile&nbsp;org.apache.thrift.server.TServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.186">tserver</a></pre>
 </li>
 </ul>
-<a name="READ_TIMEOUT_OPTION">
+<a name="httpServer">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>READ_TIMEOUT_OPTION</h4>
-<pre>private static final&nbsp;<a href="https://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/ThriftServer.html#line.65">READ_TIMEOUT_OPTION</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftServer.READ_TIMEOUT_OPTION">Constant Field Values</a></dd>
-</dl>
+<h4>httpServer</h4>
+<pre>protected volatile&nbsp;org.eclipse.jetty.server.Server <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.187">httpServer</a></pre>
 </li>
 </ul>
 </li>
@@ -489,7 +567,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ThriftServer</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.71">ThriftServer</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.194">ThriftServer</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 </li>
@@ -500,45 +578,248 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <!--   -->
 </a>
 <h3>Method Detail</h3>
+<a name="setupParamters--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setupParamters</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.198">setupParamters</a>()
+                       throws <a href="https://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="https://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="startInfoServer--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>startInfoServer</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.247">startInfoServer</a>()
+                        throws <a href="https://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="https://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="checkHttpSecurity-org.apache.hadoop.hbase.security.SaslUtil.QualityOfProtection-org.apache.hadoop.conf.Configuration-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>checkHttpSecurity</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.261">checkHttpSecurity</a>(<a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security">SaslUtil.QualityOfProtection</a>&nbsp;qop,
+                                 org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+</li>
+</ul>
+<a name="createHandler-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.UserProvider-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createHandler</h4>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.270">createHandler</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                                            <a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a>&nbsp;userProvider)
+                                     throws <a href="https://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="https://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="createProcessor--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createProcessor</h4>
+<pre>protected&nbsp;org.apache.thrift.TProcessor&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.275">createProcessor</a>()</pre>
+</li>
+</ul>
 <a name="printUsageAndExit-org.apache.hbase.thirdparty.org.apache.commons.cli.Options-int-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>printUsageAndExit</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.75">printUsageAndExit</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.Options&nbsp;options,
-                                      int&nbsp;exitCode)
-                               throws org.apache.hadoop.util.Shell.ExitCodeException</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.280">printUsageAndExit</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.Options&nbsp;options,
+                                 int&nbsp;exitCode)
+                          throws org.apache.hadoop.util.Shell.ExitCodeException</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code>org.apache.hadoop.util.Shell.ExitCodeException</code></dd>
 </dl>
 </li>
 </ul>
-<a name="doMain-java.lang.String:A-">
+<a name="setupHTTPServer--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>doMain</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.91">doMain</a>(<a href="https://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="https://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 or shuts down the Thrift server, depending on the arguments.</div>
+<h4>setupHTTPServer</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.297">setupHTTPServer</a>()
+                        throws <a href="https://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">Setup a HTTP Server using Jetty to serve calls from THttpClient</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - IOException</dd>
+</dl>
+</li>
+</ul>
+<a name="setupServer--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setupServer</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.393">setupServer</a>()
+                    throws <a href="https://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>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<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="https://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>
 </li>
 </ul>
+<a name="getTNonBlockingServer-org.apache.thrift.transport.TNonblockingServerTransport-org.apache.thrift.protocol.TProtocolFactory-org.apache.thrift.TProcessor-org.apache.thrift.transport.TTransportFactory-java.net.InetSocketAddress-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTNonBlockingServer</h4>
+<pre>private&nbsp;org.apache.thrift.server.TServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.501">getTNonBlockingServer</a>(org.apache.thrift.transport.TNonblockingServerTransport&nbsp;serverTransport,
+                                                               org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
+                                                               org.apache.thrift.TProcessor&nbsp;processor,
+                                                               org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
+                                                               <a href="https://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)</pre>
+</li>
+</ul>
+<a name="getTHsHaServer-org.apache.thrift.transport.TNonblockingServerTransport-org.apache.thrift.protocol.TProtocolFactory-org.apache.thrift.TProcessor-org.apache.thrift.transport.TTransportFactory-java.net.InetSocketAddress-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTHsHaServer</h4>
+<pre>private&nbsp;org.apache.thrift.server.TServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.512">getTHsHaServer</a>(org.apache.thrift.transport.TNonblockingServerTransport&nbsp;serverTransport,
+                                                        org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
+                                                        org.apache.thrift.TProcessor&nbsp;processor,
+                                                        org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
+                                                        <a href="https://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)</pre>
+</li>
+</ul>
+<a name="getTThreadedSelectorServer-org.apache.thrift.transport.TNonblockingServerTransport-org.apache.thrift.protocol.TProtocolFactory-org.apache.thrift.TProcessor-org.apache.thrift.transport.TTransportFactory-java.net.InetSocketAddress-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTThreadedSelectorServer</h4>
+<pre>private&nbsp;org.apache.thrift.server.TServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.529">getTThreadedSelectorServer</a>(org.apache.thrift.transport.TNonblockingServerTransport&nbsp;serverTransport,
+                                                                    org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
+                                                                    org.apache.thrift.TProcessor&nbsp;processor,
+                                                                    org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
+                                                                    <a href="https://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)</pre>
+</li>
+</ul>
+<a name="getTThreadPoolServer-org.apache.thrift.protocol.TProtocolFactory-org.apache.thrift.TProcessor-org.apache.thrift.transport.TTransportFactory-java.net.InetSocketAddress-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTThreadPoolServer</h4>
+<pre>private&nbsp;org.apache.thrift.server.TServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.549">getTThreadPoolServer</a>(org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
+                                                              org.apache.thrift.TProcessor&nbsp;processor,
+                                                              org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
+                                                              <a href="https://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 <a href="https://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>
+<dd><code><a href="https://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>
+</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/ThriftServer.html#line.568">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="https://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/ThriftServer.html#line.582">createExecutor</a>(<a href="https://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="https://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>
+</ul>
+<a name="getBindAddress-org.apache.hadoop.conf.Configuration-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getBindAddress</h4>
+<pre>private&nbsp;<a href="https://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/ThriftServer.html#line.593">getBindAddress</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
+                            throws <a href="https://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>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/net/UnknownHostException.html?is-external=true" title="class or interface in java.net">UnknownHostException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="registerFilters-org.apache.hadoop.conf.Configuration-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>registerFilters</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.600">registerFilters</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+</li>
+</ul>
+<a name="addOptions-org.apache.hbase.thirdparty.org.apache.commons.cli.Options-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>addOptions</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.619">addOptions</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.Options&nbsp;options)</pre>
+<div class="block">Add options to command lines</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>options</code> - options</dd>
+</dl>
+</li>
+</ul>
+<a name="parseCommandLine-org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine-org.apache.hbase.thirdparty.org.apache.commons.cli.Options-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>parseCommandLine</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.654">parseCommandLine</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine&nbsp;cmd,
+                                org.apache.hbase.thirdparty.org.apache.commons.cli.Options&nbsp;options)
+                         throws org.apache.hadoop.util.Shell.ExitCodeException</pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>org.apache.hadoop.util.Shell.ExitCodeException</code></dd>
+</dl>
+</li>
+</ul>
 <a name="processOptions-java.lang.String:A-">
 <!--   -->
 </a>
 <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="https://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.706">processOptions</a>(<a href="https://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="https://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>
@@ -553,7 +834,7 @@ extends <a href="https://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.203">stop</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.722">stop</a>()</pre>
 </li>
 </ul>
 <a name="optionToConf-org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine-java.lang.String-org.apache.hadoop.conf.Configuration-java.lang.String-">
@@ -562,10 +843,43 @@ extends <a href="https://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.215">optionToConf</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine&nbsp;cmd,
-                                 <a href="https://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="https://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>
+<pre>protected static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.749">optionToConf</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine&nbsp;cmd,
+                                   <a href="https://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="https://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>
+</li>
+</ul>
+<a name="run--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>run</h4>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.763">run</a>()
+        throws <a href="https://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">Run without any command line arguments</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>exit code</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code> - exception</dd>
+</dl>
+</li>
+</ul>
+<a name="run-java.lang.String:A-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>run</h4>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.768">run</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;strings)
+        throws <a href="https://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>
+<dd><code>run</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.util.Tool</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://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>
 </li>
 </ul>
 <a name="main-java.lang.String:A-">
@@ -574,7 +888,7 @@ extends <a href="https://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.224">main</a>(<a href="https://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.783">main</a>(<a href="https://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="https://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>
@@ -611,7 +925,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftUtilities.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/ThriftServer.html" target="_top">Frames</a></li>


[10/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html
index 1a0f64e..2290ca8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html
@@ -26,849 +26,796 @@
 <span class="sourceLineNo">018</span> */<a name="line.18"></a>
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.thrift2;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.appendFromThrift;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.columnFamilyDescriptorFromThrift;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.compareOpFromThrift;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.deleteFromThrift;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.deletesFromThrift;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.getFromThrift;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.getsFromThrift;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.incrementFromThrift;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.namespaceDescriptorFromHBase;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.namespaceDescriptorFromThrift;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.namespaceDescriptorsFromHBase;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.putFromThrift;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.putsFromThrift;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.resultFromHBase;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.resultsFromHBase;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.rowMutationsFromThrift;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.scanFromThrift;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.splitKeyFromThrift;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableDescriptorFromHBase;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableDescriptorFromThrift;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableDescriptorsFromHBase;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableNameFromThrift;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableNamesFromHBase;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import static org.apache.thrift.TBaseHelper.byteBufferToByteArray;<a name="line.44"></a>
-<span class="sourceLineNo">045</span><a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.io.IOException;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.lang.reflect.InvocationHandler;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.lang.reflect.InvocationTargetException;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.lang.reflect.Method;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.lang.reflect.Proxy;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.nio.ByteBuffer;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import java.util.ArrayList;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import java.util.Collections;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import java.util.List;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import java.util.Map;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import java.util.concurrent.ConcurrentHashMap;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import java.util.regex.Pattern;<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.conf.Configuration;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.TableName;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.client.Table;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.thrift.ThriftMetrics;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.thrift2.generated.TAppend;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.thrift2.generated.TColumnFamilyDescriptor;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.thrift2.generated.TCompareOp;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.thrift2.generated.TDelete;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.thrift2.generated.TGet;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.thrift2.generated.THBaseService;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.thrift2.generated.THRegionLocation;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.thrift2.generated.TIOError;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.thrift2.generated.TIllegalArgument;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.thrift2.generated.TIncrement;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.thrift2.generated.TNamespaceDescriptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.thrift2.generated.TPut;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.thrift2.generated.TResult;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.thrift2.generated.TRowMutations;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.thrift2.generated.TScan;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.thrift2.generated.TTableName;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.util.ConnectionCache;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.thrift.TException;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.slf4j.Logger;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.slf4j.LoggerFactory;<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> * This class is a glue object that connects Thrift RPC calls to the HBase client API primarily<a name="line.97"></a>
-<span class="sourceLineNo">098</span> * defined in the Table interface.<a name="line.98"></a>
-<span class="sourceLineNo">099</span> */<a name="line.99"></a>
-<span class="sourceLineNo">100</span>@InterfaceAudience.Private<a name="line.100"></a>
-<span class="sourceLineNo">101</span>@SuppressWarnings("deprecation")<a name="line.101"></a>
-<span class="sourceLineNo">102</span>public class ThriftHBaseServiceHandler implements THBaseService.Iface {<a name="line.102"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_READONLY_ENABLED;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_READONLY_ENABLED_DEFAULT;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.appendFromThrift;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.columnFamilyDescriptorFromThrift;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.compareOpFromThrift;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.deleteFromThrift;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.deletesFromThrift;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.getFromThrift;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.getsFromThrift;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.incrementFromThrift;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.namespaceDescriptorFromHBase;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.namespaceDescriptorFromThrift;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.namespaceDescriptorsFromHBase;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.putFromThrift;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.putsFromThrift;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.resultFromHBase;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.resultsFromHBase;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.rowMutationsFromThrift;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.scanFromThrift;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.splitKeyFromThrift;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableDescriptorFromHBase;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableDescriptorFromThrift;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableDescriptorsFromHBase;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableNameFromThrift;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableNamesFromHBase;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import static org.apache.thrift.TBaseHelper.byteBufferToByteArray;<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.io.IOException;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.nio.ByteBuffer;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.ArrayList;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import java.util.Collections;<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.concurrent.ConcurrentHashMap;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import java.util.regex.Pattern;<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.conf.Configuration;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.TableName;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.client.Table;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.thrift.HBaseServiceHandler;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.thrift2.generated.TAppend;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.thrift2.generated.TColumnFamilyDescriptor;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.thrift2.generated.TCompareOp;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.thrift2.generated.TDelete;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.thrift2.generated.TGet;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.thrift2.generated.THBaseService;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.thrift2.generated.THRegionLocation;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.thrift2.generated.TIOError;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.thrift2.generated.TIllegalArgument;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.thrift2.generated.TIncrement;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.thrift2.generated.TNamespaceDescriptor;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.thrift2.generated.TPut;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.thrift2.generated.TResult;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.thrift2.generated.TRowMutations;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.thrift2.generated.TScan;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.thrift2.generated.TTableName;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.thrift.TException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.slf4j.Logger;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.slf4j.LoggerFactory;<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> * This class is a glue object that connects Thrift RPC calls to the HBase client API primarily<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * defined in the Table interface.<a name="line.95"></a>
+<span class="sourceLineNo">096</span> */<a name="line.96"></a>
+<span class="sourceLineNo">097</span>@InterfaceAudience.Private<a name="line.97"></a>
+<span class="sourceLineNo">098</span>@SuppressWarnings("deprecation")<a name="line.98"></a>
+<span class="sourceLineNo">099</span>public class ThriftHBaseServiceHandler extends HBaseServiceHandler implements THBaseService.Iface {<a name="line.99"></a>
+<span class="sourceLineNo">100</span><a name="line.100"></a>
+<span class="sourceLineNo">101</span>  // TODO: Size of pool configuraple<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  private static final Logger LOG = LoggerFactory.getLogger(ThriftHBaseServiceHandler.class);<a name="line.102"></a>
 <span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  // TODO: Size of pool configuraple<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  private static final Logger LOG = LoggerFactory.getLogger(ThriftHBaseServiceHandler.class);<a name="line.105"></a>
-<span class="sourceLineNo">106</span><a name="line.106"></a>
-<span class="sourceLineNo">107</span>  // nextScannerId and scannerMap are used to manage scanner state<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  // TODO: Cleanup thread for Scanners, Scanner id wrap<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  private final AtomicInteger nextScannerId = new AtomicInteger(0);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  private final Map&lt;Integer, ResultScanner&gt; scannerMap = new ConcurrentHashMap&lt;&gt;();<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>  private final ConnectionCache connectionCache;<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  static final String CLEANUP_INTERVAL = "hbase.thrift.connection.cleanup-interval";<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  static final String MAX_IDLETIME = "hbase.thrift.connection.max-idletime";<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  private static final IOException ioe<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      = new DoNotRetryIOException("Thrift Server is in Read-only mode.");<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  private boolean isReadOnly;<a name="line.119"></a>
+<span class="sourceLineNo">104</span>  // nextScannerId and scannerMap are used to manage scanner state<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  // TODO: Cleanup thread for Scanners, Scanner id wrap<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  private final AtomicInteger nextScannerId = new AtomicInteger(0);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  private final Map&lt;Integer, ResultScanner&gt; scannerMap = new ConcurrentHashMap&lt;&gt;();<a name="line.107"></a>
+<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">109</span>  private static final IOException ioe<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      = new DoNotRetryIOException("Thrift Server is in Read-only mode.");<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private boolean isReadOnly;<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private static class TIOErrorWithCause extends TIOError {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    private Throwable cause;<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>    public TIOErrorWithCause(Throwable cause) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      super();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      this.cause = cause;<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>  public static THBaseService.Iface newInstance(<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      THBaseService.Iface handler, ThriftMetrics metrics) {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    return (THBaseService.Iface) Proxy.newProxyInstance(handler.getClass().getClassLoader(),<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      new Class[] { THBaseService.Iface.class }, new THBaseServiceMetricsProxy(handler, metrics));<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>  private static final class THBaseServiceMetricsProxy implements InvocationHandler {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    private final THBaseService.Iface handler;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    private final ThriftMetrics metrics;<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span>    private THBaseServiceMetricsProxy(THBaseService.Iface handler, ThriftMetrics metrics) {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      this.handler = handler;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      this.metrics = metrics;<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>    @Override<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    public Object invoke(Object proxy, Method m, Object[] args) throws Throwable {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      Object result;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      long start = now();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      try {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>        result = m.invoke(handler, args);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      } catch (InvocationTargetException e) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        metrics.exception(e.getCause());<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        throw e.getTargetException();<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      } catch (Exception e) {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>        metrics.exception(e);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        throw new RuntimeException("unexpected invocation exception: " + e.getMessage());<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      } finally {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        long processTime = now() - start;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>        metrics.incMethodTime(m.getName(), processTime);<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      }<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      return result;<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>  private static class TIOErrorWithCause extends TIOError {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    private Throwable cause;<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>    public TIOErrorWithCause(Throwable cause) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      super();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      this.cause = cause;<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 synchronized Throwable getCause() {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      return cause;<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 boolean equals(Object other) {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      if (super.equals(other) &amp;&amp;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>          other instanceof TIOErrorWithCause) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>        Throwable otherCause = ((TIOErrorWithCause) other).getCause();<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        if (this.getCause() != null) {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>          return otherCause != null &amp;&amp; this.getCause().equals(otherCause);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        } else {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          return otherCause == null;<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>      return false;<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>    @Override<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    public int hashCode() {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      int result = super.hashCode();<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      result = 31 * result + (cause != null ? cause.hashCode() : 0);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      return result;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    }<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>  private static long now() {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    return System.nanoTime();<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>  ThriftHBaseServiceHandler(final Configuration conf,<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      final UserProvider userProvider) throws IOException {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    int cleanInterval = conf.getInt(CLEANUP_INTERVAL, 10 * 1000);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    int maxIdleTime = conf.getInt(MAX_IDLETIME, 10 * 60 * 1000);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    connectionCache = new ConnectionCache(<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      conf, userProvider, cleanInterval, maxIdleTime);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    isReadOnly = conf.getBoolean("hbase.thrift.readonly", false);<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>  private Table getTable(ByteBuffer tableName) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    try {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      return connectionCache.getTable(Bytes.toString(byteBufferToByteArray(tableName)));<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    } catch (IOException ie) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      throw new RuntimeException(ie);<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><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  private RegionLocator getLocator(ByteBuffer tableName) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    try {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      return connectionCache.getRegionLocator(byteBufferToByteArray(tableName));<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    } catch (IOException ie) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      throw new RuntimeException(ie);<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><a name="line.219"></a>
-<span class="sourceLineNo">220</span>  private void closeTable(Table table) throws TIOError {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    try {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      table.close();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    } catch (IOException e) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      throw getTIOError(e);<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>  private TIOError getTIOError(IOException e) {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    TIOError err = new TIOErrorWithCause(e);<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    err.setMessage(e.getMessage());<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    return err;<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>  /**<a name="line.234"></a>
-<span class="sourceLineNo">235</span>   * Assigns a unique ID to the scanner and adds the mapping to an internal HashMap.<a name="line.235"></a>
-<span class="sourceLineNo">236</span>   * @param scanner to add<a name="line.236"></a>
-<span class="sourceLineNo">237</span>   * @return Id for this Scanner<a name="line.237"></a>
-<span class="sourceLineNo">238</span>   */<a name="line.238"></a>
-<span class="sourceLineNo">239</span>  private int addScanner(ResultScanner scanner) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    int id = nextScannerId.getAndIncrement();<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    scannerMap.put(id, scanner);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    return id;<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>   * Returns the Scanner associated with the specified Id.<a name="line.246"></a>
-<span class="sourceLineNo">247</span>   * @param id of the Scanner to get<a name="line.247"></a>
-<span class="sourceLineNo">248</span>   * @return a Scanner, or null if the Id is invalid<a name="line.248"></a>
-<span class="sourceLineNo">249</span>   */<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  private ResultScanner getScanner(int id) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    return scannerMap.get(id);<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>  void setEffectiveUser(String effectiveUser) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    connectionCache.setEffectiveUser(effectiveUser);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  /**<a name="line.258"></a>
-<span class="sourceLineNo">259</span>   * Removes the scanner associated with the specified ID from the internal HashMap.<a name="line.259"></a>
-<span class="sourceLineNo">260</span>   * @param id of the Scanner to remove<a name="line.260"></a>
-<span class="sourceLineNo">261</span>   * @return the removed Scanner, or &lt;code&gt;null&lt;/code&gt; if the Id is invalid<a name="line.261"></a>
-<span class="sourceLineNo">262</span>   */<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  protected ResultScanner removeScanner(int id) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    return scannerMap.remove(id);<a name="line.264"></a>
+<span class="sourceLineNo">121</span>    @Override<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    public synchronized Throwable getCause() {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      return cause;<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 boolean equals(Object other) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      if (super.equals(other) &amp;&amp;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>          other instanceof TIOErrorWithCause) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        Throwable otherCause = ((TIOErrorWithCause) other).getCause();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>        if (this.getCause() != null) {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>          return otherCause != null &amp;&amp; this.getCause().equals(otherCause);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>        } else {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>          return otherCause == null;<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>      return false;<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 hashCode() {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      int result = super.hashCode();<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      result = 31 * result + (cause != null ? cause.hashCode() : 0);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      return result;<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>  ThriftHBaseServiceHandler(final Configuration conf,<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      final UserProvider userProvider) throws IOException {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    super(conf, userProvider);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    isReadOnly = conf.getBoolean(THRIFT_READONLY_ENABLED, THRIFT_READONLY_ENABLED_DEFAULT);<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>  @Override<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  protected Table getTable(ByteBuffer tableName) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    try {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      return connectionCache.getTable(Bytes.toString(byteBufferToByteArray(tableName)));<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    } catch (IOException ie) {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      throw new RuntimeException(ie);<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><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  private RegionLocator getLocator(ByteBuffer tableName) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    try {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      return connectionCache.getRegionLocator(byteBufferToByteArray(tableName));<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    } catch (IOException ie) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      throw new RuntimeException(ie);<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><a name="line.170"></a>
+<span class="sourceLineNo">171</span>  private void closeTable(Table table) throws TIOError {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    try {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      table.close();<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    } catch (IOException e) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      throw getTIOError(e);<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>  private TIOError getTIOError(IOException e) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    TIOError err = new TIOErrorWithCause(e);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    err.setMessage(e.getMessage());<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    return err;<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>   * Assigns a unique ID to the scanner and adds the mapping to an internal HashMap.<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * @param scanner to add<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   * @return Id for this Scanner<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  private int addScanner(ResultScanner scanner) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    int id = nextScannerId.getAndIncrement();<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    scannerMap.put(id, scanner);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    return id;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  }<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>   * Returns the Scanner associated with the specified Id.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * @param id of the Scanner to get<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * @return a Scanner, or null if the Id is invalid<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   */<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  private ResultScanner getScanner(int id) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    return scannerMap.get(id);<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>  /**<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   * Removes the scanner associated with the specified ID from the internal HashMap.<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * @param id of the Scanner to remove<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   * @return the removed Scanner, or &lt;code&gt;null&lt;/code&gt; if the Id is invalid<a name="line.208"></a>
+<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  protected ResultScanner removeScanner(int id) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    return scannerMap.remove(id);<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>  @Override<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  public boolean exists(ByteBuffer table, TGet get) throws TIOError, TException {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    Table htable = getTable(table);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    try {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      return htable.exists(getFromThrift(get));<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    } catch (IOException e) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      throw getTIOError(e);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    } finally {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      closeTable(htable);<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>  @Override<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public List&lt;Boolean&gt; existsAll(ByteBuffer table, List&lt;TGet&gt; gets) throws TIOError, TException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    Table htable = getTable(table);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    try {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      boolean[] exists = htable.existsAll(getsFromThrift(gets));<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      List&lt;Boolean&gt; result = new ArrayList&lt;&gt;(exists.length);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      for (boolean exist : exists) {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        result.add(exist);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      }<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      return result;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    } catch (IOException e) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      throw getTIOError(e);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    } finally {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      closeTable(htable);<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><a name="line.242"></a>
+<span class="sourceLineNo">243</span>  @Override<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  public TResult get(ByteBuffer table, TGet get) throws TIOError, TException {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    Table htable = getTable(table);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    try {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      return resultFromHBase(htable.get(getFromThrift(get)));<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    } catch (IOException e) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      throw getTIOError(e);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    } finally {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      closeTable(htable);<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>  @Override<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  public List&lt;TResult&gt; getMultiple(ByteBuffer table, List&lt;TGet&gt; gets) throws TIOError, TException {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Table htable = getTable(table);<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    try {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      return resultsFromHBase(htable.get(getsFromThrift(gets)));<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    } catch (IOException e) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      throw getTIOError(e);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    } finally {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      closeTable(htable);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    }<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>  @Override<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  public boolean exists(ByteBuffer table, TGet get) throws TIOError, TException {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    Table htable = getTable(table);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    try {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      return htable.exists(getFromThrift(get));<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    } catch (IOException e) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      throw getTIOError(e);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    } finally {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      closeTable(htable);<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><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  @Override<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  public List&lt;Boolean&gt; existsAll(ByteBuffer table, List&lt;TGet&gt; gets) throws TIOError, TException {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    Table htable = getTable(table);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    try {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      boolean[] exists = htable.existsAll(getsFromThrift(gets));<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      List&lt;Boolean&gt; result = new ArrayList&lt;&gt;(exists.length);<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      for (boolean exist : exists) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        result.add(exist);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      }<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      return result;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    } catch (IOException e) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      throw getTIOError(e);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    } finally {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      closeTable(htable);<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><a name="line.295"></a>
-<span class="sourceLineNo">296</span>  @Override<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public TResult get(ByteBuffer table, TGet get) throws TIOError, TException {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    Table htable = getTable(table);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    try {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      return resultFromHBase(htable.get(getFromThrift(get)));<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    } catch (IOException e) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      throw getTIOError(e);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    } finally {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      closeTable(htable);<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>  @Override<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public List&lt;TResult&gt; getMultiple(ByteBuffer table, List&lt;TGet&gt; gets) throws TIOError, TException {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    Table htable = getTable(table);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    try {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      return resultsFromHBase(htable.get(getsFromThrift(gets)));<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    } catch (IOException e) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      throw getTIOError(e);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    } finally {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      closeTable(htable);<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">320</span>  @Override<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public void put(ByteBuffer table, TPut put) throws TIOError, TException {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    checkReadOnlyMode();<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    Table htable = getTable(table);<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    try {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      htable.put(putFromThrift(put));<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    } catch (IOException e) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      throw getTIOError(e);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    } finally {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      closeTable(htable);<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><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  @Override<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  public boolean checkAndPut(ByteBuffer table, ByteBuffer row, ByteBuffer family,<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      ByteBuffer qualifier, ByteBuffer value, TPut put) throws TIOError, TException {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    checkReadOnlyMode();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    Table htable = getTable(table);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    try {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      Table.CheckAndMutateBuilder builder = htable.checkAndMutate(byteBufferToByteArray(row),<a name="line.339"></a>
-<span class="sourceLineNo">340</span>          byteBufferToByteArray(family)).qualifier(byteBufferToByteArray(qualifier));<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      if (value == null) {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        return builder.ifNotExists().thenPut(putFromThrift(put));<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      } else {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        return builder.ifEquals(byteBufferToByteArray(value)).thenPut(putFromThrift(put));<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      }<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    } catch (IOException e) {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      throw getTIOError(e);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    } finally {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      closeTable(htable);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    }<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>  @Override<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  public void putMultiple(ByteBuffer table, List&lt;TPut&gt; puts) throws TIOError, TException {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    checkReadOnlyMode();<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    Table htable = getTable(table);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    try {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      htable.put(putsFromThrift(puts));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    } catch (IOException e) {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      throw getTIOError(e);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    } finally {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      closeTable(htable);<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>  @Override<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  public void deleteSingle(ByteBuffer table, TDelete deleteSingle) throws TIOError, TException {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    checkReadOnlyMode();<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    Table htable = getTable(table);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    try {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      htable.delete(deleteFromThrift(deleteSingle));<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    } catch (IOException e) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      throw getTIOError(e);<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    } finally {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      closeTable(htable);<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><a name="line.378"></a>
-<span class="sourceLineNo">379</span>  @Override<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  public List&lt;TDelete&gt; deleteMultiple(ByteBuffer table, List&lt;TDelete&gt; deletes) throws TIOError,<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      TException {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    checkReadOnlyMode();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    Table htable = getTable(table);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    try {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      htable.delete(deletesFromThrift(deletes));<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    } catch (IOException e) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      throw getTIOError(e);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    } finally {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      closeTable(htable);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    }<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    return Collections.emptyList();<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>  @Override<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  public boolean checkAndMutate(ByteBuffer table, ByteBuffer row, ByteBuffer family,<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      ByteBuffer qualifier, TCompareOp compareOp, ByteBuffer value, TRowMutations rowMutations)<a name="line.396"></a>
-<span class="sourceLineNo">397</span>          throws TIOError, TException {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    checkReadOnlyMode();<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    try (final Table htable = getTable(table)) {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      return htable.checkAndMutate(byteBufferToByteArray(row), byteBufferToByteArray(family))<a name="line.400"></a>
-<span class="sourceLineNo">401</span>          .qualifier(byteBufferToByteArray(qualifier))<a name="line.401"></a>
-<span class="sourceLineNo">402</span>          .ifMatches(compareOpFromThrift(compareOp), byteBufferToByteArray(value))<a name="line.402"></a>
-<span class="sourceLineNo">403</span>          .thenMutate(rowMutationsFromThrift(rowMutations));<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    } catch (IOException e) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      throw getTIOError(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>
-<span class="sourceLineNo">409</span>  @Override<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  public boolean checkAndDelete(ByteBuffer table, ByteBuffer row, ByteBuffer family,<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      ByteBuffer qualifier, ByteBuffer value, TDelete deleteSingle) throws TIOError, TException {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    checkReadOnlyMode();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    Table htable = getTable(table);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    try {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      Table.CheckAndMutateBuilder mutateBuilder =<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          htable.checkAndMutate(byteBufferToByteArray(row), byteBufferToByteArray(family))<a name="line.416"></a>
-<span class="sourceLineNo">417</span>              .qualifier(byteBufferToByteArray(qualifier));<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      if (value == null) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        return mutateBuilder.ifNotExists().thenDelete(deleteFromThrift(deleteSingle));<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      } else {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        return mutateBuilder.ifEquals(byteBufferToByteArray(value))<a name="line.421"></a>
-<span class="sourceLineNo">422</span>            .thenDelete(deleteFromThrift(deleteSingle));<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      }<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    } catch (IOException e) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      throw getTIOError(e);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    } finally {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      closeTable(htable);<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>  @Override<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  public TResult increment(ByteBuffer table, TIncrement increment) throws TIOError, TException {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    checkReadOnlyMode();<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    Table htable = getTable(table);<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    try {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      return resultFromHBase(htable.increment(incrementFromThrift(increment)));<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    } catch (IOException e) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      throw getTIOError(e);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    } finally {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      closeTable(htable);<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>  @Override<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  public TResult append(ByteBuffer table, TAppend append) throws TIOError, TException {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    checkReadOnlyMode();<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    Table htable = getTable(table);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    try {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      return resultFromHBase(htable.append(appendFromThrift(append)));<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    } catch (IOException e) {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      throw getTIOError(e);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    } finally {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      closeTable(htable);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>  }<a name="line.455"></a>
+<span class="sourceLineNo">268</span>  public void put(ByteBuffer table, TPut put) throws TIOError, TException {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    checkReadOnlyMode();<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    Table htable = getTable(table);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    try {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      htable.put(putFromThrift(put));<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    } catch (IOException e) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      throw getTIOError(e);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    } finally {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      closeTable(htable);<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>  @Override<a name="line.280"></a>
+<span class="sourceLineNo">281</span>  public boolean checkAndPut(ByteBuffer table, ByteBuffer row, ByteBuffer family,<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      ByteBuffer qualifier, ByteBuffer value, TPut put) throws TIOError, TException {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    checkReadOnlyMode();<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    Table htable = getTable(table);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    try {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      Table.CheckAndMutateBuilder builder = htable.checkAndMutate(byteBufferToByteArray(row),<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          byteBufferToByteArray(family)).qualifier(byteBufferToByteArray(qualifier));<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      if (value == null) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        return builder.ifNotExists().thenPut(putFromThrift(put));<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      } else {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        return builder.ifEquals(byteBufferToByteArray(value)).thenPut(putFromThrift(put));<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    } catch (IOException e) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      throw getTIOError(e);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    } finally {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      closeTable(htable);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    }<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>  @Override<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  public void putMultiple(ByteBuffer table, List&lt;TPut&gt; puts) throws TIOError, TException {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    checkReadOnlyMode();<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    Table htable = getTable(table);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    try {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      htable.put(putsFromThrift(puts));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    } catch (IOException e) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      throw getTIOError(e);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    } finally {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      closeTable(htable);<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 void deleteSingle(ByteBuffer table, TDelete deleteSingle) throws TIOError, TException {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    checkReadOnlyMode();<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    Table htable = getTable(table);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    try {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      htable.delete(deleteFromThrift(deleteSingle));<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    } catch (IOException e) {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      throw getTIOError(e);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    } finally {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      closeTable(htable);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    }<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>  @Override<a name="line.326"></a>
+<span class="sourceLineNo">327</span>  public List&lt;TDelete&gt; deleteMultiple(ByteBuffer table, List&lt;TDelete&gt; deletes) throws TIOError,<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      TException {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    checkReadOnlyMode();<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    Table htable = getTable(table);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    try {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      htable.delete(deletesFromThrift(deletes));<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    } catch (IOException e) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      throw getTIOError(e);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    } finally {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      closeTable(htable);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    return Collections.emptyList();<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 boolean checkAndMutate(ByteBuffer table, ByteBuffer row, ByteBuffer family,<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      ByteBuffer qualifier, TCompareOp compareOp, ByteBuffer value, TRowMutations rowMutations)<a name="line.343"></a>
+<span class="sourceLineNo">344</span>          throws TIOError, TException {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    checkReadOnlyMode();<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    try (final Table htable = getTable(table)) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      return htable.checkAndMutate(byteBufferToByteArray(row), byteBufferToByteArray(family))<a name="line.347"></a>
+<span class="sourceLineNo">348</span>          .qualifier(byteBufferToByteArray(qualifier))<a name="line.348"></a>
+<span class="sourceLineNo">349</span>          .ifMatches(compareOpFromThrift(compareOp), byteBufferToByteArray(value))<a name="line.349"></a>
+<span class="sourceLineNo">350</span>          .thenMutate(rowMutationsFromThrift(rowMutations));<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    } catch (IOException e) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      throw getTIOError(e);<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><a name="line.355"></a>
+<span class="sourceLineNo">356</span>  @Override<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  public boolean checkAndDelete(ByteBuffer table, ByteBuffer row, ByteBuffer family,<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      ByteBuffer qualifier, ByteBuffer value, TDelete deleteSingle) throws TIOError, TException {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    checkReadOnlyMode();<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    Table htable = getTable(table);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    try {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      Table.CheckAndMutateBuilder mutateBuilder =<a name="line.362"></a>
+<span class="sourceLineNo">363</span>          htable.checkAndMutate(byteBufferToByteArray(row), byteBufferToByteArray(family))<a name="line.363"></a>
+<span class="sourceLineNo">364</span>              .qualifier(byteBufferToByteArray(qualifier));<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      if (value == null) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>        return mutateBuilder.ifNotExists().thenDelete(deleteFromThrift(deleteSingle));<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      } else {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        return mutateBuilder.ifEquals(byteBufferToByteArray(value))<a name="line.368"></a>
+<span class="sourceLineNo">369</span>            .thenDelete(deleteFromThrift(deleteSingle));<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      }<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    } catch (IOException e) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      throw getTIOError(e);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    } finally {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      closeTable(htable);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    }<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 TResult increment(ByteBuffer table, TIncrement increment) throws TIOError, TException {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    checkReadOnlyMode();<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    Table htable = getTable(table);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    try {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      return resultFromHBase(htable.increment(incrementFromThrift(increment)));<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    } catch (IOException e) {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      throw getTIOError(e);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    } finally {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      closeTable(htable);<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><a name="line.390"></a>
+<span class="sourceLineNo">391</span>  @Override<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  public TResult append(ByteBuffer table, TAppend append) throws TIOError, TException {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    checkReadOnlyMode();<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    Table htable = getTable(table);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    try {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      return resultFromHBase(htable.append(appendFromThrift(append)));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    } catch (IOException e) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      throw getTIOError(e);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    } finally {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      closeTable(htable);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
+<span class="sourceLineNo">402</span>  }<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>  @Override<a name="line.404"></a>
+<span class="sourceLineNo">405</span>  public int openScanner(ByteBuffer table, TScan scan) throws TIOError, TException {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    Table htable = getTable(table);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    ResultScanner resultScanner = null;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    try {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      resultScanner = htable.getScanner(scanFromThrift(scan));<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    } catch (IOException e) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      throw getTIOError(e);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    } finally {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      closeTable(htable);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    }<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    return addScanner(resultScanner);<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>  @Override<a name="line.418"></a>
+<span class="sourceLineNo">419</span>  public List&lt;TResult&gt; getScannerRows(int scannerId, int numRows) throws TIOError,<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      TIllegalArgument, TException {<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    ResultScanner scanner = getScanner(scannerId);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    if (scanner == null) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      TIllegalArgument ex = new TIllegalArgument();<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      ex.setMessage("Invalid scanner Id");<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      throw ex;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    }<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    try {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      connectionCache.updateConnectionAccessTime();<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      return resultsFromHBase(scanner.next(numRows));<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    } catch (IOException e) {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      throw getTIOError(e);<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><a name="line.434"></a>
+<span class="sourceLineNo">435</span>  @Override<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  public List&lt;TResult&gt; getScannerResults(ByteBuffer table, TScan scan, int numRows)<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      throws TIOError, TException {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    Table htable = getTable(table);<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    List&lt;TResult&gt; results = null;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    ResultScanner scanner = null;<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    try {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      scanner = htable.getScanner(scanFromThrift(scan));<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      results = resultsFromHBase(scanner.next(numRows));<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    } catch (IOException e) {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      throw getTIOError(e);<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    } finally {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      if (scanner != null) {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>        scanner.close();<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      }<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      closeTable(htable);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    }<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    return results;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>  }<a name="line.453"></a>
+<span class="sourceLineNo">454</span><a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
 <span class="sourceLineNo">456</span><a name="line.456"></a>
 <span class="sourceLineNo">457</span>  @Override<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  public int openScanner(ByteBuffer table, TScan scan) throws TIOError, TException {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    Table htable = getTable(table);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    ResultScanner resultScanner = null;<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    try {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      resultScanner = htable.getScanner(scanFromThrift(scan));<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    } catch (IOException e) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      throw getTIOError(e);<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    } finally {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      closeTable(htable);<a name="line.466"></a>
+<span class="sourceLineNo">458</span>  public void closeScanner(int scannerId) throws TIOError, TIllegalArgument, TException {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    LOG.debug("scannerClose: id=" + scannerId);<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    ResultScanner scanner = getScanner(scannerId);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    if (scanner == null) {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      String message = "scanner ID is invalid";<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      LOG.warn(message);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      TIllegalArgument ex = new TIllegalArgument();<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      ex.setMessage("Invalid scanner Id");<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      throw ex;<a name="line.466"></a>
 <span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    return addScanner(resultScanner);<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>  @Override<a name="line.471"></a>
-<span class="sourceLineNo">472</span>  public List&lt;TResult&gt; getScannerRows(int scannerId, int numRows) throws TIOError,<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      TIllegalArgument, TException {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    ResultScanner scanner = getScanner(scannerId);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    if (scanner == null) {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      TIllegalArgument ex = new TIllegalArgument();<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      ex.setMessage("Invalid scanner Id");<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      throw ex;<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    }<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    try {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      connectionCache.updateConnectionAccessTime();<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      return resultsFromHBase(scanner.next(numRows));<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    } catch (IOException e) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      throw getTIOError(e);<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><a name="line.487"></a>
-<span class="sourceLineNo">488</span>  @Override<a name="line.488"></a>
-<span class="sourceLineNo">489</span>  public List&lt;TResult&gt; getScannerResults(ByteBuffer table, TScan scan, int numRows)<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      throws TIOError, TException {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    Table htable = getTable(table);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    List&lt;TResult&gt; results = null;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    ResultScanner scanner = null;<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    try {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      scanner = htable.getScanner(scanFromThrift(scan));<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      results = resultsFromHBase(scanner.next(numRows));<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    } catch (IOException e) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      throw getTIOError(e);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    } finally {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      if (scanner != null) {

<TRUNCATED>

[31/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 c13d3bf..a59130a 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":10,"i3":10,"i4":10,"i5":9,"i6":10,"i7":10,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9,"i15":9,"i16":9,"i17":9,"i18":10,"i19":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":9,"i4":10,"i5":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";
@@ -103,12 +103,17 @@ var activeTableTab = "activeTableTab";
 <li>org.apache.hadoop.conf.Configured</li>
 <li>
 <ul class="inheritance">
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">org.apache.hadoop.hbase.thrift.ThriftServer</a></li>
+<li>
+<ul class="inheritance">
 <li>org.apache.hadoop.hbase.thrift2.ThriftServer</li>
 </ul>
 </li>
 </ul>
 </li>
 </ul>
+</li>
+</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
@@ -119,9 +124,8 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.LimitedPrivate(value="Tools")
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.96">ThriftServer</a>
-extends org.apache.hadoop.conf.Configured
-implements org.apache.hadoop.util.Tool</pre>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.53">ThriftServer</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></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>
 </li>
@@ -143,39 +147,17 @@ implements org.apache.hadoop.util.Tool</pre>
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="https://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#BACKLOG_CONF_KEY">BACKLOG_CONF_KEY</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>static int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#DEFAULT_LISTEN_PORT">DEFAULT_LISTEN_PORT</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><code>private static org.slf4j.Logger</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#log">log</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private static <a href="https://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#READ_TIMEOUT_OPTION">READ_TIMEOUT_OPTION</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="https://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#THRIFT_QOP_KEY">THRIFT_QOP_KEY</a></span></code>
-<div class="block">Thrift quality of protection configuration key.</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>static int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT">THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>static <a href="https://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#THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY">THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY</a></span></code>
-<div class="block">Amount of time in milliseconds before a server thread will timeout
- waiting for client to send data on a connected socket.</div>
-</td>
-</tr>
 </table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.thrift.ThriftServer">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#conf">conf</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#doAsEnabled">doAsEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#hbaseServiceHandler">hbaseServiceHandler</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#host">host</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#httpEnabled">httpEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#httpServer">httpServer</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#infoServer">infoServer</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#listenPort">listenPort</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#metrics">metrics</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#pauseMonitor">pau
 seMonitor</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#processor">processor</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#qop">qop</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#securityEnabled">securityEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#serviceUGI">serviceUGI</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#tserver">tserver</a></code></li>
+</ul>
 </li>
 </ul>
 <!-- ======== CONSTRUCTOR SUMMARY ======== -->
@@ -190,7 +172,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <th class="colOne" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#ThriftServer--">ThriftServer</a></span>()</code>&nbsp;</td>
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#ThriftServer-org.apache.hadoop.conf.Configuration-">ThriftServer</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -208,140 +190,45 @@ implements org.apache.hadoop.util.Tool</pre>
 <th class="colLast" scope="col">Method and Description</th>
 </tr>
 <tr id="i0" class="altColor">
-<td class="colFirst"><code>private static <a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#bindToPort-java.lang.String-int-">bindToPort</a></span>(<a href="https://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)</code>&nbsp;</td>
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#addOptions-org.apache.hbase.thirdparty.org.apache.commons.cli.Options-">addOptions</a></span>(org.apache.hbase.thirdparty.org.apache.commons.cli.Options&nbsp;options)</code>
+<div class="block">Add options to command lines</div>
+</td>
 </tr>
 <tr id="i1" class="rowColor">
-<td class="colFirst"><code>private static <a href="https://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>
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#createHandler-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.UserProvider-">createHandler</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+             <a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a>&nbsp;userProvider)</code>&nbsp;</td>
 </tr>
 <tr id="i2" class="altColor">
-<td class="colFirst"><code>private <a href="https://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.hbase.thirdparty.org.apache.commons.cli.CommandLine-">getBindAddress</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
-              org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine&nbsp;cmd)</code>&nbsp;</td>
+<td class="colFirst"><code>protected org.apache.thrift.TProcessor</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#createProcessor--">createProcessor</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i3" class="rowColor">
-<td class="colFirst"><code>private <a href="https://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="i4" class="altColor">
-<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.hbase.thirdparty.org.apache.commons.cli.CommandLine-">getListenPort</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
-             org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine&nbsp;cmd)</code>&nbsp;</td>
-</tr>
-<tr id="i5" class="rowColor">
-<td class="colFirst"><code>private static org.apache.hbase.thirdparty.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="i6" class="altColor">
-<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.hbase.thirdparty.org.apache.commons.cli.CommandLine-">getReadTimeout</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
-              org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine&nbsp;cmd)</code>&nbsp;</td>
-</tr>
-<tr id="i7" class="rowColor">
-<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="https://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="i8" 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#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,
-              org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
-              int&nbsp;workerThreads,
-              int&nbsp;maxCallQueueSize,
-              <a href="https://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="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#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="https://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="i10" class="altColor">
-<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="i11" 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#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,
-                          org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
-                          int&nbsp;workerThreads,
-                          int&nbsp;selectorThreads,
-                          int&nbsp;maxCallQueueSize,
-                          <a href="https://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="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#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,
-                    org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
-                    int&nbsp;workerThreads,
-                    <a href="https://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,
-                    int&nbsp;backlog,
-                    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="i13" class="rowColor">
-<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="https://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="https://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,
-                    int&nbsp;frameSize)</code>&nbsp;</td>
-</tr>
-<tr id="i14" class="altColor">
 <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="https://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="i15" class="rowColor">
-<td class="colFirst"><code>private static org.apache.hbase.thirdparty.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.hbase.thirdparty.org.apache.commons.cli.Options-java.lang.String:A-">parseArguments</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
-              org.apache.hbase.thirdparty.org.apache.commons.cli.Options&nbsp;options,
-              <a href="https://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="i16" class="altColor">
-<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="i17" class="rowColor">
-<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="i18" class="altColor">
-<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="https://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 id="i4" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#parseCommandLine-org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine-org.apache.hbase.thirdparty.org.apache.commons.cli.Options-">parseCommandLine</a></span>(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine&nbsp;cmd,
+                org.apache.hbase.thirdparty.org.apache.commons.cli.Options&nbsp;options)</code>&nbsp;</td>
 </tr>
-<tr id="i19" class="rowColor">
-<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 id="i5" class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#printUsageAndExit-org.apache.hbase.thirdparty.org.apache.commons.cli.Options-int-">printUsageAndExit</a></span>(org.apache.hbase.thirdparty.org.apache.commons.cli.Options&nbsp;options,
+                 int&nbsp;exitCode)</code>&nbsp;</td>
 </tr>
 </table>
 <ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.thrift.ThriftServer">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#checkHttpSecurity-org.apache.hadoop.hbase.security.SaslUtil.QualityOfProtection-org.apache.hadoop.conf.Configuration-">checkHttpSecurity</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#optionToConf-org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine-java.lang.String-org.apache.hadoop.conf.Configuration-java.lang.String-">optionToConf</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#registerFilters-org.apache.hadoop.conf.Configuration-">registerFilters</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#run--">run</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#run-java.lang.String:A-">run</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#setupHTTPServer--">setupHTTPServer</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#setup
 Paramters--">setupParamters</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#setupServer--">setupServer</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#startInfoServer--">startInfoServer</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#stop--">stop</a></code></li>
+</ul>
+<ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.conf.Configured">
 <!--   -->
 </a>
@@ -379,98 +266,10 @@ implements org.apache.hadoop.util.Tool</pre>
 <a name="log">
 <!--   -->
 </a>
-<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/ThriftServer.html#line.97">log</a></pre>
-</li>
-</ul>
-<a name="THRIFT_QOP_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>THRIFT_QOP_KEY</h4>
-<pre>static final&nbsp;<a href="https://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/thrift2/ThriftServer.html#line.108">THRIFT_QOP_KEY</a></pre>
-<div class="block">Thrift quality of protection configuration key. Valid values can be:
- privacy: authentication, integrity and confidentiality checking
- integrity: authentication and integrity checking
- authentication: authentication only
-
- This is used to authenticate the callers and support impersonation.
- The thrift server and the HBase cluster must run in secure mode.</div>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift2.ThriftServer.THRIFT_QOP_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="BACKLOG_CONF_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>BACKLOG_CONF_KEY</h4>
-<pre>static final&nbsp;<a href="https://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/thrift2/ThriftServer.html#line.110">BACKLOG_CONF_KEY</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift2.ThriftServer.BACKLOG_CONF_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="DEFAULT_LISTEN_PORT">
-<!--   -->
-</a>
-<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/thrift2/ThriftServer.html#line.112">DEFAULT_LISTEN_PORT</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift2.ThriftServer.DEFAULT_LISTEN_PORT">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="READ_TIMEOUT_OPTION">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>READ_TIMEOUT_OPTION</h4>
-<pre>private static final&nbsp;<a href="https://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/thrift2/ThriftServer.html#line.114">READ_TIMEOUT_OPTION</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift2.ThriftServer.READ_TIMEOUT_OPTION">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY</h4>
-<pre>public static final&nbsp;<a href="https://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/thrift2/ThriftServer.html#line.121">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>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift2.ThriftServer.THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT">
-<!--   -->
-</a>
 <ul class="blockListLast">
 <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/thrift2/ThriftServer.html#line.123">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.thrift2.ThriftServer.THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT">Constant Field Values</a></dd>
-</dl>
+<h4>log</h4>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.54">log</a></pre>
 </li>
 </ul>
 </li>
@@ -481,13 +280,13 @@ implements org.apache.hadoop.util.Tool</pre>
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="ThriftServer--">
+<a name="ThriftServer-org.apache.hadoop.conf.Configuration-">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ThriftServer</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.125">ThriftServer</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.57">ThriftServer</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 </li>
@@ -498,190 +297,94 @@ implements org.apache.hadoop.util.Tool</pre>
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="printUsage--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>printUsage</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.128">printUsage</a>()</pre>
-</li>
-</ul>
-<a name="getOptions--">
+<a name="printUsageAndExit-org.apache.hbase.thirdparty.org.apache.commons.cli.Options-int-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getOptions</h4>
-<pre>private static&nbsp;org.apache.hbase.thirdparty.org.apache.commons.cli.Options&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.138">getOptions</a>()</pre>
-</li>
-</ul>
-<a name="parseArguments-org.apache.hadoop.conf.Configuration-org.apache.hbase.thirdparty.org.apache.commons.cli.Options-java.lang.String:A-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>parseArguments</h4>
-<pre>private static&nbsp;org.apache.hbase.thirdparty.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.hbase.thirdparty.org.apache.commons.cli.Options&nbsp;options,
-                                                                                             <a href="https://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.hbase.thirdparty.org.apache.commons.cli.ParseException,
-                                                                                             <a href="https://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>org.apache.hbase.thirdparty.org.apache.commons.cli.ParseException</code></dd>
-<dd><code><a href="https://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="getTProtocolFactory-boolean-">
-<!--   -->
-</a>
-<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.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-">
-<!--   -->
-</a>
-<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.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="https://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="https://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,
-                                                                                  int&nbsp;frameSize)</pre>
-</li>
-</ul>
-<a name="bindToPort-java.lang.String-int-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>bindToPort</h4>
-<pre>private static&nbsp;<a href="https://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="https://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="https://docs.oracle.com/javase/8/docs/api/java/net/UnknownHostException.html?is-external=true" title="class or interface in java.net">UnknownHostException</a></pre>
+<h4>printUsageAndExit</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.62">printUsageAndExit</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.Options&nbsp;options,
+                                 int&nbsp;exitCode)
+                          throws org.apache.hadoop.util.Shell.ExitCodeException</pre>
 <dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#printUsageAndExit-org.apache.hbase.thirdparty.org.apache.commons.cli.Options-int-">printUsageAndExit</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></code></dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/net/UnknownHostException.html?is-external=true" title="class or interface in java.net">UnknownHostException</a></code></dd>
+<dd><code>org.apache.hadoop.util.Shell.ExitCodeException</code></dd>
 </dl>
 </li>
 </ul>
-<a name="getTNonBlockingServer-org.apache.thrift.protocol.TProtocolFactory-org.apache.thrift.TProcessor-org.apache.thrift.transport.TTransportFactory-java.net.InetSocketAddress-">
+<a name="createHandler-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.UserProvider-">
 <!--   -->
 </a>
 <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.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="https://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>
+<h4>createHandler</h4>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.75">createHandler</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                                            <a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a>&nbsp;userProvider)
+                                     throws <a href="https://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">Overrides:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#createHandler-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.UserProvider-">createHandler</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></code></dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.thrift.transport.TTransportException</code></dd>
+<dd><code><a href="https://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="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-">
+<a name="createProcessor--">
 <!--   -->
 </a>
 <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.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,
-                                                               int&nbsp;maxCallQueueSize,
-                                                               <a href="https://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)
-                                                        throws org.apache.thrift.transport.TTransportException</pre>
+<h4>createProcessor</h4>
+<pre>protected&nbsp;org.apache.thrift.TProcessor&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.81">createProcessor</a>()</pre>
 <dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.thrift.transport.TTransportException</code></dd>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#createProcessor--">createProcessor</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></code></dd>
 </dl>
 </li>
 </ul>
-<a name="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-">
+<a name="addOptions-org.apache.hbase.thirdparty.org.apache.commons.cli.Options-">
 <!--   -->
 </a>
 <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.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,
-                                                                           int&nbsp;selectorThreads,
-                                                                           int&nbsp;maxCallQueueSize,
-                                                                           <a href="https://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)
-                                                                    throws org.apache.thrift.transport.TTransportException</pre>
+<h4>addOptions</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.87">addOptions</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.Options&nbsp;options)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#addOptions-org.apache.hbase.thirdparty.org.apache.commons.cli.Options-">ThriftServer</a></code></span></div>
+<div class="block">Add options to command lines</div>
 <dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.thrift.transport.TTransportException</code></dd>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#addOptions-org.apache.hbase.thirdparty.org.apache.commons.cli.Options-">addOptions</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>options</code> - options</dd>
 </dl>
 </li>
 </ul>
-<a name="createExecutor-int-int-org.apache.hadoop.hbase.thrift.ThriftMetrics-">
+<a name="parseCommandLine-org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine-org.apache.hbase.thirdparty.org.apache.commons.cli.Options-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>createExecutor</h4>
-<pre>private static&nbsp;<a href="https://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>
-</ul>
-<a name="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-">
-<!--   -->
-</a>
-<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.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,
-                                                                     <a href="https://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,
-                                                                     int&nbsp;backlog,
-                                                                     int&nbsp;clientTimeout,
-                                                                     <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a>&nbsp;metrics)
-                                                              throws org.apache.thrift.transport.TTransportException</pre>
+<h4>parseCommandLine</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.94">parseCommandLine</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine&nbsp;cmd,
+                                org.apache.hbase.thirdparty.org.apache.commons.cli.Options&nbsp;options)
+                         throws org.apache.hadoop.util.Shell.ExitCodeException</pre>
 <dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#parseCommandLine-org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine-org.apache.hbase.thirdparty.org.apache.commons.cli.Options-">parseCommandLine</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></code></dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.thrift.transport.TTransportException</code></dd>
-</dl>
-</li>
-</ul>
-<a name="registerFilters-org.apache.hadoop.conf.Configuration-">
-<!--   -->
-</a>
-<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.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>
-<dd><code>conf</code> - The current configuration instance.</dd>
+<dd><code>org.apache.hadoop.util.Shell.ExitCodeException</code></dd>
 </dl>
 </li>
 </ul>
 <a name="main-java.lang.String:A-">
 <!--   -->
 </a>
-<ul class="blockList">
+<ul class="blockListLast">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.375">main</a>(<a href="https://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.106">main</a>(<a href="https://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="https://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>
@@ -690,103 +393,6 @@ implements org.apache.hadoop.util.Tool</pre>
 </dl>
 </li>
 </ul>
-<a name="run-java.lang.String:A-">
-<!--   -->
-</a>
-<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.383">run</a>(<a href="https://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="https://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>
-<dd><code>run</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.util.Tool</code></dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://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>
-</li>
-</ul>
-<a name="getImplType-boolean-boolean-boolean-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getImplType</h4>
-<pre>private&nbsp;<a href="https://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.535">getImplType</a>(boolean&nbsp;nonblocking,
-                           boolean&nbsp;hsha,
-                           boolean&nbsp;selector)</pre>
-</li>
-</ul>
-<a name="getBindAddress-org.apache.hadoop.conf.Configuration-org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getBindAddress</h4>
-<pre>private&nbsp;<a href="https://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.549">getBindAddress</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
-                              org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine&nbsp;cmd)</pre>
-</li>
-</ul>
-<a name="getListenPort-org.apache.hadoop.conf.Configuration-org.apache.hbase.thirdparty.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.560">getListenPort</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
-                          org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine&nbsp;cmd)</pre>
-</li>
-</ul>
-<a name="getReadTimeout-org.apache.hadoop.conf.Configuration-org.apache.hbase.thirdparty.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.574">getReadTimeout</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
-                           org.apache.hbase.thirdparty.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.589">startInfoServer</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
-                      throws <a href="https://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="https://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.601">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="https://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/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift2/class-use/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift2/class-use/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html b/devapidocs/org/apache/hadoop/hbase/thrift2/class-use/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html
deleted file mode 100644
index 5863582..0000000
--- a/devapidocs/org/apache/hadoop/hbase/thrift2/class-use/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class org.apache.hadoop.hbase.thrift2.ThriftHBaseServiceHandler.THBaseServiceMetricsProxy (Apache HBase 3.0.0-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
-    try {
-        if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class org.apache.hadoop.hbase.thrift2.ThriftHBaseServiceHandler.THBaseServiceMetricsProxy (Apache HBase 3.0.0-SNAPSHOT API)";
-        }
-    }
-    catch(err) {
-    }
-//-->
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift2">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../../../../../../overview-tree.html">Tree</a></li>
-<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift2/class-use/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html" target="_top">Frames</a></li>
-<li><a href="ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<div class="header">
-<h2 title="Uses of Class org.apache.hadoop.hbase.thrift2.ThriftHBaseServiceHandler.THBaseServiceMetricsProxy" class="title">Uses of Class<br>org.apache.hadoop.hbase.thrift2.ThriftHBaseServiceHandler.THBaseServiceMetricsProxy</h2>
-</div>
-<div class="classUseContainer">No usage of org.apache.hadoop.hbase.thrift2.ThriftHBaseServiceHandler.THBaseServiceMetricsProxy</div>
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar.bottom">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.bottom.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift2">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../../../../../../overview-tree.html">Tree</a></li>
-<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift2/class-use/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html" target="_top">Frames</a></li>
-<li><a href="ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift2/package-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift2/package-frame.html b/devapidocs/org/apache/hadoop/hbase/thrift2/package-frame.html
index 390070f..f301e5c 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift2/package-frame.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift2/package-frame.html
@@ -15,7 +15,6 @@
 <ul title="Classes">
 <li><a href="DemoClient.html" title="class in org.apache.hadoop.hbase.thrift2" target="classFrame">DemoClient</a></li>
 <li><a href="ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2" target="classFrame">ThriftHBaseServiceHandler</a></li>
-<li><a href="ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift2" target="classFrame">ThriftHBaseServiceHandler.THBaseServiceMetricsProxy</a></li>
 <li><a href="ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift2" target="classFrame">ThriftServer</a></li>
 <li><a href="ThriftUtilities.html" title="class in org.apache.hadoop.hbase.thrift2" target="classFrame">ThriftUtilities</a></li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 9c109ae..e5539af 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift2/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift2/package-summary.html
@@ -99,17 +99,13 @@ service.</div>
 </td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler.THBaseServiceMetricsProxy</a></td>
-<td class="colLast">&nbsp;</td>
-</tr>
-<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>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftUtilities.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftUtilities</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift2/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift2/package-tree.html b/devapidocs/org/apache/hadoop/hbase/thrift2/package-tree.html
index 07b5b9f..744150c 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift2/package-tree.html
@@ -83,12 +83,19 @@
 <ul>
 <li type="circle">org.apache.hadoop.conf.Configured (implements org.apache.hadoop.conf.Configurable)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.thrift2.<a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">ThriftServer</span></a> (implements org.apache.hadoop.util.Tool)</li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServer</span></a> (implements org.apache.hadoop.util.Tool)
+<ul>
+<li type="circle">org.apache.hadoop.hbase.thrift2.<a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">ThriftServer</span></a></li>
+</ul>
+</li>
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.thrift2.<a href="../../../../../org/apache/hadoop/hbase/thrift2/DemoClient.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">DemoClient</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">HBaseServiceHandler</span></a>
+<ul>
 <li type="circle">org.apache.hadoop.hbase.thrift2.<a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">ThriftHBaseServiceHandler</span></a> (implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface)</li>
-<li type="circle">org.apache.hadoop.hbase.thrift2.<a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">ThriftHBaseServiceHandler.THBaseServiceMetricsProxy</span></a> (implements java.lang.reflect.<a href="https://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>)</li>
+</ul>
+</li>
 <li type="circle">org.apache.hadoop.hbase.thrift2.<a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftUtilities.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">ThriftUtilities</span></a></li>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Throwable</span></a> (implements java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/util/class-use/ConnectionCache.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/class-use/ConnectionCache.html b/devapidocs/org/apache/hadoop/hbase/util/class-use/ConnectionCache.html
index 62fadf5..d5ef30c 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/class-use/ConnectionCache.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/class-use/ConnectionCache.html
@@ -95,13 +95,6 @@
 service.</div>
 </td>
 </tr>
-<tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift2">org.apache.hadoop.hbase.thrift2</a></td>
-<td class="colLast">
-<div class="block">Provides an HBase <a href="http://thrift.apache.org/">Thrift</a>
-service.</div>
-</td>
-</tr>
 </tbody>
 </table>
 </li>
@@ -137,26 +130,8 @@ service.</div>
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/util/ConnectionCache.html" title="class in org.apache.hadoop.hbase.util">ConnectionCache</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.HBaseHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#connectionCache">connectionCache</a></span></code>&nbsp;</td>
-</tr>
-</tbody>
-</table>
-</li>
-<li class="blockList"><a name="org.apache.hadoop.hbase.thrift2">
-<!--   -->
-</a>
-<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/util/ConnectionCache.html" title="class in org.apache.hadoop.hbase.util">ConnectionCache</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a></h3>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
-<caption><span>Fields in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a> declared as <a href="../../../../../../org/apache/hadoop/hbase/util/ConnectionCache.html" title="class in org.apache.hadoop.hbase.util">ConnectionCache</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Field and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/util/ConnectionCache.html" title="class in org.apache.hadoop.hbase.util">ConnectionCache</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftHBaseServiceHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#connectionCache">connectionCache</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/util/ConnectionCache.html" title="class in org.apache.hadoop.hbase.util">ConnectionCache</a></code></td>
+<td class="colLast"><span class="typeNameLabel">HBaseServiceHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#connectionCache">connectionCache</a></span></code>&nbsp;</td>
 </tr>
 </tbody>
 </table>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/util/class-use/JvmPauseMonitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/class-use/JvmPauseMonitor.html b/devapidocs/org/apache/hadoop/hbase/util/class-use/JvmPauseMonitor.html
index b4f0c1e..d588c83 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/class-use/JvmPauseMonitor.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/class-use/JvmPauseMonitor.html
@@ -152,8 +152,8 @@ service.</div>
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/util/JvmPauseMonitor.html" title="class in org.apache.hadoop.hbase.util">JvmPauseMonitor</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#pauseMonitor">pauseMonitor</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/util/JvmPauseMonitor.html" title="class in org.apache.hadoop.hbase.util">JvmPauseMonitor</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ThriftServer.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#pauseMonitor">pauseMonitor</a></span></code>&nbsp;</td>
 </tr>
 </tbody>
 </table>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 5636866..9045956 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -541,13 +541,13 @@
 <li type="circle">java.lang.<a href="https://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="https://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="https://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/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/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/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/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/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/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/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/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/util/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/package-use.html b/devapidocs/org/apache/hadoop/hbase/util/package-use.html
index e18dfa2..8bd539f 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-use.html
@@ -311,21 +311,14 @@ service.</div>
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift2">org.apache.hadoop.hbase.thrift2</a></td>
-<td class="colLast">
-<div class="block">Provides an HBase <a href="http://thrift.apache.org/">Thrift</a>
-service.</div>
-</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.tool">org.apache.hadoop.hbase.tool</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.tool.coprocessor">org.apache.hadoop.hbase.tool.coprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.types">org.apache.hadoop.hbase.types</a></td>
 <td class="colLast">
 <div class="block">
@@ -333,19 +326,19 @@ service.</div>
  extensible data type API.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.util">org.apache.hadoop.hbase.util</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.util.hbck">org.apache.hadoop.hbase.util.hbck</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.wal">org.apache.hadoop.hbase.wal</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.zookeeper">org.apache.hadoop.hbase.zookeeper</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
@@ -1550,23 +1543,6 @@ service.</div>
 </tbody>
 </table>
 </li>
-<li class="blockList"><a name="org.apache.hadoop.hbase.thrift2">
-<!--   -->
-</a>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing classes, and an explanation">
-<caption><span>Classes in <a href="../../../../../org/apache/hadoop/hbase/util/package-summary.html">org.apache.hadoop.hbase.util</a> used by <a href="../../../../../org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colOne" scope="col">Class and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/util/class-use/ConnectionCache.html#org.apache.hadoop.hbase.thrift2">ConnectionCache</a>
-<div class="block">A utility to store user specific HConnections in memory.</div>
-</td>
-</tr>
-</tbody>
-</table>
-</li>
 <li class="blockList"><a name="org.apache.hadoop.hbase.tool">
 <!--   -->
 </a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 951fb0c..cb3db448 100644
--- a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -191,8 +191,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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>


[40/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html
new file mode 100644
index 0000000..f6bc1f0
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html
@@ -0,0 +1,2309 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>ThriftHBaseServiceHandler (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ThriftHBaseServiceHandler (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":9,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":9,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":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";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ThriftHBaseServiceHandler.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/THBaseThreadPoolExecutor.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" target="_top">Frames</a></li>
+<li><a href="ThriftHBaseServiceHandler.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.thrift</div>
+<h2 title="Class ThriftHBaseServiceHandler" class="title">Class ThriftHBaseServiceHandler</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">org.apache.hadoop.hbase.thrift.HBaseServiceHandler</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</dd>
+</dl>
+<hr>
+<br>
+<pre>@InterfaceAudience.Private
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#line.94">ThriftHBaseServiceHandler</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a>
+implements org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</pre>
+<div class="block">The HBaseServiceHandler is a glue object that connects Thrift RPC calls to the
+ HBase client API primarily defined in the Admin and Table objects.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
+<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.IOErrorWithCause</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.ResultScannerWrapper</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.html" title="class in org.apache.hadoop.hbase.thrift">IncrementCoalescer</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#coalescer">coalescer</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#HREGION_VERSION">HREGION_VERSION</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static org.slf4j.Logger</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#LOG">LOG</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#nextScannerId">nextScannerId</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="https://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="https://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/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.ResultScannerWrapper</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#scannerMap">scannerMap</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.thrift.HBaseServiceHandler">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#CLEANUP_INTERVAL">CLEANUP_INTERVAL</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#conf">conf</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#connectionCache">connectionCache</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#MAX_IDLETIME">MAX_IDLETIME</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#metrics">metrics</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<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="colFirst" scope="col">Modifier</th>
+<th class="colLast" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#ThriftHBaseServiceHandler-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.UserProvider-">ThriftHBaseServiceHandler</a></span>(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)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>private static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#addAttributes-org.apache.hadoop.hbase.client.OperationWithAttributes-java.util.Map-">addAttributes</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/OperationWithAttributes.html" title="class in org.apache.hadoop.hbase.client">OperationWithAttributes</a>&nbsp;op,
+             <a href="https://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="https://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="https://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)</code>
+<div class="block">Adds all the attributes into the Operation object</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>protected int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#addScanner-org.apache.hadoop.hbase.client.ResultScanner-boolean-">addScanner</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a>&nbsp;scanner,
+          boolean&nbsp;sortColumns)</code>
+<div class="block">Assigns a unique ID to the scanner and adds the mapping to an internal
+ hash-map.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code><a href="https://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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#append-org.apache.hadoop.hbase.thrift.generated.TAppend-">append</a></span>(org.apache.hadoop.hbase.thrift.generated.TAppend&nbsp;tappend)</code>
+<div class="block">Appends values to one or more columns within a single row.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>protected long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#atomicIncrement-java.nio.ByteBuffer-java.nio.ByteBuffer-byte:A-byte:A-long-">atomicIncrement</a></span>(<a href="https://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="https://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,
+               long&nbsp;amount)</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#atomicIncrement-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-long-">atomicIncrement</a></span>(<a href="https://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="https://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="https://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)</code>
+<div class="block">Atomically increment the column value specified.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#checkAndPut-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-org.apache.hadoop.hbase.thrift.generated.Mutation-java.util.Map-">checkAndPut</a></span>(<a href="https://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="https://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="https://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="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;value,
+           org.apache.hadoop.hbase.thrift.generated.Mutation&nbsp;mput,
+           <a href="https://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="https://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="https://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)</code>
+<div class="block">Atomically checks if a row/family/qualifier value matches the expected
+ value.</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#closeTable-org.apache.hadoop.hbase.client.Table-">closeTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;table)</code>&nbsp;</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#compact-java.nio.ByteBuffer-">compact</a></span>(<a href="https://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)</code>&nbsp;</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#createTable-java.nio.ByteBuffer-java.util.List-">createTable</a></span>(<a href="https://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="https://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)</code>
+<div class="block">Create a table with the specified column families.</div>
+</td>
+</tr>
+<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/ThriftHBaseServiceHandler.html#deleteAll-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.Map-">deleteAll</a></span>(<a href="https://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="https://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="https://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="https://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="https://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="https://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)</code>
+<div class="block">Delete all cells that match the passed row and column.</div>
+</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#deleteAllRow-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.Map-">deleteAllRow</a></span>(<a href="https://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="https://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="https://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="https://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="https://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)</code>
+<div class="block">Completely delete the row's cells.</div>
+</td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#deleteAllRowTs-java.nio.ByteBuffer-java.nio.ByteBuffer-long-java.util.Map-">deleteAllRowTs</a></span>(<a href="https://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="https://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="https://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="https://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="https://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)</code>
+<div class="block">Completely delete the row's cells marked with a timestamp
+ equal-to or older than the passed timestamp.</div>
+</td>
+</tr>
+<tr id="i12" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#deleteAllTs-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-long-java.util.Map-">deleteAllTs</a></span>(<a href="https://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="https://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="https://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,
+           <a href="https://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="https://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="https://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)</code>
+<div class="block">Delete all cells that match the passed row and column and whose
+ timestamp is equal-to or older than the passed timestamp.</div>
+</td>
+</tr>
+<tr id="i13" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#deleteTable-java.nio.ByteBuffer-">deleteTable</a></span>(<a href="https://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)</code>
+<div class="block">Deletes a table</div>
+</td>
+</tr>
+<tr id="i14" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#disableTable-java.nio.ByteBuffer-">disableTable</a></span>(<a href="https://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)</code>
+<div class="block">Disables a table (takes it off-line) If it is being served, the master
+ will tell the servers to stop serving it.</div>
+</td>
+</tr>
+<tr id="i15" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#enableTable-java.nio.ByteBuffer-">enableTable</a></span>(<a href="https://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)</code>
+<div class="block">Brings a table on-line (enables it)</div>
+</td>
+</tr>
+<tr id="i16" class="altColor">
+<td class="colFirst"><code>protected <a href="https://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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#get-java.nio.ByteBuffer-java.nio.ByteBuffer-byte:A-byte:A-java.util.Map-">get</a></span>(<a href="https://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="https://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,
+   <a href="https://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="https://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="https://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)</code>
+<div class="block">Note: this internal interface is slightly different from public APIs in regard to handling
+ of the qualifier.</div>
+</td>
+</tr>
+<tr id="i17" class="rowColor">
+<td class="colFirst"><code><a href="https://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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#get-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.Map-">get</a></span>(<a href="https://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="https://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="https://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="https://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="https://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="https://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)</code>
+<div class="block">Get a single TCell for the specified table, row, and column at the
+ latest timestamp.</div>
+</td>
+</tr>
+<tr id="i18" class="altColor">
+<td class="colFirst"><code>(package private) byte[][]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getAllColumns-org.apache.hadoop.hbase.client.Table-">getAllColumns</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;table)</code>
+<div class="block">Returns a list of all the column families for a given Table.</div>
+</td>
+</tr>
+<tr id="i19" class="rowColor">
+<td class="colFirst"><code><a href="https://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="https://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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getColumnDescriptors-java.nio.ByteBuffer-">getColumnDescriptors</a></span>(<a href="https://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)</code>
+<div class="block">List all the column families assoicated with a table.</div>
+</td>
+</tr>
+<tr id="i20" class="altColor">
+<td class="colFirst"><code>private static org.apache.hadoop.hbase.thrift.generated.IOError</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getIOError-java.lang.Throwable-">getIOError</a></span>(<a href="https://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="i21" class="rowColor">
+<td class="colFirst"><code>org.apache.hadoop.hbase.thrift.generated.TRegionInfo</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getRegionInfo-java.nio.ByteBuffer-">getRegionInfo</a></span>(<a href="https://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)</code>
+<div class="block">Get the regininfo for the specified row.</div>
+</td>
+</tr>
+<tr id="i22" class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getReverseScanResult-byte:A-byte:A-byte:A-">getReverseScanResult</a></span>(byte[]&nbsp;tableName,
+                    byte[]&nbsp;row,
+                    byte[]&nbsp;family)</code>&nbsp;</td>
+</tr>
+<tr id="i23" class="rowColor">
+<td class="colFirst"><code><a href="https://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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getRow-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.Map-">getRow</a></span>(<a href="https://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="https://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="https://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="https://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="https://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)</code>
+<div class="block">Get all the data for the specified table and row at the latest
+ timestamp.</div>
+</td>
+</tr>
+<tr id="i24" class="altColor">
+<td class="colFirst"><code><a href="https://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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getRows-java.nio.ByteBuffer-java.util.List-java.util.Map-">getRows</a></span>(<a href="https://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="https://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="https://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="https://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="https://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="https://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)</code>
+<div class="block">Get all the data for the specified table and rows at the latest
+ timestamp.</div>
+</td>
+</tr>
+<tr id="i25" class="rowColor">
+<td class="colFirst"><code><a href="https://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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getRowsTs-java.nio.ByteBuffer-java.util.List-long-java.util.Map-">getRowsTs</a></span>(<a href="https://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="https://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="https://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="https://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="https://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="https://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)</code>
+<div class="block">Get all the data for the specified table and rows at the specified
+ timestamp.</div>
+</td>
+</tr>
+<tr id="i26" class="altColor">
+<td class="colFirst"><code><a href="https://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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getRowsWithColumns-java.nio.ByteBuffer-java.util.List-java.util.List-java.util.Map-">getRowsWithColumns</a></span>(<a href="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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)</code>
+<div class="block">Get the specified columns for the specified table and rows at the latest
+ timestamp.</div>
+</td>
+</tr>
+<tr id="i27" class="rowColor">
+<td class="colFirst"><code><a href="https://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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getRowsWithColumnsTs-java.nio.ByteBuffer-java.util.List-java.util.List-long-java.util.Map-">getRowsWithColumnsTs</a></span>(<a href="https://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="https://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="https://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="https://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="https://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,
+                    <a href="https://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="https://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="https://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)</code>
+<div class="block">Get the specified columns for the specified table and rows at the specified
+ timestamp.</div>
+</td>
+</tr>
+<tr id="i28" class="altColor">
+<td class="colFirst"><code><a href="https://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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getRowTs-java.nio.ByteBuffer-java.nio.ByteBuffer-long-java.util.Map-">getRowTs</a></span>(<a href="https://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="https://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="https://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="https://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="https://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)</code>
+<div class="block">Get all the data for the specified table and row at the specified
+ timestamp.</div>
+</td>
+</tr>
+<tr id="i29" class="rowColor">
+<td class="colFirst"><code><a href="https://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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getRowWithColumns-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.List-java.util.Map-">getRowWithColumns</a></span>(<a href="https://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="https://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="https://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="https://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="https://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="https://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="https://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)</code>
+<div class="block">Get the specified columns for the specified table and row at the latest
+ timestamp.</div>
+</td>
+</tr>
+<tr id="i30" class="altColor">
+<td class="colFirst"><code><a href="https://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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getRowWithColumnsTs-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.List-long-java.util.Map-">getRowWithColumnsTs</a></span>(<a href="https://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="https://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="https://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="https://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,
+                   <a href="https://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="https://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="https://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)</code>
+<div class="block">Get the specified columns for the specified table and row at the specified
+ timestamp.</div>
+</td>
+</tr>
+<tr id="i31" class="rowColor">
+<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.ResultScannerWrapper</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getScanner-int-">getScanner</a></span>(int&nbsp;id)</code>
+<div class="block">Returns the scanner associated with the specified ID.</div>
+</td>
+</tr>
+<tr id="i32" class="altColor">
+<td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getTableName-java.nio.ByteBuffer-">getTableName</a></span>(<a href="https://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)</code>&nbsp;</td>
+</tr>
+<tr id="i33" class="rowColor">
+<td class="colFirst"><code><a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getTableNames--">getTableNames</a></span>()</code>
+<div class="block">List all the userspace tables.</div>
+</td>
+</tr>
+<tr id="i34" class="altColor">
+<td class="colFirst"><code><a href="https://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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getTableRegions-java.nio.ByteBuffer-">getTableRegions</a></span>(<a href="https://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)</code>
+<div class="block">List the regions associated with a table.</div>
+</td>
+</tr>
+<tr id="i35" class="rowColor">
+<td class="colFirst"><code><a href="https://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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getVer-java.nio.ByteBuffer-java.nio.ByteBuffer-byte:A-byte:A-int-java.util.Map-">getVer</a></span>(<a href="https://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="https://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,
+      int&nbsp;numVersions,
+      <a href="https://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="https://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="https://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)</code>
+<div class="block">Note: this public interface is slightly different from public Java APIs in regard to
+ handling of the qualifier.</div>
+</td>
+</tr>
+<tr id="i36" class="altColor">
+<td class="colFirst"><code><a href="https://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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getVer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-int-java.util.Map-">getVer</a></span>(<a href="https://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="https://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="https://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,
+      <a href="https://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="https://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="https://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)</code>
+<div class="block">Get the specified number of versions for the specified table,
+ row, and column.</div>
+</td>
+</tr>
+<tr id="i37" class="rowColor">
+<td class="colFirst"><code>protected <a href="https://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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getVerTs-java.nio.ByteBuffer-java.nio.ByteBuffer-byte:A-byte:A-long-int-java.util.Map-">getVerTs</a></span>(<a href="https://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="https://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,
+        long&nbsp;timestamp,
+        int&nbsp;numVersions,
+        <a href="https://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="https://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="https://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)</code>
+<div class="block">Note: this internal interface is slightly different from public APIs in regard to handling
+ of the qualifier.</div>
+</td>
+</tr>
+<tr id="i38" class="altColor">
+<td class="colFirst"><code><a href="https://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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getVerTs-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-long-int-java.util.Map-">getVerTs</a></span>(<a href="https://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="https://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="https://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,
+        int&nbsp;numVersions,
+        <a href="https://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="https://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="https://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)</code>
+<div class="block">Get the specified number of versions for the specified table,
+ row, and column.</div>
+</td>
+</tr>
+<tr id="i39" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#increment-org.apache.hadoop.hbase.thrift.generated.TIncrement-">increment</a></span>(org.apache.hadoop.hbase.thrift.generated.TIncrement&nbsp;tincrement)</code>
+<div class="block">Increment a cell by the ammount.</div>
+</td>
+</tr>
+<tr id="i40" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#incrementRows-java.util.List-">incrementRows</a></span>(<a href="https://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;tincrements)</code>&nbsp;</td>
+</tr>
+<tr id="i41" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#isTableEnabled-java.nio.ByteBuffer-">isTableEnabled</a></span>(<a href="https://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)</code>&nbsp;</td>
+</tr>
+<tr id="i42" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#majorCompact-java.nio.ByteBuffer-">majorCompact</a></span>(<a href="https://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)</code>&nbsp;</td>
+</tr>
+<tr id="i43" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#mutateRow-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.List-java.util.Map-">mutateRow</a></span>(<a href="https://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="https://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="https://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="https://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="https://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="https://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)</code>
+<div class="block">Apply a series of mutations (updates/deletes) to a row in a
+ single transaction.</div>
+</td>
+</tr>
+<tr id="i44" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#mutateRows-java.nio.ByteBuffer-java.util.List-java.util.Map-">mutateRows</a></span>(<a href="https://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="https://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="https://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="https://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="https://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)</code>
+<div class="block">Apply a series of batches (each a series of mutations on a single row)
+ in a single transaction.</div>
+</td>
+</tr>
+<tr id="i45" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#mutateRowsTs-java.nio.ByteBuffer-java.util.List-long-java.util.Map-">mutateRowsTs</a></span>(<a href="https://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="https://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="https://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="https://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="https://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)</code>
+<div class="block">Apply a series of batches (each a series of mutations on a single row)
+ in a single transaction.</div>
+</td>
+</tr>
+<tr id="i46" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#mutateRowTs-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.List-long-java.util.Map-">mutateRowTs</a></span>(<a href="https://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="https://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="https://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,
+           <a href="https://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="https://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="https://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)</code>
+<div class="block">Apply a series of mutations (updates/deletes) to a row in a
+ single transaction.</div>
+</td>
+</tr>
+<tr id="i47" class="rowColor">
+<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.ResultScannerWrapper</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#removeScanner-int-">removeScanner</a></span>(int&nbsp;id)</code>
+<div class="block">Removes the scanner associated with the specified ID from the internal
+ id-&gt;scanner hash-map.</div>
+</td>
+</tr>
+<tr id="i48" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#scannerClose-int-">scannerClose</a></span>(int&nbsp;id)</code>
+<div class="block">Closes the server-state associated with an open scanner.</div>
+</td>
+</tr>
+<tr id="i49" class="rowColor">
+<td class="colFirst"><code><a href="https://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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#scannerGet-int-">scannerGet</a></span>(int&nbsp;id)</code>
+<div class="block">Returns the scanner's current row value and advances to the next
+ row in the table.</div>
+</td>
+</tr>
+<tr id="i50" class="altColor">
+<td class="colFirst"><code><a href="https://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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#scannerGetList-int-int-">scannerGetList</a></span>(int&nbsp;id,
+              int&nbsp;nbRows)</code>
+<div class="block">Returns, starting at the scanner's current row value nbRows worth of
+ rows and advances to the next row in the table.</div>
+</td>
+</tr>
+<tr id="i51" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#scannerOpen-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.List-java.util.Map-">scannerOpen</a></span>(<a href="https://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="https://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="https://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="https://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="https://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="https://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="https://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)</code>
+<div class="block">Get a scanner on the current table starting at the specified row and
+ ending at the last row in the table.</div>
+</td>
+</tr>
+<tr id="i52" class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#scannerOpenTs-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.List-long-java.util.Map-">scannerOpenTs</a></span>(<a href="https://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="https://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="https://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="https://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,
+             <a href="https://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="https://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="https://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)</code>
+<div class="block">Get a scanner on the current table starting at the specified row and
+ ending at the last row in the table.</div>
+</td>
+</tr>
+<tr id="i53" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#scannerOpenWithPrefix-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.List-java.util.Map-">scannerOpenWithPrefix</a></span>(<a href="https://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="https://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="https://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="https://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="https://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="https://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="https://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)</code>
+<div class="block">Open a scanner for a given prefix.</div>
+</td>
+</tr>
+<tr id="i54" class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#scannerOpenWithScan-java.nio.ByteBuffer-org.apache.hadoop.hbase.thrift.generated.TScan-java.util.Map-">scannerOpenWithScan</a></span>(<a href="https://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="https://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="https://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="https://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)</code>
+<div class="block">Get a scanner on the current table, using the Scan instance
+ for the scan parameters.</div>
+</td>
+</tr>
+<tr id="i55" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#scannerOpenWithStop-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.List-java.util.Map-">scannerOpenWithStop</a></span>(<a href="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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)</code>
+<div class="block">Get a scanner on the current table starting and stopping at the
+ specified rows.</div>
+</td>
+</tr>
+<tr id="i56" class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#scannerOpenWithStopTs-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.List-long-java.util.Map-">scannerOpenWithStopTs</a></span>(<a href="https://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="https://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="https://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="https://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="https://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,
+                     <a href="https://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="https://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="https://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)</code>
+<div class="block">Get a scanner on the current table starting and stopping at the
+ specified rows.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.thrift.HBaseServiceHandler">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#getAdmin--">getAdmin</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#getTable-byte:A-">getTable</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#getTable-java.nio.ByteBuffer-">getTable</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#initMetrics-org.apache.hadoop.hbase.thrift.ThriftMetrics-">initMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#setEffectiveUser-java.lang.String-">setEffectiveUser</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="LOG">
+<!--   -->
+</a>
+<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/thrift/ThriftHBaseServiceHandler.html#line.95">LOG</a></pre>
+</li>
+</ul>
+<a name="HREGION_VERSION">
+<!--   -->
+</a>
+<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/ThriftHBaseServiceHandler.html#line.97">HREGION_VERSION</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler.HREGION_VERSION">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="nextScannerId">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>nextScannerId</h4>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#line.100">nextScannerId</a></pre>
+</li>
+</ul>
+<a name="scannerMap">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>scannerMap</h4>
+<pre>private&nbsp;<a href="https://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="https://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/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.ResultScannerWrapper</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#line.101">scannerMap</a></pre>
+</li>
+</ul>
+<a name="coalescer">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<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/ThriftHBaseServiceHandler.html#line.102">coalescer</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="ThriftHBaseServiceHandler-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.UserProvider-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ThriftHBaseServiceHandler</h4>
+<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#line.157">ThriftHBaseServiceHandler</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="https://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="https://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>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getAllColumns-org.apache.hadoop.hbase.client.Table-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getAllColumns</h4>
+<pre>byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#line.110">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="https://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>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>table</code> - table</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://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="addScanner-org.apache.hadoop.hbase.client.ResultScanner-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>addScanner</h4>
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#line.128">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> - 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>
+</li>
+</ul>
+<a name="getScanner-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getScanner</h4>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.ResultScannerWrapper</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#line.142">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> - 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>
+</li>
+</ul>
+<a name="removeScanner-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>removeScanner</h4>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.ResultScannerWrapper</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#line.153">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> - 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>
+</li>
+</ul>
+<a name="enableTable-java.nio.ByteBuffer-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>enableTable</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#line.166">enableTable</a>(<a href="https://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>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>enableTable</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>tableName</code> - name of the table</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>org.apache.hadoop.hbase.thrift.generated.IOError</code></dd>
+</dl>
+</li>
+</ul>
+<a name="disableTable-java.nio.ByteBuffer-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>disableTable</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#line.176">disableTable</a>(<a href="https://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
+ will tell the servers to stop serving it.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>disableTable</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</c

<TRUNCATED>

[18/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.HttpKerberosServerAction.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.HttpKerberosServerAction.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.HttpKerberosServerAction.html
index 4ddef9a..5828be2 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.HttpKerberosServerAction.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.HttpKerberosServerAction.html
@@ -26,8 +26,8 @@
 <span class="sourceLineNo">018</span><a name="line.18"></a>
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.thrift;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SPNEGO_KEYTAB_FILE_KEY;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SPNEGO_PRINCIPAL_KEY;<a name="line.22"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_SPNEGO_KEYTAB_FILE_KEY;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_SPNEGO_PRINCIPAL_KEY;<a name="line.22"></a>
 <span class="sourceLineNo">023</span><a name="line.23"></a>
 <span class="sourceLineNo">024</span>import java.io.IOException;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import java.security.PrivilegedExceptionAction;<a name="line.25"></a>
@@ -66,7 +66,7 @@
 <span class="sourceLineNo">058</span>  private static final Logger LOG = LoggerFactory.getLogger(ThriftHttpServlet.class.getName());<a name="line.58"></a>
 <span class="sourceLineNo">059</span>  private final transient UserGroupInformation serviceUGI;<a name="line.59"></a>
 <span class="sourceLineNo">060</span>  private final transient UserGroupInformation httpUGI;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  private final transient ThriftServerRunner.HBaseHandler hbaseHandler;<a name="line.61"></a>
+<span class="sourceLineNo">061</span>  private final transient HBaseServiceHandler handler;<a name="line.61"></a>
 <span class="sourceLineNo">062</span>  private final boolean doAsEnabled;<a name="line.62"></a>
 <span class="sourceLineNo">063</span>  private final boolean securityEnabled;<a name="line.63"></a>
 <span class="sourceLineNo">064</span><a name="line.64"></a>
@@ -75,11 +75,11 @@
 <span class="sourceLineNo">067</span><a name="line.67"></a>
 <span class="sourceLineNo">068</span>  public ThriftHttpServlet(TProcessor processor, TProtocolFactory protocolFactory,<a name="line.68"></a>
 <span class="sourceLineNo">069</span>      UserGroupInformation serviceUGI, Configuration conf,<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      ThriftServerRunner.HBaseHandler hbaseHandler, boolean securityEnabled, boolean doAsEnabled)<a name="line.70"></a>
+<span class="sourceLineNo">070</span>      HBaseServiceHandler handler, boolean securityEnabled, boolean doAsEnabled)<a name="line.70"></a>
 <span class="sourceLineNo">071</span>      throws IOException {<a name="line.71"></a>
 <span class="sourceLineNo">072</span>    super(processor, protocolFactory);<a name="line.72"></a>
 <span class="sourceLineNo">073</span>    this.serviceUGI = serviceUGI;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    this.hbaseHandler = hbaseHandler;<a name="line.74"></a>
+<span class="sourceLineNo">074</span>    this.handler = handler;<a name="line.74"></a>
 <span class="sourceLineNo">075</span>    this.securityEnabled = securityEnabled;<a name="line.75"></a>
 <span class="sourceLineNo">076</span>    this.doAsEnabled = doAsEnabled;<a name="line.76"></a>
 <span class="sourceLineNo">077</span><a name="line.77"></a>
@@ -154,7 +154,7 @@
 <span class="sourceLineNo">146</span>      }<a name="line.146"></a>
 <span class="sourceLineNo">147</span>      effectiveUser = doAsUserFromQuery;<a name="line.147"></a>
 <span class="sourceLineNo">148</span>    }<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    hbaseHandler.setEffectiveUser(effectiveUser);<a name="line.149"></a>
+<span class="sourceLineNo">149</span>    handler.setEffectiveUser(effectiveUser);<a name="line.149"></a>
 <span class="sourceLineNo">150</span>    super.doPost(request, response);<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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.RemoteUserIdentity.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.RemoteUserIdentity.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.RemoteUserIdentity.html
index 4ddef9a..5828be2 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.RemoteUserIdentity.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.RemoteUserIdentity.html
@@ -26,8 +26,8 @@
 <span class="sourceLineNo">018</span><a name="line.18"></a>
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.thrift;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SPNEGO_KEYTAB_FILE_KEY;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SPNEGO_PRINCIPAL_KEY;<a name="line.22"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_SPNEGO_KEYTAB_FILE_KEY;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_SPNEGO_PRINCIPAL_KEY;<a name="line.22"></a>
 <span class="sourceLineNo">023</span><a name="line.23"></a>
 <span class="sourceLineNo">024</span>import java.io.IOException;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import java.security.PrivilegedExceptionAction;<a name="line.25"></a>
@@ -66,7 +66,7 @@
 <span class="sourceLineNo">058</span>  private static final Logger LOG = LoggerFactory.getLogger(ThriftHttpServlet.class.getName());<a name="line.58"></a>
 <span class="sourceLineNo">059</span>  private final transient UserGroupInformation serviceUGI;<a name="line.59"></a>
 <span class="sourceLineNo">060</span>  private final transient UserGroupInformation httpUGI;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  private final transient ThriftServerRunner.HBaseHandler hbaseHandler;<a name="line.61"></a>
+<span class="sourceLineNo">061</span>  private final transient HBaseServiceHandler handler;<a name="line.61"></a>
 <span class="sourceLineNo">062</span>  private final boolean doAsEnabled;<a name="line.62"></a>
 <span class="sourceLineNo">063</span>  private final boolean securityEnabled;<a name="line.63"></a>
 <span class="sourceLineNo">064</span><a name="line.64"></a>
@@ -75,11 +75,11 @@
 <span class="sourceLineNo">067</span><a name="line.67"></a>
 <span class="sourceLineNo">068</span>  public ThriftHttpServlet(TProcessor processor, TProtocolFactory protocolFactory,<a name="line.68"></a>
 <span class="sourceLineNo">069</span>      UserGroupInformation serviceUGI, Configuration conf,<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      ThriftServerRunner.HBaseHandler hbaseHandler, boolean securityEnabled, boolean doAsEnabled)<a name="line.70"></a>
+<span class="sourceLineNo">070</span>      HBaseServiceHandler handler, boolean securityEnabled, boolean doAsEnabled)<a name="line.70"></a>
 <span class="sourceLineNo">071</span>      throws IOException {<a name="line.71"></a>
 <span class="sourceLineNo">072</span>    super(processor, protocolFactory);<a name="line.72"></a>
 <span class="sourceLineNo">073</span>    this.serviceUGI = serviceUGI;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    this.hbaseHandler = hbaseHandler;<a name="line.74"></a>
+<span class="sourceLineNo">074</span>    this.handler = handler;<a name="line.74"></a>
 <span class="sourceLineNo">075</span>    this.securityEnabled = securityEnabled;<a name="line.75"></a>
 <span class="sourceLineNo">076</span>    this.doAsEnabled = doAsEnabled;<a name="line.76"></a>
 <span class="sourceLineNo">077</span><a name="line.77"></a>
@@ -154,7 +154,7 @@
 <span class="sourceLineNo">146</span>      }<a name="line.146"></a>
 <span class="sourceLineNo">147</span>      effectiveUser = doAsUserFromQuery;<a name="line.147"></a>
 <span class="sourceLineNo">148</span>    }<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    hbaseHandler.setEffectiveUser(effectiveUser);<a name="line.149"></a>
+<span class="sourceLineNo">149</span>    handler.setEffectiveUser(effectiveUser);<a name="line.149"></a>
 <span class="sourceLineNo">150</span>    super.doPost(request, response);<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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html
index 4ddef9a..5828be2 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html
@@ -26,8 +26,8 @@
 <span class="sourceLineNo">018</span><a name="line.18"></a>
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.thrift;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SPNEGO_KEYTAB_FILE_KEY;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.thrift.ThriftServerRunner.THRIFT_SPNEGO_PRINCIPAL_KEY;<a name="line.22"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_SPNEGO_KEYTAB_FILE_KEY;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_SPNEGO_PRINCIPAL_KEY;<a name="line.22"></a>
 <span class="sourceLineNo">023</span><a name="line.23"></a>
 <span class="sourceLineNo">024</span>import java.io.IOException;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import java.security.PrivilegedExceptionAction;<a name="line.25"></a>
@@ -66,7 +66,7 @@
 <span class="sourceLineNo">058</span>  private static final Logger LOG = LoggerFactory.getLogger(ThriftHttpServlet.class.getName());<a name="line.58"></a>
 <span class="sourceLineNo">059</span>  private final transient UserGroupInformation serviceUGI;<a name="line.59"></a>
 <span class="sourceLineNo">060</span>  private final transient UserGroupInformation httpUGI;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  private final transient ThriftServerRunner.HBaseHandler hbaseHandler;<a name="line.61"></a>
+<span class="sourceLineNo">061</span>  private final transient HBaseServiceHandler handler;<a name="line.61"></a>
 <span class="sourceLineNo">062</span>  private final boolean doAsEnabled;<a name="line.62"></a>
 <span class="sourceLineNo">063</span>  private final boolean securityEnabled;<a name="line.63"></a>
 <span class="sourceLineNo">064</span><a name="line.64"></a>
@@ -75,11 +75,11 @@
 <span class="sourceLineNo">067</span><a name="line.67"></a>
 <span class="sourceLineNo">068</span>  public ThriftHttpServlet(TProcessor processor, TProtocolFactory protocolFactory,<a name="line.68"></a>
 <span class="sourceLineNo">069</span>      UserGroupInformation serviceUGI, Configuration conf,<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      ThriftServerRunner.HBaseHandler hbaseHandler, boolean securityEnabled, boolean doAsEnabled)<a name="line.70"></a>
+<span class="sourceLineNo">070</span>      HBaseServiceHandler handler, boolean securityEnabled, boolean doAsEnabled)<a name="line.70"></a>
 <span class="sourceLineNo">071</span>      throws IOException {<a name="line.71"></a>
 <span class="sourceLineNo">072</span>    super(processor, protocolFactory);<a name="line.72"></a>
 <span class="sourceLineNo">073</span>    this.serviceUGI = serviceUGI;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    this.hbaseHandler = hbaseHandler;<a name="line.74"></a>
+<span class="sourceLineNo">074</span>    this.handler = handler;<a name="line.74"></a>
 <span class="sourceLineNo">075</span>    this.securityEnabled = securityEnabled;<a name="line.75"></a>
 <span class="sourceLineNo">076</span>    this.doAsEnabled = doAsEnabled;<a name="line.76"></a>
 <span class="sourceLineNo">077</span><a name="line.77"></a>
@@ -154,7 +154,7 @@
 <span class="sourceLineNo">146</span>      }<a name="line.146"></a>
 <span class="sourceLineNo">147</span>      effectiveUser = doAsUserFromQuery;<a name="line.147"></a>
 <span class="sourceLineNo">148</span>    }<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    hbaseHandler.setEffectiveUser(effectiveUser);<a name="line.149"></a>
+<span class="sourceLineNo">149</span>    handler.setEffectiveUser(effectiveUser);<a name="line.149"></a>
 <span class="sourceLineNo">150</span>    super.doPost(request, response);<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>


[28/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html
index c4e8c8b..aa58108 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html
@@ -82,602 +82,613 @@
 <span class="sourceLineNo">074</span>  public static final String USER_COPROCESSORS_ENABLED_CONF_KEY =<a name="line.74"></a>
 <span class="sourceLineNo">075</span>    "hbase.coprocessor.user.enabled";<a name="line.75"></a>
 <span class="sourceLineNo">076</span>  public static final boolean DEFAULT_USER_COPROCESSORS_ENABLED = true;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  private static final Logger LOG = LoggerFactory.getLogger(CoprocessorHost.class);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  protected Abortable abortable;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  /** Ordered set of loaded coprocessors with lock */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  protected final SortedList&lt;E&gt; coprocEnvironments =<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      new SortedList&lt;&gt;(new EnvironmentPriorityComparator());<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  protected Configuration conf;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  // unique file prefix to use for local copies of jars when classloading<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  protected String pathPrefix;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  protected AtomicInteger loadSequence = new AtomicInteger();<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>  public CoprocessorHost(Abortable abortable) {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    this.abortable = abortable;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    this.pathPrefix = UUID.randomUUID().toString();<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>   * Not to be confused with the per-object _coprocessors_ (above),<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   * coprocessorNames is static and stores the set of all coprocessors ever<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * loaded by any thread in this JVM. It is strictly additive: coprocessors are<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * added to coprocessorNames, by checkAndLoadInstance() but are never removed, since<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   * the intention is to preserve a history of all loaded coprocessors for<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * diagnosis in case of server crash (HBASE-4014).<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  private static Set&lt;String&gt; coprocessorNames =<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      Collections.synchronizedSet(new HashSet&lt;String&gt;());<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  public static Set&lt;String&gt; getLoadedCoprocessors() {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    synchronized (coprocessorNames) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      return new HashSet(coprocessorNames);<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>  /**<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * Used to create a parameter to the HServerLoad constructor so that<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * HServerLoad can provide information about the coprocessors loaded by this<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * regionserver.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * (HBASE-4070: Improve region server metrics to report loaded coprocessors<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * to master).<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   */<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  public Set&lt;String&gt; getCoprocessors() {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    Set&lt;String&gt; returnValue = new TreeSet&lt;&gt;();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    for (E e: coprocEnvironments) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      returnValue.add(e.getInstance().getClass().getSimpleName());<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    return returnValue;<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>   * Load system coprocessors once only. Read the class names from configuration.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * Called by constructor.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   */<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  protected void loadSystemCoprocessors(Configuration conf, String confKey) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    if (!coprocessorsEnabled) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      return;<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>    Class&lt;?&gt; implClass;<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>    // load default coprocessors from configure file<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    String[] defaultCPClasses = conf.getStrings(confKey);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    if (defaultCPClasses == null || defaultCPClasses.length == 0)<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      return;<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    int priority = Coprocessor.PRIORITY_SYSTEM;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    for (String className : defaultCPClasses) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      className = className.trim();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      if (findCoprocessor(className) != null) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        // If already loaded will just continue<a name="line.147"></a>
-<span class="sourceLineNo">148</span>        LOG.warn("Attempted duplicate loading of " + className + "; skipped");<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        continue;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      }<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      ClassLoader cl = this.getClass().getClassLoader();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      Thread.currentThread().setContextClassLoader(cl);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      try {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>        implClass = cl.loadClass(className);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        // Add coprocessors as we go to guard against case where a coprocessor is specified twice<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        // in the configuration<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        if (env != null) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>          this.coprocEnvironments.add(env);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          LOG.info("System coprocessor {} loaded, priority={}.", className, priority);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>          ++priority;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        }<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      } catch (Throwable t) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        // We always abort if system coprocessors cannot be loaded<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        abortServer(className, t);<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><a name="line.169"></a>
-<span class="sourceLineNo">170</span>  /**<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * Load a coprocessor implementation into the host<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * @param path path to implementation jar<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * @param className the main class name<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * @param priority chaining priority<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * @param conf configuration for coprocessor<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   * @throws java.io.IOException Exception<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  public E load(Path path, String className, int priority,<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      Configuration conf) throws IOException {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    String[] includedClassPrefixes = null;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    if (conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY) != null){<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      String prefixes = conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      includedClassPrefixes = prefixes.split(";");<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    }<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    return load(path, className, priority, conf, includedClassPrefixes);<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>   * Load a coprocessor implementation into the host<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * @param path path to implementation jar<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param className the main class name<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * @param priority chaining priority<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * @param conf configuration for coprocessor<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * @param includedClassPrefixes class name prefixes to include<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * @throws java.io.IOException Exception<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  public E load(Path path, String className, int priority,<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      Configuration conf, String[] includedClassPrefixes) throws IOException {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    Class&lt;?&gt; implClass;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    LOG.debug("Loading coprocessor class " + className + " with path " +<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        path + " and priority " + priority);<a name="line.201"></a>
-<span class="sourceLineNo">202</span><a name="line.202"></a>
-<span class="sourceLineNo">203</span>    ClassLoader cl = null;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    if (path == null) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      try {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>        implClass = getClass().getClassLoader().loadClass(className);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      } catch (ClassNotFoundException e) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>        throw new IOException("No jar path specified for " + className);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      }<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    } else {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      cl = CoprocessorClassLoader.getClassLoader(<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        path, getClass().getClassLoader(), pathPrefix, conf);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      try {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        implClass = ((CoprocessorClassLoader)cl).loadClass(className, includedClassPrefixes);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      } catch (ClassNotFoundException e) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>        throw new IOException("Cannot load external coprocessor class " + className, e);<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><a name="line.219"></a>
-<span class="sourceLineNo">220</span>    //load custom code for coprocessor<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    Thread currentThread = Thread.currentThread();<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    try{<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      // switch temporarily to the thread classloader for custom CP<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      currentThread.setContextClassLoader(cl);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      E cpInstance = checkAndLoadInstance(implClass, priority, conf);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return cpInstance;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    } finally {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      // restore the fresh (host) classloader<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      currentThread.setContextClassLoader(hostClassLoader);<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>  @VisibleForTesting<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public void load(Class&lt;? extends C&gt; implClass, int priority, Configuration conf)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      throws IOException {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    coprocEnvironments.add(env);<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>   * @param implClass Implementation class<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * @param priority priority<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   * @param conf configuration<a name="line.244"></a>
-<span class="sourceLineNo">245</span>   * @throws java.io.IOException Exception<a name="line.245"></a>
-<span class="sourceLineNo">246</span>   */<a name="line.246"></a>
-<span class="sourceLineNo">247</span>  public E checkAndLoadInstance(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      throws IOException {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    // create the instance<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    C impl;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    try {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      impl = checkAndGetInstance(implClass);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      if (impl == null) {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        LOG.error("Cannot load coprocessor " + implClass.getSimpleName());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        return null;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      }<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    } catch (InstantiationException|IllegalAccessException e) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      throw new IOException(e);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    // create the environment<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    E env = createEnvironment(impl, priority, loadSequence.incrementAndGet(), conf);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    assert env instanceof BaseEnvironment;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    ((BaseEnvironment&lt;C&gt;) env).startup();<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    // HBASE-4014: maintain list of loaded coprocessors for later crash analysis<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    // if server (master or regionserver) aborts.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    coprocessorNames.add(implClass.getName());<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    return env;<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>  /**<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * Called when a new Coprocessor class is loaded<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   */<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  public abstract E createEnvironment(C instance, int priority, int sequence, Configuration conf);<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>   * Called when a new Coprocessor class needs to be loaded. Checks if type of the given class<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   * is what the corresponding host implementation expects. If it is of correct type, returns an<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   * instance of the coprocessor to be loaded. If not, returns null.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   * If an exception occurs when trying to create instance of a coprocessor, it's passed up and<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * eventually results into server aborting.<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   */<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  public abstract C checkAndGetInstance(Class&lt;?&gt; implClass)<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      throws InstantiationException, IllegalAccessException;<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>  public void shutdown(E e) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    assert e instanceof BaseEnvironment;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    if (LOG.isDebugEnabled()) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      LOG.debug("Stop coprocessor " + e.getInstance().getClass().getName());<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    }<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    ((BaseEnvironment&lt;C&gt;) e).shutdown();<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>   * Find coprocessors by full class name or simple name.<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   */<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  public C findCoprocessor(String className) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    for (E env: coprocEnvironments) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        return env.getInstance();<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>    return null;<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>  @VisibleForTesting<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  public &lt;T extends C&gt; T findCoprocessor(Class&lt;T&gt; cls) {<a name="line.307"></a>
+<span class="sourceLineNo">077</span>  public static final String SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR =<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      "hbase.skip.load.duplicate.table.coprocessor";<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  public static final boolean DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR = false;<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private static final Logger LOG = LoggerFactory.getLogger(CoprocessorHost.class);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  protected Abortable abortable;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  /** Ordered set of loaded coprocessors with lock */<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  protected final SortedList&lt;E&gt; coprocEnvironments =<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      new SortedList&lt;&gt;(new EnvironmentPriorityComparator());<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  protected Configuration conf;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  // unique file prefix to use for local copies of jars when classloading<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  protected String pathPrefix;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  protected AtomicInteger loadSequence = new AtomicInteger();<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public CoprocessorHost(Abortable abortable) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    this.abortable = abortable;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    this.pathPrefix = UUID.randomUUID().toString();<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>   * Not to be confused with the per-object _coprocessors_ (above),<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   * coprocessorNames is static and stores the set of all coprocessors ever<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   * loaded by any thread in this JVM. It is strictly additive: coprocessors are<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * added to coprocessorNames, by checkAndLoadInstance() but are never removed, since<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * the intention is to preserve a history of all loaded coprocessors for<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * diagnosis in case of server crash (HBASE-4014).<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   */<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  private static Set&lt;String&gt; coprocessorNames =<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      Collections.synchronizedSet(new HashSet&lt;String&gt;());<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  public static Set&lt;String&gt; getLoadedCoprocessors() {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    synchronized (coprocessorNames) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      return new HashSet(coprocessorNames);<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>  /**<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * Used to create a parameter to the HServerLoad constructor so that<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   * HServerLoad can provide information about the coprocessors loaded by this<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   * regionserver.<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   * (HBASE-4070: Improve region server metrics to report loaded coprocessors<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   * to master).<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   */<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  public Set&lt;String&gt; getCoprocessors() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    Set&lt;String&gt; returnValue = new TreeSet&lt;&gt;();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    for (E e: coprocEnvironments) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      returnValue.add(e.getInstance().getClass().getSimpleName());<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    return returnValue;<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>   * Load system coprocessors once only. Read the class names from configuration.<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * Called by constructor.<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  protected void loadSystemCoprocessors(Configuration conf, String confKey) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    if (!coprocessorsEnabled) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      return;<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>    Class&lt;?&gt; implClass;<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>    // load default coprocessors from configure file<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    String[] defaultCPClasses = conf.getStrings(confKey);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    if (defaultCPClasses == null || defaultCPClasses.length == 0)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      return;<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    int priority = Coprocessor.PRIORITY_SYSTEM;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    for (String className : defaultCPClasses) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      className = className.trim();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      if (findCoprocessor(className) != null) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        // If already loaded will just continue<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        LOG.warn("Attempted duplicate loading of " + className + "; skipped");<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        continue;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      }<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      ClassLoader cl = this.getClass().getClassLoader();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      Thread.currentThread().setContextClassLoader(cl);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      try {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>        implClass = cl.loadClass(className);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        // Add coprocessors as we go to guard against case where a coprocessor is specified twice<a name="line.158"></a>
+<span class="sourceLineNo">159</span>        // in the configuration<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        if (env != null) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>          this.coprocEnvironments.add(env);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>          LOG.info("System coprocessor {} loaded, priority={}.", className, priority);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>          ++priority;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      } catch (Throwable t) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        // We always abort if system coprocessors cannot be loaded<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        abortServer(className, t);<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>  }<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>   * Load a coprocessor implementation into the host<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * @param path path to implementation jar<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * @param className the main class name<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   * @param priority chaining priority<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   * @param conf configuration for coprocessor<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   * @throws java.io.IOException Exception<a name="line.179"></a>
+<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  public E load(Path path, String className, int priority,<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      Configuration conf) throws IOException {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    String[] includedClassPrefixes = null;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    if (conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY) != null){<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      String prefixes = conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      includedClassPrefixes = prefixes.split(";");<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return load(path, className, priority, conf, includedClassPrefixes);<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>  /**<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * Load a coprocessor implementation into the host<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * @param path path to implementation jar<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * @param className the main class name<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * @param priority chaining priority<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * @param conf configuration for coprocessor<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * @param includedClassPrefixes class name prefixes to include<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * @throws java.io.IOException Exception<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   */<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  public E load(Path path, String className, int priority,<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      Configuration conf, String[] includedClassPrefixes) throws IOException {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    Class&lt;?&gt; implClass;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    LOG.debug("Loading coprocessor class " + className + " with path " +<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        path + " and priority " + priority);<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>    boolean skipLoadDuplicateCoprocessor = conf.getBoolean(SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR,<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    if (skipLoadDuplicateCoprocessor &amp;&amp; findCoprocessor(className) != null) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      // If already loaded will just continue<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      LOG.warn("Attempted duplicate loading of {}; skipped", className);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      return null;<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>    ClassLoader cl = null;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    if (path == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      try {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        implClass = getClass().getClassLoader().loadClass(className);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      } catch (ClassNotFoundException e) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        throw new IOException("No jar path specified for " + className);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      }<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    } else {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      cl = CoprocessorClassLoader.getClassLoader(<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        path, getClass().getClassLoader(), pathPrefix, conf);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      try {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        implClass = ((CoprocessorClassLoader)cl).loadClass(className, includedClassPrefixes);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      } catch (ClassNotFoundException e) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        throw new IOException("Cannot load external coprocessor class " + className, e);<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>    //load custom code for coprocessor<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    Thread currentThread = Thread.currentThread();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    try{<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      // switch temporarily to the thread classloader for custom CP<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      currentThread.setContextClassLoader(cl);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      E cpInstance = checkAndLoadInstance(implClass, priority, conf);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      return cpInstance;<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    } finally {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      // restore the fresh (host) classloader<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      currentThread.setContextClassLoader(hostClassLoader);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    }<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>  @VisibleForTesting<a name="line.245"></a>
+<span class="sourceLineNo">246</span>  public void load(Class&lt;? extends C&gt; implClass, int priority, Configuration conf)<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      throws IOException {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    coprocEnvironments.add(env);<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>  /**<a name="line.252"></a>
+<span class="sourceLineNo">253</span>   * @param implClass Implementation class<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * @param priority priority<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * @param conf configuration<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   * @throws java.io.IOException Exception<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   */<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  public E checkAndLoadInstance(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      throws IOException {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    // create the instance<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    C impl;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    try {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      impl = checkAndGetInstance(implClass);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      if (impl == null) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        LOG.error("Cannot load coprocessor " + implClass.getSimpleName());<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        return null;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    } catch (InstantiationException|IllegalAccessException e) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      throw new IOException(e);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    }<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    // create the environment<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    E env = createEnvironment(impl, priority, loadSequence.incrementAndGet(), conf);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    assert env instanceof BaseEnvironment;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    ((BaseEnvironment&lt;C&gt;) env).startup();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    // HBASE-4014: maintain list of loaded coprocessors for later crash analysis<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // if server (master or regionserver) aborts.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    coprocessorNames.add(implClass.getName());<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    return env;<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>   * Called when a new Coprocessor class is loaded<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   */<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  public abstract E createEnvironment(C instance, int priority, int sequence, Configuration conf);<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>   * Called when a new Coprocessor class needs to be loaded. Checks if type of the given class<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * is what the corresponding host implementation expects. If it is of correct type, returns an<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * instance of the coprocessor to be loaded. If not, returns null.<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * If an exception occurs when trying to create instance of a coprocessor, it's passed up and<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * eventually results into server aborting.<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   */<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  public abstract C checkAndGetInstance(Class&lt;?&gt; implClass)<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      throws InstantiationException, IllegalAccessException;<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  public void shutdown(E e) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    assert e instanceof BaseEnvironment;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    if (LOG.isDebugEnabled()) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      LOG.debug("Stop coprocessor " + e.getInstance().getClass().getName());<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    }<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    ((BaseEnvironment&lt;C&gt;) e).shutdown();<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>  /**<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * Find coprocessors by full class name or simple name.<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   */<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  public C findCoprocessor(String className) {<a name="line.307"></a>
 <span class="sourceLineNo">308</span>    for (E env: coprocEnvironments) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      if (cls.isAssignableFrom(env.getInstance().getClass())) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        return (T) env.getInstance();<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>    return null;<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>   * Find list of coprocessors that extend/implement the given class/interface<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @param cls the class/interface to look for<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * @return the list of coprocessors, or null if not found<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public &lt;T extends C&gt; List&lt;T&gt; findCoprocessors(Class&lt;T&gt; cls) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    ArrayList&lt;T&gt; ret = new ArrayList&lt;&gt;();<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    for (E env: coprocEnvironments) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      C cp = env.getInstance();<a name="line.325"></a>
+<span class="sourceLineNo">309</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.309"></a>
+<span class="sourceLineNo">310</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        return env.getInstance();<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>    return null;<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>  @VisibleForTesting<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public &lt;T extends C&gt; T findCoprocessor(Class&lt;T&gt; cls) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    for (E env: coprocEnvironments) {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      if (cls.isAssignableFrom(env.getInstance().getClass())) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        return (T) env.getInstance();<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>    return null;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
 <span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>      if(cp != null) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        if (cls.isAssignableFrom(cp.getClass())) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          ret.add((T)cp);<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>    }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    return ret;<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>  /**<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * Find a coprocessor environment by class name<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   * @param className the class name<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   * @return the coprocessor, or null if not found<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   */<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  @VisibleForTesting<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public E findCoprocessorEnvironment(String className) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    for (E env: coprocEnvironments) {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.344"></a>
-<span class="sourceLineNo">345</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        return env;<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>    return null;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  }<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>   * Retrieves the set of classloaders used to instantiate Coprocessor classes defined in external<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * jar files.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * @return A set of ClassLoader instances<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  Set&lt;ClassLoader&gt; getExternalClassLoaders() {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    Set&lt;ClassLoader&gt; externalClassLoaders = new HashSet&lt;&gt;();<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    final ClassLoader systemClassLoader = this.getClass().getClassLoader();<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    for (E env : coprocEnvironments) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      ClassLoader cl = env.getInstance().getClass().getClassLoader();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      if (cl != systemClassLoader){<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        //do not include system classloader<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        externalClassLoaders.add(cl);<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>    return externalClassLoaders;<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>   * Environment priority comparator.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * Coprocessors are chained in sorted order.<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   */<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  static class EnvironmentPriorityComparator implements Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    @Override<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        final CoprocessorEnvironment env2) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>        return -1;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>        return 1;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      }<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        return -1;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        return 1;<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      return 0;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    }<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>  protected void abortServer(final E environment, final Throwable e) {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    abortServer(environment.getInstance().getClass().getName(), e);<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>  protected void abortServer(final String coprocessorName, final Throwable e) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    String message = "The coprocessor " + coprocessorName + " threw " + e.toString();<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    LOG.error(message, e);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    if (abortable != null) {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      abortable.abort(message, e);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    } else {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      LOG.warn("No available Abortable, process was not aborted");<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>  /**<a name="line.406"></a>
-<span class="sourceLineNo">407</span>   * This is used by coprocessor hooks which are declared to throw IOException<a name="line.407"></a>
-<span class="sourceLineNo">408</span>   * (or its subtypes). For such hooks, we should handle throwable objects<a name="line.408"></a>
-<span class="sourceLineNo">409</span>   * depending on the Throwable's type. Those which are instances of<a name="line.409"></a>
-<span class="sourceLineNo">410</span>   * IOException should be passed on to the client. This is in conformance with<a name="line.410"></a>
-<span class="sourceLineNo">411</span>   * the HBase idiom regarding IOException: that it represents a circumstance<a name="line.411"></a>
-<span class="sourceLineNo">412</span>   * that should be passed along to the client for its own handling. For<a name="line.412"></a>
-<span class="sourceLineNo">413</span>   * example, a coprocessor that implements access controls would throw a<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * subclass of IOException, such as AccessDeniedException, in its preGet()<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * method to prevent an unauthorized client's performing a Get on a particular<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * table.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param env Coprocessor Environment<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param e Throwable object thrown by coprocessor.<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * @exception IOException Exception<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   */<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  // Note to devs: Class comments of all observers ({@link MasterObserver}, {@link WALObserver},<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  // etc) mention this nuance of our exception handling so that coprocessor can throw appropriate<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  // exceptions depending on situation. If any changes are made to this logic, make sure to<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  // update all classes' comments.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  protected void handleCoprocessorThrowable(final E env, final Throwable e) throws IOException {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    if (e instanceof IOException) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      throw (IOException)e;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    // If we got here, e is not an IOException. A loaded coprocessor has a<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    // fatal bug, and the server (master or regionserver) should remove the<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    // faulty coprocessor from its set of active coprocessors. Setting<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    // 'hbase.coprocessor.abortonerror' to true will cause abortServer(),<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    // which may be useful in development and testing environments where<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    // 'failing fast' for error analysis is desired.<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if (env.getConfiguration().getBoolean(ABORT_ON_ERROR_KEY, DEFAULT_ABORT_ON_ERROR)) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      // server is configured to abort.<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      abortServer(env, e);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    } else {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      // If available, pull a table name out of the environment<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      if(env instanceof RegionCoprocessorEnvironment) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        String tableName = ((RegionCoprocessorEnvironment)env).getRegionInfo().getTable().getNameAsString();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from table '"+ tableName + "'", e);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      } else {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from " +<a name="line.444"></a>
-<span class="sourceLineNo">445</span>                "environment",e);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>      coprocEnvironments.remove(env);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      try {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>        shutdown(env);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      } catch (Exception x) {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>        LOG.error("Uncaught exception when shutting down coprocessor '"<a name="line.452"></a>
-<span class="sourceLineNo">453</span>            + env.toString() + "'", x);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      throw new DoNotRetryIOException("Coprocessor: '" + env.toString() +<a name="line.455"></a>
-<span class="sourceLineNo">456</span>          "' threw: '" + e + "' and has been removed from the active " +<a name="line.456"></a>
-<span class="sourceLineNo">457</span>          "coprocessor set.", e);<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><a name="line.460"></a>
-<span class="sourceLineNo">461</span>  /**<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * Used to limit legacy handling to once per Coprocessor class per classloader.<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   */<a name="line.463"></a>
-<span class="sourceLineNo">464</span>  private static final Set&lt;Class&lt;? extends Coprocessor&gt;&gt; legacyWarning =<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      new ConcurrentSkipListSet&lt;&gt;(<a name="line.465"></a>
-<span class="sourceLineNo">466</span>          new Comparator&lt;Class&lt;? extends Coprocessor&gt;&gt;() {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>            @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>            public int compare(Class&lt;? extends Coprocessor&gt; c1, Class&lt;? extends Coprocessor&gt; c2) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>              if (c1.equals(c2)) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>                return 0;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>              }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>              return c1.getName().compareTo(c2.getName());<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><a name="line.475"></a>
-<span class="sourceLineNo">476</span>  /**<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * Implementations defined function to get an observer of type {@code O} from a coprocessor of<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * type {@code C}. Concrete implementations of CoprocessorHost define one getter for each<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * observer they can handle. For e.g. RegionCoprocessorHost will use 3 getters, one for<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * each of RegionObserver, EndpointObserver and BulkLoadObserver.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * These getters are used by {@code ObserverOperation} to get appropriate observer from the<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * coprocessor.<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   */<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  @FunctionalInterface<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  public interface ObserverGetter&lt;C, O&gt; extends Function&lt;C, Optional&lt;O&gt;&gt; {}<a name="line.485"></a>
+<span class="sourceLineNo">327</span>  /**<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * Find list of coprocessors that extend/implement the given class/interface<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @param cls the class/interface to look for<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   * @return the list of coprocessors, or null if not found<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public &lt;T extends C&gt; List&lt;T&gt; findCoprocessors(Class&lt;T&gt; cls) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    ArrayList&lt;T&gt; ret = new ArrayList&lt;&gt;();<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>    for (E env: coprocEnvironments) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      C cp = env.getInstance();<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>      if(cp != null) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>        if (cls.isAssignableFrom(cp.getClass())) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>          ret.add((T)cp);<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>    return ret;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  }<a name="line.345"></a>
+<span class="sourceLineNo">346</span><a name="line.346"></a>
+<span class="sourceLineNo">347</span>  /**<a name="line.347"></a>
+<span class="sourceLineNo">348</span>   * Find a coprocessor environment by class name<a name="line.348"></a>
+<span class="sourceLineNo">349</span>   * @param className the class name<a name="line.349"></a>
+<span class="sourceLineNo">350</span>   * @return the coprocessor, or null if not found<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   */<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  @VisibleForTesting<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  public E findCoprocessorEnvironment(String className) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    for (E env: coprocEnvironments) {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        return env;<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>    return null;<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>  /**<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   * Retrieves the set of classloaders used to instantiate Coprocessor classes defined in external<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   * jar files.<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   * @return A set of ClassLoader instances<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  Set&lt;ClassLoader&gt; getExternalClassLoaders() {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    Set&lt;ClassLoader&gt; externalClassLoaders = new HashSet&lt;&gt;();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    final ClassLoader systemClassLoader = this.getClass().getClassLoader();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    for (E env : coprocEnvironments) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      ClassLoader cl = env.getInstance().getClass().getClassLoader();<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      if (cl != systemClassLoader){<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        //do not include system classloader<a name="line.374"></a>
+<span class="sourceLineNo">375</span>        externalClassLoaders.add(cl);<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>    return externalClassLoaders;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  }<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>   * Environment priority comparator.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   * Coprocessors are chained in sorted order.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>   */<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  static class EnvironmentPriorityComparator implements Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    @Override<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        final CoprocessorEnvironment env2) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        return -1;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<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>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        return -1;<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        return 1;<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      }<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      return 0;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  protected void abortServer(final E environment, final Throwable e) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    abortServer(environment.getInstance().getClass().getName(), 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>  protected void abortServer(final String coprocessorName, final Throwable e) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    String message = "The coprocessor " + coprocessorName + " threw " + e.toString();<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    LOG.error(message, e);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    if (abortable != null) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      abortable.abort(message, e);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    } else {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      LOG.warn("No available Abortable, process was not aborted");<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>  /**<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   * This is used by coprocessor hooks which are declared to throw IOException<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * (or its subtypes). For such hooks, we should handle throwable objects<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   * depending on the Throwable's type. Those which are instances of<a name="line.420"></a>
+<span class="sourceLineNo">421</span>   * IOException should be passed on to the client. This is in conformance with<a name="line.421"></a>
+<span class="sourceLineNo">422</span>   * the HBase idiom regarding IOException: that it represents a circumstance<a name="line.422"></a>
+<span class="sourceLineNo">423</span>   * that should be passed along to the client for its own handling. For<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   * example, a coprocessor that implements access controls would throw a<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   * subclass of IOException, such as AccessDeniedException, in its preGet()<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * method to prevent an unauthorized client's performing a Get on a particular<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * table.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * @param env Coprocessor Environment<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * @param e Throwable object thrown by coprocessor.<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * @exception IOException Exception<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   */<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  // Note to devs: Class comments of all observers ({@link MasterObserver}, {@link WALObserver},<a name="line.432"></a>
+<span class="sourceLineNo">433</span>  // etc) mention this nuance of our exception handling so that coprocessor can throw appropriate<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  // exceptions depending on situation. If any changes are made to this logic, make sure to<a name="line.434"></a>
+<span class="sourceLineNo">435</span>  // update all classes' comments.<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  protected void handleCoprocessorThrowable(final E env, final Throwable e) throws IOException {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    if (e instanceof IOException) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      throw (IOException)e;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    // If we got here, e is not an IOException. A loaded coprocessor has a<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    // fatal bug, and the server (master or regionserver) should remove the<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    // faulty coprocessor from its set of active coprocessors. Setting<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    // 'hbase.coprocessor.abortonerror' to true will cause abortServer(),<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    // which may be useful in development and testing environments where<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    // 'failing fast' for error analysis is desired.<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    if (env.getConfiguration().getBoolean(ABORT_ON_ERROR_KEY, DEFAULT_ABORT_ON_ERROR)) {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      // server is configured to abort.<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      abortServer(env, e);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } else {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      // If available, pull a table name out of the environment<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      if(env instanceof RegionCoprocessorEnvironment) {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>        String tableName = ((RegionCoprocessorEnvironment)env).getRegionInfo().getTable().getNameAsString();<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from table '"+ tableName + "'", e);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      } else {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from " +<a name="line.455"></a>
+<span class="sourceLineNo">456</span>                "environment",e);<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>      coprocEnvironments.remove(env);<a name="line.459"></a>
+<span class="sourceLineNo">460</span>      try {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>        shutdown(env);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      } catch (Exception x) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        LOG.error("Uncaught exception when shutting down coprocessor '"<a name="line.463"></a>
+<span class="sourceLineNo">464</span>            + env.toString() + "'", x);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      throw new DoNotRetryIOException("Coprocessor: '" + env.toString() +<a name="line.466"></a>
+<span class="sourceLineNo">467</span>          "' threw: '" + e + "' and has been removed from the active " +<a name="line.467"></a>
+<span class="sourceLineNo">468</span>          "coprocessor set.", e);<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><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * Used to limit legacy handling to once per Coprocessor class per classloader.<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   */<a name="line.474"></a>
+<span class="sourceLineNo">475</span>  private static final Set&lt;Class&lt;? extends Coprocessor&gt;&gt; legacyWarning =<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      new ConcurrentSkipListSet&lt;&gt;(<a name="line.476"></a>
+<span class="sourceLineNo">477</span>          new Comparator&lt;Class&lt;? extends Coprocessor&gt;&gt;() {<a name="line.477"></a>
+<span class="sourceLineNo">478</span>            @Override<a name="line.478"></a>
+<span class="sourceLineNo">479</span>            public int compare(Class&lt;? extends Coprocessor&gt; c1, Class&lt;? extends Coprocessor&gt; c2) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>              if (c1.equals(c2)) {<a name="line.480"></a>
+<span class="sourceLineNo">481</span>                return 0;<a name="line.481"></a>
+<span class="sourceLineNo">482</span>              }<a name="line.482"></a>
+<span class="sourceLineNo">483</span>              return c1.getName().compareTo(c2.getName());<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>  private abstract class ObserverOperation&lt;O&gt; extends ObserverContextImpl&lt;E&gt; {<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    ObserverGetter&lt;C, O&gt; observerGetter;<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      this(observerGetter, null);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter, User user) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      this(observerGetter, user, false);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
+<span class="sourceLineNo">487</span>  /**<a name="line.487"></a>
+<span class="sourceLineNo">488</span>   * Implementations defined function to get an observer of type {@code O} from a coprocessor of<a name="line.488"></a>
+<span class="sourceLineNo">489</span>   * type {@code C}. Concrete implementations of CoprocessorHost define one getter for each<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   * observer they can handle. For e.g. RegionCoprocessorHost will use 3 getters, one for<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   * each of RegionObserver, EndpointObserver and BulkLoadObserver.<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   * These getters are used by {@code ObserverOperation} to get appropriate observer from the<a name="line.492"></a>
+<span class="sourceLineNo">493</span>   * coprocessor.<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   */<a name="line.494"></a>
+<span class="sourceLineNo">495</span>  @FunctionalInterface<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  public interface ObserverGetter&lt;C, O&gt; extends Function&lt;C, Optional&lt;O&gt;&gt; {}<a name="line.496"></a>
 <span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter, boolean bypassable) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      this(observerGetter, null, bypassable);<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>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter, User user, boolean bypassable) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      super(user != null? user: RpcServer.getRequestUser().orElse(null), bypassable);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      this.observerGetter = observerGetter;<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>    abstract void callObserver() throws IOException;<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    protected void postEnvCall() {}<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  // Can't derive ObserverOperation from ObserverOperationWithResult (R = Void) because then all<a name="line.511"></a>
-<span class="sourceLineNo">512</span>  // ObserverCaller implementations will have to have a return statement.<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  // O = observer, E = environment, C = coprocessor, R=result type<a name="line.513"></a>
-<span class="sourceLineNo">514</span>  public abstract class ObserverOperationWithoutResult&lt;O&gt; extends ObserverOperation&lt;O&gt; {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    protected abstract void call(O observer) throws IOException;<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>    public ObserverOperationWithoutResult(ObserverGetter&lt;C, O&gt; observerGetter) {<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      super(observerGetter);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    }<a name="line.519"></a>
-<span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span>    public ObserverOperationWithoutResult(ObserverGetter&lt;C, O&gt; observerGetter, User user) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      super(observerGetter, user);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>    public ObserverOperationWithoutResult(ObserverGetter&lt;C, O&gt; observerGetter, User user,<a name="line.525"></a>
-<span class="sourceLineNo">526</span>        boolean bypassable) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      super(observerGetter, user, bypassable);<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>    /**<a name="line.530"></a>
-<span class="sourceLineNo">531</span>     * In case of coprocessors which have many kinds of observers (for eg, {@link RegionCoprocessor}<a name="line.531"></a>
-<span class="sourceLineNo">532</span>     * has BulkLoadObserver, RegionObserver, etc), some implementations may not need all<a name="line.532"></a>
-<span class="sourceLineNo">533</span>     * observers, in which case they will return null for that observer's getter.<a name="line.533"></a>
-<span class="sourceLineNo">534</span>     * We simply ignore such cases.<a name="line.534"></a>
-<span class="sourceLineNo">535</span>     */<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    @Override<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    void callObserver() throws IOException {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      Optional&lt;O&gt; observer = observerGetter.apply(getEnvironment().getInstance());<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      if (observer.isPresent()) {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        call(observer.get());<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      }<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    }<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>  public abstract class ObserverOperationWithResult&lt;O, R&gt; extends ObserverOperation&lt;O&gt; {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    protected abstract R call(O observer) throws IOException;<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>    private R result;<a name="line.548"></a>
-

<TRUNCATED>

[49/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index e0062c0..117e755 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -25,8 +25,8 @@ under the License.
     <language>en-us</language>
     <copyright>&#169;2007 - 2019 The Apache Software Foundation</copyright>
     <item>
-      <title>File: 3834,
-             Errors: 14667,
+      <title>File: 3840,
+             Errors: 14666,
              Warnings: 0,
              Infos: 0
       </title>
@@ -12352,6 +12352,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.thrift.Constants.java">org/apache/hadoop/hbase/thrift/Constants.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.thrift.generated.TCell.java">org/apache/hadoop/hbase/thrift/generated/TCell.java</a>
                 </td>
                 <td>
@@ -13500,6 +13514,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.thrift.HBaseServiceHandler.java">org/apache/hadoop/hbase/thrift/HBaseServiceHandler.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.util.TestFSHDFSUtils.java">org/apache/hadoop/hbase/util/TestFSHDFSUtils.java</a>
                 </td>
                 <td>
@@ -14536,6 +14564,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.thrift2.TestThrift2ServerCmdLine.java">org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.AbstractTestProtobufLog.java">org/apache/hadoop/hbase/regionserver/wal/AbstractTestProtobufLog.java</a>
                 </td>
                 <td>
@@ -19268,6 +19310,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.coprocessor.TestRegionCoprocessorHost.java">org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.procedure2.ProcedureYieldException.java">org/apache/hadoop/hbase/procedure2/ProcedureYieldException.java</a>
                 </td>
                 <td>
@@ -37253,7 +37309,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
@@ -38896,6 +38952,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.thrift.ImplType.java">org/apache/hadoop/hbase/thrift/ImplType.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.TestChecksum.java">org/apache/hadoop/hbase/io/hfile/TestChecksum.java</a>
                 </td>
                 <td>
@@ -42676,20 +42746,6 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.thrift.ThriftServerRunner.java">org/apache/hadoop/hbase/thrift/ThriftServerRunner.java</a>
-                </td>
-                <td>
-                  0
-                </td>
-                <td>
-                  0
-                </td>
-                <td>
-                  0
-                </td>
-              </tr>
-                          <tr>
-                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestOpenSeqNumUnexpectedIncrease.java">org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.java</a>
                 </td>
                 <td>
@@ -50866,6 +50922,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler.java">org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.RegionLoad.java">org/apache/hadoop/hbase/RegionLoad.java</a>
                 </td>
                 <td>
@@ -51272,6 +51342,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.thrift2.TestThrift2HttpServer.java">org/apache/hadoop/hbase/thrift2/TestThrift2HttpServer.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mapreduce.CellSerialization.java">org/apache/hadoop/hbase/mapreduce/CellSerialization.java</a>
                 </td>
                 <td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 125c5bf..84c32a3 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -385,7 +385,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: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index 74aa1b3..4464010 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -450,7 +450,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 5922010..5d12739 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -680,7 +680,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index fecd6a0..456d498 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -323,7 +323,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index b1f9680..2be44da 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -1009,7 +1009,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/allclasses-frame.html b/devapidocs/allclasses-frame.html
index a0a3df0..dfad564 100644
--- a/devapidocs/allclasses-frame.html
+++ b/devapidocs/allclasses-frame.html
@@ -647,6 +647,7 @@
 <li><a href="org/apache/hadoop/hbase/client/ConnectionUtils.ShortCircuitingClusterConnection.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">ConnectionUtils.ShortCircuitingClusterConnection</a></li>
 <li><a href="org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client" target="classFrame">Consistency</a></li>
 <li><a href="org/apache/hadoop/hbase/rest/Constants.html" title="interface in org.apache.hadoop.hbase.rest" target="classFrame"><span class="interfaceName">Constants</span></a></li>
+<li><a href="org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">Constants</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/ConstantSizeRegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">ConstantSizeRegionSplitPolicy</a></li>
 <li><a href="org/apache/hadoop/hbase/constraint/Constraint.html" title="interface in org.apache.hadoop.hbase.constraint" target="classFrame"><span class="interfaceName">Constraint</span></a></li>
 <li><a href="org/apache/hadoop/hbase/constraint/ConstraintException.html" title="class in org.apache.hadoop.hbase.constraint" target="classFrame">ConstraintException</a></li>
@@ -1092,6 +1093,7 @@
 <li><a href="org/apache/hadoop/hbase/security/HBaseSaslRpcClient.html" title="class in org.apache.hadoop.hbase.security" target="classFrame">HBaseSaslRpcClient</a></li>
 <li><a href="org/apache/hadoop/hbase/security/HBaseSaslRpcServer.html" title="class in org.apache.hadoop.hbase.security" target="classFrame">HBaseSaslRpcServer</a></li>
 <li><a href="org/apache/hadoop/hbase/security/HBaseSaslRpcServer.SaslGssCallbackHandler.html" title="class in org.apache.hadoop.hbase.security" target="classFrame">HBaseSaslRpcServer.SaslGssCallbackHandler</a></li>
+<li><a href="org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">HBaseServiceHandler</a></li>
 <li><a href="org/apache/hadoop/hbase/snapshot/HBaseSnapshotException.html" title="class in org.apache.hadoop.hbase.snapshot" target="classFrame">HBaseSnapshotException</a></li>
 <li><a href="org/apache/hadoop/hbase/client/Hbck.html" title="interface in org.apache.hadoop.hbase.client" target="classFrame"><span class="interfaceName">Hbck</span></a></li>
 <li><a href="org/apache/hadoop/hbase/HColumnDescriptor.html" title="class in org.apache.hadoop.hbase" target="classFrame">HColumnDescriptor</a></li>
@@ -1260,6 +1262,7 @@
 <li><a href="org/apache/hadoop/hbase/client/ImmutableHTableDescriptor.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">ImmutableHTableDescriptor</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/ImmutableMemStoreLAB.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">ImmutableMemStoreLAB</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">ImmutableSegment</a></li>
+<li><a href="org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift" target="classFrame">ImplType</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/Import.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">Import</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/Import.CellImporter.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">Import.CellImporter</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/Import.CellReducer.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">Import.CellReducer</a></li>
@@ -2820,8 +2823,10 @@
 <li><a href="org/apache/hadoop/hbase/util/Threads.PrintThreadInfoHelper.html" title="interface in org.apache.hadoop.hbase.util" target="classFrame"><span class="interfaceName">Threads.PrintThreadInfoHelper</span></a></li>
 <li><a href="org/apache/hadoop/hbase/util/Threads.PrintThreadInfoLazyHolder.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">Threads.PrintThreadInfoLazyHolder</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">ThreadSafeMemStoreSizing</a></li>
+<li><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftHBaseServiceHandler</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2" target="classFrame">ThriftHBaseServiceHandler</a></li>
-<li><a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift2" target="classFrame">ThriftHBaseServiceHandler.THBaseServiceMetricsProxy</a></li>
+<li><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftHBaseServiceHandler.IOErrorWithCause</a></li>
+<li><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftHBaseServiceHandler.ResultScannerWrapper</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift2" target="classFrame">ThriftHBaseServiceHandler.TIOErrorWithCause</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftHttpServlet</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift/ThriftHttpServlet.HttpKerberosServerAction.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftHttpServlet.HttpKerberosServerAction</a></li>
@@ -2830,11 +2835,6 @@
 <li><a href="org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftMetrics.ThriftServerType</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftServer</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift2" target="classFrame">ThriftServer</a></li>
-<li><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftServerRunner</a></li>
-<li><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftServerRunner.HBaseHandler</a></li>
-<li><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftServerRunner.ImplType</a></li>
-<li><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftServerRunner.IOErrorWithCause</a></li>
-<li><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftServerRunner.ResultScannerWrapper</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift/ThriftUtilities.html" title="class in org.apache.hadoop.hbase.thrift" target="classFrame">ThriftUtilities</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift2/ThriftUtilities.html" title="class in org.apache.hadoop.hbase.thrift2" target="classFrame">ThriftUtilities</a></li>
 <li><a href="org/apache/hadoop/hbase/io/hadoopbackport/ThrottledInputStream.html" title="class in org.apache.hadoop.hbase.io.hadoopbackport" target="classFrame">ThrottledInputStream</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/devapidocs/allclasses-noframe.html b/devapidocs/allclasses-noframe.html
index 2dba490..26fb5e9 100644
--- a/devapidocs/allclasses-noframe.html
+++ b/devapidocs/allclasses-noframe.html
@@ -647,6 +647,7 @@
 <li><a href="org/apache/hadoop/hbase/client/ConnectionUtils.ShortCircuitingClusterConnection.html" title="class in org.apache.hadoop.hbase.client">ConnectionUtils.ShortCircuitingClusterConnection</a></li>
 <li><a href="org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client">Consistency</a></li>
 <li><a href="org/apache/hadoop/hbase/rest/Constants.html" title="interface in org.apache.hadoop.hbase.rest"><span class="interfaceName">Constants</span></a></li>
+<li><a href="org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift">Constants</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/ConstantSizeRegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">ConstantSizeRegionSplitPolicy</a></li>
 <li><a href="org/apache/hadoop/hbase/constraint/Constraint.html" title="interface in org.apache.hadoop.hbase.constraint"><span class="interfaceName">Constraint</span></a></li>
 <li><a href="org/apache/hadoop/hbase/constraint/ConstraintException.html" title="class in org.apache.hadoop.hbase.constraint">ConstraintException</a></li>
@@ -1092,6 +1093,7 @@
 <li><a href="org/apache/hadoop/hbase/security/HBaseSaslRpcClient.html" title="class in org.apache.hadoop.hbase.security">HBaseSaslRpcClient</a></li>
 <li><a href="org/apache/hadoop/hbase/security/HBaseSaslRpcServer.html" title="class in org.apache.hadoop.hbase.security">HBaseSaslRpcServer</a></li>
 <li><a href="org/apache/hadoop/hbase/security/HBaseSaslRpcServer.SaslGssCallbackHandler.html" title="class in org.apache.hadoop.hbase.security">HBaseSaslRpcServer.SaslGssCallbackHandler</a></li>
+<li><a href="org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></li>
 <li><a href="org/apache/hadoop/hbase/snapshot/HBaseSnapshotException.html" title="class in org.apache.hadoop.hbase.snapshot">HBaseSnapshotException</a></li>
 <li><a href="org/apache/hadoop/hbase/client/Hbck.html" title="interface in org.apache.hadoop.hbase.client"><span class="interfaceName">Hbck</span></a></li>
 <li><a href="org/apache/hadoop/hbase/HColumnDescriptor.html" title="class in org.apache.hadoop.hbase">HColumnDescriptor</a></li>
@@ -1260,6 +1262,7 @@
 <li><a href="org/apache/hadoop/hbase/client/ImmutableHTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">ImmutableHTableDescriptor</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/ImmutableMemStoreLAB.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableMemStoreLAB</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></li>
+<li><a href="org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/Import.html" title="class in org.apache.hadoop.hbase.mapreduce">Import</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/Import.CellImporter.html" title="class in org.apache.hadoop.hbase.mapreduce">Import.CellImporter</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/Import.CellReducer.html" title="class in org.apache.hadoop.hbase.mapreduce">Import.CellReducer</a></li>
@@ -2820,8 +2823,10 @@
 <li><a href="org/apache/hadoop/hbase/util/Threads.PrintThreadInfoHelper.html" title="interface in org.apache.hadoop.hbase.util"><span class="interfaceName">Threads.PrintThreadInfoHelper</span></a></li>
 <li><a href="org/apache/hadoop/hbase/util/Threads.PrintThreadInfoLazyHolder.html" title="class in org.apache.hadoop.hbase.util">Threads.PrintThreadInfoLazyHolder</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html" title="class in org.apache.hadoop.hbase.regionserver">ThreadSafeMemStoreSizing</a></li>
+<li><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler</a></li>
-<li><a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler.THBaseServiceMetricsProxy</a></li>
+<li><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.IOErrorWithCause</a></li>
+<li><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.ResultScannerWrapper</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler.TIOErrorWithCause</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHttpServlet</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift/ThriftHttpServlet.HttpKerberosServerAction.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHttpServlet.HttpKerberosServerAction</a></li>
@@ -2830,11 +2835,6 @@
 <li><a href="org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftMetrics.ThriftServerType</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftServer</a></li>
-<li><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner</a></li>
-<li><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></li>
-<li><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a></li>
-<li><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.IOErrorWithCause</a></li>
-<li><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ResultScannerWrapper</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift/ThriftUtilities.html" title="class in org.apache.hadoop.hbase.thrift">ThriftUtilities</a></li>
 <li><a href="org/apache/hadoop/hbase/thrift2/ThriftUtilities.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftUtilities</a></li>
 <li><a href="org/apache/hadoop/hbase/io/hadoopbackport/ThrottledInputStream.html" title="class in org.apache.hadoop.hbase.io.hadoopbackport">ThrottledInputStream</a></li>


[25/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html
index c4e8c8b..aa58108 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html
@@ -82,602 +82,613 @@
 <span class="sourceLineNo">074</span>  public static final String USER_COPROCESSORS_ENABLED_CONF_KEY =<a name="line.74"></a>
 <span class="sourceLineNo">075</span>    "hbase.coprocessor.user.enabled";<a name="line.75"></a>
 <span class="sourceLineNo">076</span>  public static final boolean DEFAULT_USER_COPROCESSORS_ENABLED = true;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  private static final Logger LOG = LoggerFactory.getLogger(CoprocessorHost.class);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  protected Abortable abortable;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  /** Ordered set of loaded coprocessors with lock */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  protected final SortedList&lt;E&gt; coprocEnvironments =<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      new SortedList&lt;&gt;(new EnvironmentPriorityComparator());<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  protected Configuration conf;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  // unique file prefix to use for local copies of jars when classloading<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  protected String pathPrefix;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  protected AtomicInteger loadSequence = new AtomicInteger();<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>  public CoprocessorHost(Abortable abortable) {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    this.abortable = abortable;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    this.pathPrefix = UUID.randomUUID().toString();<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>   * Not to be confused with the per-object _coprocessors_ (above),<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   * coprocessorNames is static and stores the set of all coprocessors ever<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * loaded by any thread in this JVM. It is strictly additive: coprocessors are<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * added to coprocessorNames, by checkAndLoadInstance() but are never removed, since<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   * the intention is to preserve a history of all loaded coprocessors for<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * diagnosis in case of server crash (HBASE-4014).<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  private static Set&lt;String&gt; coprocessorNames =<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      Collections.synchronizedSet(new HashSet&lt;String&gt;());<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  public static Set&lt;String&gt; getLoadedCoprocessors() {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    synchronized (coprocessorNames) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      return new HashSet(coprocessorNames);<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>  /**<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * Used to create a parameter to the HServerLoad constructor so that<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * HServerLoad can provide information about the coprocessors loaded by this<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * regionserver.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * (HBASE-4070: Improve region server metrics to report loaded coprocessors<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * to master).<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   */<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  public Set&lt;String&gt; getCoprocessors() {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    Set&lt;String&gt; returnValue = new TreeSet&lt;&gt;();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    for (E e: coprocEnvironments) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      returnValue.add(e.getInstance().getClass().getSimpleName());<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    return returnValue;<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>   * Load system coprocessors once only. Read the class names from configuration.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * Called by constructor.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   */<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  protected void loadSystemCoprocessors(Configuration conf, String confKey) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    if (!coprocessorsEnabled) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      return;<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>    Class&lt;?&gt; implClass;<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>    // load default coprocessors from configure file<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    String[] defaultCPClasses = conf.getStrings(confKey);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    if (defaultCPClasses == null || defaultCPClasses.length == 0)<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      return;<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    int priority = Coprocessor.PRIORITY_SYSTEM;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    for (String className : defaultCPClasses) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      className = className.trim();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      if (findCoprocessor(className) != null) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        // If already loaded will just continue<a name="line.147"></a>
-<span class="sourceLineNo">148</span>        LOG.warn("Attempted duplicate loading of " + className + "; skipped");<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        continue;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      }<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      ClassLoader cl = this.getClass().getClassLoader();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      Thread.currentThread().setContextClassLoader(cl);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      try {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>        implClass = cl.loadClass(className);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        // Add coprocessors as we go to guard against case where a coprocessor is specified twice<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        // in the configuration<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        if (env != null) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>          this.coprocEnvironments.add(env);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          LOG.info("System coprocessor {} loaded, priority={}.", className, priority);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>          ++priority;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        }<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      } catch (Throwable t) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        // We always abort if system coprocessors cannot be loaded<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        abortServer(className, t);<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><a name="line.169"></a>
-<span class="sourceLineNo">170</span>  /**<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * Load a coprocessor implementation into the host<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * @param path path to implementation jar<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * @param className the main class name<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * @param priority chaining priority<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * @param conf configuration for coprocessor<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   * @throws java.io.IOException Exception<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  public E load(Path path, String className, int priority,<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      Configuration conf) throws IOException {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    String[] includedClassPrefixes = null;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    if (conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY) != null){<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      String prefixes = conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      includedClassPrefixes = prefixes.split(";");<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    }<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    return load(path, className, priority, conf, includedClassPrefixes);<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>   * Load a coprocessor implementation into the host<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * @param path path to implementation jar<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param className the main class name<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * @param priority chaining priority<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * @param conf configuration for coprocessor<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * @param includedClassPrefixes class name prefixes to include<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * @throws java.io.IOException Exception<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  public E load(Path path, String className, int priority,<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      Configuration conf, String[] includedClassPrefixes) throws IOException {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    Class&lt;?&gt; implClass;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    LOG.debug("Loading coprocessor class " + className + " with path " +<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        path + " and priority " + priority);<a name="line.201"></a>
-<span class="sourceLineNo">202</span><a name="line.202"></a>
-<span class="sourceLineNo">203</span>    ClassLoader cl = null;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    if (path == null) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      try {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>        implClass = getClass().getClassLoader().loadClass(className);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      } catch (ClassNotFoundException e) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>        throw new IOException("No jar path specified for " + className);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      }<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    } else {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      cl = CoprocessorClassLoader.getClassLoader(<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        path, getClass().getClassLoader(), pathPrefix, conf);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      try {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        implClass = ((CoprocessorClassLoader)cl).loadClass(className, includedClassPrefixes);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      } catch (ClassNotFoundException e) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>        throw new IOException("Cannot load external coprocessor class " + className, e);<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><a name="line.219"></a>
-<span class="sourceLineNo">220</span>    //load custom code for coprocessor<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    Thread currentThread = Thread.currentThread();<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    try{<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      // switch temporarily to the thread classloader for custom CP<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      currentThread.setContextClassLoader(cl);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      E cpInstance = checkAndLoadInstance(implClass, priority, conf);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return cpInstance;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    } finally {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      // restore the fresh (host) classloader<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      currentThread.setContextClassLoader(hostClassLoader);<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>  @VisibleForTesting<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public void load(Class&lt;? extends C&gt; implClass, int priority, Configuration conf)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      throws IOException {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    coprocEnvironments.add(env);<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>   * @param implClass Implementation class<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * @param priority priority<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   * @param conf configuration<a name="line.244"></a>
-<span class="sourceLineNo">245</span>   * @throws java.io.IOException Exception<a name="line.245"></a>
-<span class="sourceLineNo">246</span>   */<a name="line.246"></a>
-<span class="sourceLineNo">247</span>  public E checkAndLoadInstance(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      throws IOException {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    // create the instance<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    C impl;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    try {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      impl = checkAndGetInstance(implClass);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      if (impl == null) {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        LOG.error("Cannot load coprocessor " + implClass.getSimpleName());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        return null;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      }<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    } catch (InstantiationException|IllegalAccessException e) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      throw new IOException(e);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    // create the environment<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    E env = createEnvironment(impl, priority, loadSequence.incrementAndGet(), conf);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    assert env instanceof BaseEnvironment;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    ((BaseEnvironment&lt;C&gt;) env).startup();<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    // HBASE-4014: maintain list of loaded coprocessors for later crash analysis<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    // if server (master or regionserver) aborts.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    coprocessorNames.add(implClass.getName());<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    return env;<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>  /**<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * Called when a new Coprocessor class is loaded<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   */<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  public abstract E createEnvironment(C instance, int priority, int sequence, Configuration conf);<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>   * Called when a new Coprocessor class needs to be loaded. Checks if type of the given class<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   * is what the corresponding host implementation expects. If it is of correct type, returns an<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   * instance of the coprocessor to be loaded. If not, returns null.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   * If an exception occurs when trying to create instance of a coprocessor, it's passed up and<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * eventually results into server aborting.<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   */<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  public abstract C checkAndGetInstance(Class&lt;?&gt; implClass)<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      throws InstantiationException, IllegalAccessException;<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>  public void shutdown(E e) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    assert e instanceof BaseEnvironment;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    if (LOG.isDebugEnabled()) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      LOG.debug("Stop coprocessor " + e.getInstance().getClass().getName());<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    }<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    ((BaseEnvironment&lt;C&gt;) e).shutdown();<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>   * Find coprocessors by full class name or simple name.<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   */<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  public C findCoprocessor(String className) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    for (E env: coprocEnvironments) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        return env.getInstance();<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>    return null;<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>  @VisibleForTesting<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  public &lt;T extends C&gt; T findCoprocessor(Class&lt;T&gt; cls) {<a name="line.307"></a>
+<span class="sourceLineNo">077</span>  public static final String SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR =<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      "hbase.skip.load.duplicate.table.coprocessor";<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  public static final boolean DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR = false;<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private static final Logger LOG = LoggerFactory.getLogger(CoprocessorHost.class);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  protected Abortable abortable;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  /** Ordered set of loaded coprocessors with lock */<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  protected final SortedList&lt;E&gt; coprocEnvironments =<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      new SortedList&lt;&gt;(new EnvironmentPriorityComparator());<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  protected Configuration conf;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  // unique file prefix to use for local copies of jars when classloading<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  protected String pathPrefix;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  protected AtomicInteger loadSequence = new AtomicInteger();<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public CoprocessorHost(Abortable abortable) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    this.abortable = abortable;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    this.pathPrefix = UUID.randomUUID().toString();<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>   * Not to be confused with the per-object _coprocessors_ (above),<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   * coprocessorNames is static and stores the set of all coprocessors ever<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   * loaded by any thread in this JVM. It is strictly additive: coprocessors are<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * added to coprocessorNames, by checkAndLoadInstance() but are never removed, since<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * the intention is to preserve a history of all loaded coprocessors for<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * diagnosis in case of server crash (HBASE-4014).<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   */<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  private static Set&lt;String&gt; coprocessorNames =<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      Collections.synchronizedSet(new HashSet&lt;String&gt;());<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  public static Set&lt;String&gt; getLoadedCoprocessors() {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    synchronized (coprocessorNames) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      return new HashSet(coprocessorNames);<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>  /**<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * Used to create a parameter to the HServerLoad constructor so that<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   * HServerLoad can provide information about the coprocessors loaded by this<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   * regionserver.<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   * (HBASE-4070: Improve region server metrics to report loaded coprocessors<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   * to master).<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   */<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  public Set&lt;String&gt; getCoprocessors() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    Set&lt;String&gt; returnValue = new TreeSet&lt;&gt;();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    for (E e: coprocEnvironments) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      returnValue.add(e.getInstance().getClass().getSimpleName());<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    return returnValue;<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>   * Load system coprocessors once only. Read the class names from configuration.<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * Called by constructor.<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  protected void loadSystemCoprocessors(Configuration conf, String confKey) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    if (!coprocessorsEnabled) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      return;<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>    Class&lt;?&gt; implClass;<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>    // load default coprocessors from configure file<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    String[] defaultCPClasses = conf.getStrings(confKey);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    if (defaultCPClasses == null || defaultCPClasses.length == 0)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      return;<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    int priority = Coprocessor.PRIORITY_SYSTEM;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    for (String className : defaultCPClasses) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      className = className.trim();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      if (findCoprocessor(className) != null) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        // If already loaded will just continue<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        LOG.warn("Attempted duplicate loading of " + className + "; skipped");<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        continue;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      }<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      ClassLoader cl = this.getClass().getClassLoader();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      Thread.currentThread().setContextClassLoader(cl);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      try {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>        implClass = cl.loadClass(className);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        // Add coprocessors as we go to guard against case where a coprocessor is specified twice<a name="line.158"></a>
+<span class="sourceLineNo">159</span>        // in the configuration<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        if (env != null) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>          this.coprocEnvironments.add(env);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>          LOG.info("System coprocessor {} loaded, priority={}.", className, priority);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>          ++priority;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      } catch (Throwable t) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        // We always abort if system coprocessors cannot be loaded<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        abortServer(className, t);<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>  }<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>   * Load a coprocessor implementation into the host<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * @param path path to implementation jar<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * @param className the main class name<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   * @param priority chaining priority<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   * @param conf configuration for coprocessor<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   * @throws java.io.IOException Exception<a name="line.179"></a>
+<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  public E load(Path path, String className, int priority,<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      Configuration conf) throws IOException {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    String[] includedClassPrefixes = null;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    if (conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY) != null){<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      String prefixes = conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      includedClassPrefixes = prefixes.split(";");<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return load(path, className, priority, conf, includedClassPrefixes);<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>  /**<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * Load a coprocessor implementation into the host<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * @param path path to implementation jar<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * @param className the main class name<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * @param priority chaining priority<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * @param conf configuration for coprocessor<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * @param includedClassPrefixes class name prefixes to include<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * @throws java.io.IOException Exception<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   */<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  public E load(Path path, String className, int priority,<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      Configuration conf, String[] includedClassPrefixes) throws IOException {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    Class&lt;?&gt; implClass;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    LOG.debug("Loading coprocessor class " + className + " with path " +<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        path + " and priority " + priority);<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>    boolean skipLoadDuplicateCoprocessor = conf.getBoolean(SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR,<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    if (skipLoadDuplicateCoprocessor &amp;&amp; findCoprocessor(className) != null) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      // If already loaded will just continue<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      LOG.warn("Attempted duplicate loading of {}; skipped", className);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      return null;<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>    ClassLoader cl = null;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    if (path == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      try {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        implClass = getClass().getClassLoader().loadClass(className);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      } catch (ClassNotFoundException e) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        throw new IOException("No jar path specified for " + className);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      }<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    } else {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      cl = CoprocessorClassLoader.getClassLoader(<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        path, getClass().getClassLoader(), pathPrefix, conf);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      try {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        implClass = ((CoprocessorClassLoader)cl).loadClass(className, includedClassPrefixes);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      } catch (ClassNotFoundException e) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        throw new IOException("Cannot load external coprocessor class " + className, e);<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>    //load custom code for coprocessor<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    Thread currentThread = Thread.currentThread();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    try{<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      // switch temporarily to the thread classloader for custom CP<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      currentThread.setContextClassLoader(cl);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      E cpInstance = checkAndLoadInstance(implClass, priority, conf);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      return cpInstance;<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    } finally {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      // restore the fresh (host) classloader<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      currentThread.setContextClassLoader(hostClassLoader);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    }<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>  @VisibleForTesting<a name="line.245"></a>
+<span class="sourceLineNo">246</span>  public void load(Class&lt;? extends C&gt; implClass, int priority, Configuration conf)<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      throws IOException {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    coprocEnvironments.add(env);<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>  /**<a name="line.252"></a>
+<span class="sourceLineNo">253</span>   * @param implClass Implementation class<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * @param priority priority<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * @param conf configuration<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   * @throws java.io.IOException Exception<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   */<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  public E checkAndLoadInstance(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      throws IOException {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    // create the instance<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    C impl;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    try {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      impl = checkAndGetInstance(implClass);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      if (impl == null) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        LOG.error("Cannot load coprocessor " + implClass.getSimpleName());<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        return null;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    } catch (InstantiationException|IllegalAccessException e) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      throw new IOException(e);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    }<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    // create the environment<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    E env = createEnvironment(impl, priority, loadSequence.incrementAndGet(), conf);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    assert env instanceof BaseEnvironment;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    ((BaseEnvironment&lt;C&gt;) env).startup();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    // HBASE-4014: maintain list of loaded coprocessors for later crash analysis<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // if server (master or regionserver) aborts.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    coprocessorNames.add(implClass.getName());<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    return env;<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>   * Called when a new Coprocessor class is loaded<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   */<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  public abstract E createEnvironment(C instance, int priority, int sequence, Configuration conf);<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>   * Called when a new Coprocessor class needs to be loaded. Checks if type of the given class<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * is what the corresponding host implementation expects. If it is of correct type, returns an<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * instance of the coprocessor to be loaded. If not, returns null.<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * If an exception occurs when trying to create instance of a coprocessor, it's passed up and<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * eventually results into server aborting.<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   */<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  public abstract C checkAndGetInstance(Class&lt;?&gt; implClass)<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      throws InstantiationException, IllegalAccessException;<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  public void shutdown(E e) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    assert e instanceof BaseEnvironment;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    if (LOG.isDebugEnabled()) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      LOG.debug("Stop coprocessor " + e.getInstance().getClass().getName());<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    }<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    ((BaseEnvironment&lt;C&gt;) e).shutdown();<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>  /**<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * Find coprocessors by full class name or simple name.<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   */<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  public C findCoprocessor(String className) {<a name="line.307"></a>
 <span class="sourceLineNo">308</span>    for (E env: coprocEnvironments) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      if (cls.isAssignableFrom(env.getInstance().getClass())) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        return (T) env.getInstance();<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>    return null;<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>   * Find list of coprocessors that extend/implement the given class/interface<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @param cls the class/interface to look for<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * @return the list of coprocessors, or null if not found<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public &lt;T extends C&gt; List&lt;T&gt; findCoprocessors(Class&lt;T&gt; cls) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    ArrayList&lt;T&gt; ret = new ArrayList&lt;&gt;();<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    for (E env: coprocEnvironments) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      C cp = env.getInstance();<a name="line.325"></a>
+<span class="sourceLineNo">309</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.309"></a>
+<span class="sourceLineNo">310</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        return env.getInstance();<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>    return null;<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>  @VisibleForTesting<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public &lt;T extends C&gt; T findCoprocessor(Class&lt;T&gt; cls) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    for (E env: coprocEnvironments) {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      if (cls.isAssignableFrom(env.getInstance().getClass())) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        return (T) env.getInstance();<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>    return null;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
 <span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>      if(cp != null) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        if (cls.isAssignableFrom(cp.getClass())) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          ret.add((T)cp);<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>    }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    return ret;<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>  /**<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * Find a coprocessor environment by class name<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   * @param className the class name<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   * @return the coprocessor, or null if not found<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   */<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  @VisibleForTesting<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public E findCoprocessorEnvironment(String className) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    for (E env: coprocEnvironments) {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.344"></a>
-<span class="sourceLineNo">345</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        return env;<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>    return null;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  }<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>   * Retrieves the set of classloaders used to instantiate Coprocessor classes defined in external<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * jar files.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * @return A set of ClassLoader instances<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  Set&lt;ClassLoader&gt; getExternalClassLoaders() {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    Set&lt;ClassLoader&gt; externalClassLoaders = new HashSet&lt;&gt;();<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    final ClassLoader systemClassLoader = this.getClass().getClassLoader();<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    for (E env : coprocEnvironments) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      ClassLoader cl = env.getInstance().getClass().getClassLoader();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      if (cl != systemClassLoader){<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        //do not include system classloader<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        externalClassLoaders.add(cl);<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>    return externalClassLoaders;<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>   * Environment priority comparator.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * Coprocessors are chained in sorted order.<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   */<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  static class EnvironmentPriorityComparator implements Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    @Override<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        final CoprocessorEnvironment env2) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>        return -1;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>        return 1;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      }<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        return -1;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        return 1;<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      return 0;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    }<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>  protected void abortServer(final E environment, final Throwable e) {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    abortServer(environment.getInstance().getClass().getName(), e);<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>  protected void abortServer(final String coprocessorName, final Throwable e) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    String message = "The coprocessor " + coprocessorName + " threw " + e.toString();<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    LOG.error(message, e);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    if (abortable != null) {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      abortable.abort(message, e);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    } else {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      LOG.warn("No available Abortable, process was not aborted");<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>  /**<a name="line.406"></a>
-<span class="sourceLineNo">407</span>   * This is used by coprocessor hooks which are declared to throw IOException<a name="line.407"></a>
-<span class="sourceLineNo">408</span>   * (or its subtypes). For such hooks, we should handle throwable objects<a name="line.408"></a>
-<span class="sourceLineNo">409</span>   * depending on the Throwable's type. Those which are instances of<a name="line.409"></a>
-<span class="sourceLineNo">410</span>   * IOException should be passed on to the client. This is in conformance with<a name="line.410"></a>
-<span class="sourceLineNo">411</span>   * the HBase idiom regarding IOException: that it represents a circumstance<a name="line.411"></a>
-<span class="sourceLineNo">412</span>   * that should be passed along to the client for its own handling. For<a name="line.412"></a>
-<span class="sourceLineNo">413</span>   * example, a coprocessor that implements access controls would throw a<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * subclass of IOException, such as AccessDeniedException, in its preGet()<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * method to prevent an unauthorized client's performing a Get on a particular<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * table.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param env Coprocessor Environment<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param e Throwable object thrown by coprocessor.<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * @exception IOException Exception<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   */<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  // Note to devs: Class comments of all observers ({@link MasterObserver}, {@link WALObserver},<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  // etc) mention this nuance of our exception handling so that coprocessor can throw appropriate<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  // exceptions depending on situation. If any changes are made to this logic, make sure to<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  // update all classes' comments.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  protected void handleCoprocessorThrowable(final E env, final Throwable e) throws IOException {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    if (e instanceof IOException) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      throw (IOException)e;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    // If we got here, e is not an IOException. A loaded coprocessor has a<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    // fatal bug, and the server (master or regionserver) should remove the<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    // faulty coprocessor from its set of active coprocessors. Setting<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    // 'hbase.coprocessor.abortonerror' to true will cause abortServer(),<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    // which may be useful in development and testing environments where<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    // 'failing fast' for error analysis is desired.<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if (env.getConfiguration().getBoolean(ABORT_ON_ERROR_KEY, DEFAULT_ABORT_ON_ERROR)) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      // server is configured to abort.<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      abortServer(env, e);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    } else {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      // If available, pull a table name out of the environment<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      if(env instanceof RegionCoprocessorEnvironment) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        String tableName = ((RegionCoprocessorEnvironment)env).getRegionInfo().getTable().getNameAsString();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from table '"+ tableName + "'", e);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      } else {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from " +<a name="line.444"></a>
-<span class="sourceLineNo">445</span>                "environment",e);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>      coprocEnvironments.remove(env);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      try {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>        shutdown(env);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      } catch (Exception x) {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>        LOG.error("Uncaught exception when shutting down coprocessor '"<a name="line.452"></a>
-<span class="sourceLineNo">453</span>            + env.toString() + "'", x);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      throw new DoNotRetryIOException("Coprocessor: '" + env.toString() +<a name="line.455"></a>
-<span class="sourceLineNo">456</span>          "' threw: '" + e + "' and has been removed from the active " +<a name="line.456"></a>
-<span class="sourceLineNo">457</span>          "coprocessor set.", e);<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><a name="line.460"></a>
-<span class="sourceLineNo">461</span>  /**<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * Used to limit legacy handling to once per Coprocessor class per classloader.<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   */<a name="line.463"></a>
-<span class="sourceLineNo">464</span>  private static final Set&lt;Class&lt;? extends Coprocessor&gt;&gt; legacyWarning =<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      new ConcurrentSkipListSet&lt;&gt;(<a name="line.465"></a>
-<span class="sourceLineNo">466</span>          new Comparator&lt;Class&lt;? extends Coprocessor&gt;&gt;() {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>            @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>            public int compare(Class&lt;? extends Coprocessor&gt; c1, Class&lt;? extends Coprocessor&gt; c2) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>              if (c1.equals(c2)) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>                return 0;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>              }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>              return c1.getName().compareTo(c2.getName());<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><a name="line.475"></a>
-<span class="sourceLineNo">476</span>  /**<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * Implementations defined function to get an observer of type {@code O} from a coprocessor of<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * type {@code C}. Concrete implementations of CoprocessorHost define one getter for each<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * observer they can handle. For e.g. RegionCoprocessorHost will use 3 getters, one for<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * each of RegionObserver, EndpointObserver and BulkLoadObserver.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * These getters are used by {@code ObserverOperation} to get appropriate observer from the<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * coprocessor.<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   */<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  @FunctionalInterface<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  public interface ObserverGetter&lt;C, O&gt; extends Function&lt;C, Optional&lt;O&gt;&gt; {}<a name="line.485"></a>
+<span class="sourceLineNo">327</span>  /**<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * Find list of coprocessors that extend/implement the given class/interface<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @param cls the class/interface to look for<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   * @return the list of coprocessors, or null if not found<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public &lt;T extends C&gt; List&lt;T&gt; findCoprocessors(Class&lt;T&gt; cls) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    ArrayList&lt;T&gt; ret = new ArrayList&lt;&gt;();<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>    for (E env: coprocEnvironments) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      C cp = env.getInstance();<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>      if(cp != null) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>        if (cls.isAssignableFrom(cp.getClass())) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>          ret.add((T)cp);<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>    return ret;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  }<a name="line.345"></a>
+<span class="sourceLineNo">346</span><a name="line.346"></a>
+<span class="sourceLineNo">347</span>  /**<a name="line.347"></a>
+<span class="sourceLineNo">348</span>   * Find a coprocessor environment by class name<a name="line.348"></a>
+<span class="sourceLineNo">349</span>   * @param className the class name<a name="line.349"></a>
+<span class="sourceLineNo">350</span>   * @return the coprocessor, or null if not found<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   */<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  @VisibleForTesting<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  public E findCoprocessorEnvironment(String className) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    for (E env: coprocEnvironments) {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        return env;<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>    return null;<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>  /**<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   * Retrieves the set of classloaders used to instantiate Coprocessor classes defined in external<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   * jar files.<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   * @return A set of ClassLoader instances<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  Set&lt;ClassLoader&gt; getExternalClassLoaders() {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    Set&lt;ClassLoader&gt; externalClassLoaders = new HashSet&lt;&gt;();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    final ClassLoader systemClassLoader = this.getClass().getClassLoader();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    for (E env : coprocEnvironments) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      ClassLoader cl = env.getInstance().getClass().getClassLoader();<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      if (cl != systemClassLoader){<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        //do not include system classloader<a name="line.374"></a>
+<span class="sourceLineNo">375</span>        externalClassLoaders.add(cl);<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>    return externalClassLoaders;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  }<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>   * Environment priority comparator.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   * Coprocessors are chained in sorted order.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>   */<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  static class EnvironmentPriorityComparator implements Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    @Override<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        final CoprocessorEnvironment env2) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        return -1;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<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>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        return -1;<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        return 1;<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      }<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      return 0;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  protected void abortServer(final E environment, final Throwable e) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    abortServer(environment.getInstance().getClass().getName(), 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>  protected void abortServer(final String coprocessorName, final Throwable e) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    String message = "The coprocessor " + coprocessorName + " threw " + e.toString();<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    LOG.error(message, e);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    if (abortable != null) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      abortable.abort(message, e);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    } else {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      LOG.warn("No available Abortable, process was not aborted");<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>  /**<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   * This is used by coprocessor hooks which are declared to throw IOException<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * (or its subtypes). For such hooks, we should handle throwable objects<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   * depending on the Throwable's type. Those which are instances of<a name="line.420"></a>
+<span class="sourceLineNo">421</span>   * IOException should be passed on to the client. This is in conformance with<a name="line.421"></a>
+<span class="sourceLineNo">422</span>   * the HBase idiom regarding IOException: that it represents a circumstance<a name="line.422"></a>
+<span class="sourceLineNo">423</span>   * that should be passed along to the client for its own handling. For<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   * example, a coprocessor that implements access controls would throw a<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   * subclass of IOException, such as AccessDeniedException, in its preGet()<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * method to prevent an unauthorized client's performing a Get on a particular<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * table.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * @param env Coprocessor Environment<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * @param e Throwable object thrown by coprocessor.<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * @exception IOException Exception<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   */<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  // Note to devs: Class comments of all observers ({@link MasterObserver}, {@link WALObserver},<a name="line.432"></a>
+<span class="sourceLineNo">433</span>  // etc) mention this nuance of our exception handling so that coprocessor can throw appropriate<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  // exceptions depending on situation. If any changes are made to this logic, make sure to<a name="line.434"></a>
+<span class="sourceLineNo">435</span>  // update all classes' comments.<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  protected void handleCoprocessorThrowable(final E env, final Throwable e) throws IOException {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    if (e instanceof IOException) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      throw (IOException)e;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    // If we got here, e is not an IOException. A loaded coprocessor has a<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    // fatal bug, and the server (master or regionserver) should remove the<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    // faulty coprocessor from its set of active coprocessors. Setting<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    // 'hbase.coprocessor.abortonerror' to true will cause abortServer(),<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    // which may be useful in development and testing environments where<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    // 'failing fast' for error analysis is desired.<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    if (env.getConfiguration().getBoolean(ABORT_ON_ERROR_KEY, DEFAULT_ABORT_ON_ERROR)) {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      // server is configured to abort.<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      abortServer(env, e);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } else {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      // If available, pull a table name out of the environment<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      if(env instanceof RegionCoprocessorEnvironment) {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>        String tableName = ((RegionCoprocessorEnvironment)env).getRegionInfo().getTable().getNameAsString();<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from table '"+ tableName + "'", e);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      } else {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from " +<a name="line.455"></a>
+<span class="sourceLineNo">456</span>                "environment",e);<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>      coprocEnvironments.remove(env);<a name="line.459"></a>
+<span class="sourceLineNo">460</span>      try {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>        shutdown(env);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      } catch (Exception x) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        LOG.error("Uncaught exception when shutting down coprocessor '"<a name="line.463"></a>
+<span class="sourceLineNo">464</span>            + env.toString() + "'", x);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      throw new DoNotRetryIOException("Coprocessor: '" + env.toString() +<a name="line.466"></a>
+<span class="sourceLineNo">467</span>          "' threw: '" + e + "' and has been removed from the active " +<a name="line.467"></a>
+<span class="sourceLineNo">468</span>          "coprocessor set.", e);<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><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * Used to limit legacy handling to once per Coprocessor class per classloader.<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   */<a name="line.474"></a>
+<span class="sourceLineNo">475</span>  private static final Set&lt;Class&lt;? extends Coprocessor&gt;&gt; legacyWarning =<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      new ConcurrentSkipListSet&lt;&gt;(<a name="line.476"></a>
+<span class="sourceLineNo">477</span>          new Comparator&lt;Class&lt;? extends Coprocessor&gt;&gt;() {<a name="line.477"></a>
+<span class="sourceLineNo">478</span>            @Override<a name="line.478"></a>
+<span class="sourceLineNo">479</span>            public int compare(Class&lt;? extends Coprocessor&gt; c1, Class&lt;? extends Coprocessor&gt; c2) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>              if (c1.equals(c2)) {<a name="line.480"></a>
+<span class="sourceLineNo">481</span>                return 0;<a name="line.481"></a>
+<span class="sourceLineNo">482</span>              }<a name="line.482"></a>
+<span class="sourceLineNo">483</span>              return c1.getName().compareTo(c2.getName());<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>  private abstract class ObserverOperation&lt;O&gt; extends ObserverContextImpl&lt;E&gt; {<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    ObserverGetter&lt;C, O&gt; observerGetter;<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      this(observerGetter, null);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter, User user) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      this(observerGetter, user, false);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
+<span class="sourceLineNo">487</span>  /**<a name="line.487"></a>
+<span class="sourceLineNo">488</span>   * Implementations defined function to get an observer of type {@code O} from a coprocessor of<a name="line.488"></a>
+<span class="sourceLineNo">489</span>   * type {@code C}. Concrete implementations of CoprocessorHost define one getter for each<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   * observer they can handle. For e.g. RegionCoprocessorHost will use 3 getters, one for<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   * each of RegionObserver, EndpointObserver and BulkLoadObserver.<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   * These getters are used by {@code ObserverOperation} to get appropriate observer from the<a name="line.492"></a>
+<span class="sourceLineNo">493</span>   * coprocessor.<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   */<a name="line.494"></a>
+<span class="sourceLineNo">495</span>  @FunctionalInterface<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  public interface ObserverGetter&lt;C, O&gt; extends Function&lt;C, Optional&lt;O&gt;&gt; {}<a name="line.496"></a>
 <span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter, boolean bypassable) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      this(observerGetter, null, bypassable);<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>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter, User user, boolean bypassable) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      super(user != null? user: RpcServer.getRequestUser().orElse(null), bypassable);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      this.observerGetter = observerGetter;<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>    abstract void callObserver() throws IOException;<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    protected void postEnvCall() {}<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  // Can't derive ObserverOperation from ObserverOperationWithResult (R = Void) because then all<a name="line.511"></a>
-<span class="sourceLineNo">512</span>  // ObserverCaller implementations will have to have a return statement.<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  // O = observer, E = environment, C = coprocessor, R=result type<a name="line.513"></a>
-<span class="sourceLineNo">514</span>  public abstract class ObserverOperationWithoutResult&lt;O&gt; extends ObserverOperation&lt;O&gt; {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    protected abstract void call(O observer) throws IOException;<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>    public ObserverOperationWithoutResult(ObserverGetter&lt;C, O&gt; observerGetter) {<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      super(observerGetter);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    }<a name="line.519"></a>
-<span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span>    public ObserverOperationWithoutResult(ObserverGetter&lt;C, O&gt; observerGetter, User user) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      super(observerGetter, user);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>    public ObserverOperationWithoutResult(ObserverGetter&lt;C, O&gt; observerGetter, User user,<a name="line.525"></a>
-<span class="sourceLineNo">526</span>        boolean bypassable) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      super(observerGetter, user, bypassable);<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>    /**<a name="line.530"></a>
-<span class="sourceLineNo">531</span>     * In case of coprocessors which have many kinds of observers (for eg, {@link RegionCoprocessor}<a name="line.531"></a>
-<span class="sourceLineNo">532</span>     * has BulkLoadObserver, RegionObserver, etc), some implementations may not need all<a name="line.532"></a>
-<span class="sourceLineNo">533</span>     * observers, in which case they will return null for that observer's getter.<a name="line.533"></a>
-<span class="sourceLineNo">534</span>     * We simply ignore such cases.<a name="line.534"></a>
-<span class="sourceLineNo">535</span>     */<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    @Override<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    void callObserver() throws IOException {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      Optional&lt;O&gt; observer = observerGetter.apply(getEnvironment().getInstance());<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      if (observer.isPresent()) {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        call(observer.get());<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      }<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    }<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>  public abstract class ObserverOperationWithResult&lt;O, R&gt; extends ObserverOperation&lt;O&gt; {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    protected abstract R call(O observer) throws IOException;<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<sp

<TRUNCATED>

[46/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 8befc15..de1e950 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -169,8 +169,8 @@
 <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/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/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/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html b/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html
index 184a97c..e8886e1 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html
@@ -10829,7 +10829,7 @@ service.</div>
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.HBaseHandler.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getTableName-java.nio.ByteBuffer-">getTableName</a></span>(<a href="https://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)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">ThriftHBaseServiceHandler.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getTableName-java.nio.ByteBuffer-">getTableName</a></span>(<a href="https://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)</code>&nbsp;</td>
 </tr>
 </tbody>
 </table>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/client/class-use/Admin.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/Admin.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/Admin.html
index 50d2715..87f7b02 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/Admin.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/Admin.html
@@ -545,8 +545,8 @@ service.</div>
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.HBaseHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getAdmin--">getAdmin</a></span>()</code>
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a></code></td>
+<td class="colLast"><span class="typeNameLabel">HBaseServiceHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#getAdmin--">getAdmin</a></span>()</code>
 <div class="block">Obtain HBaseAdmin.</div>
 </td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/client/class-use/OperationWithAttributes.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/OperationWithAttributes.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/OperationWithAttributes.html
index 5047938..04908b0 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/OperationWithAttributes.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/OperationWithAttributes.html
@@ -240,7 +240,7 @@ service.</div>
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>private static void</code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#addAttributes-org.apache.hadoop.hbase.client.OperationWithAttributes-java.util.Map-">addAttributes</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/OperationWithAttributes.html" title="class in org.apache.hadoop.hbase.client">OperationWithAttributes</a>&nbsp;op,
+<td class="colLast"><span class="typeNameLabel">ThriftHBaseServiceHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#addAttributes-org.apache.hadoop.hbase.client.OperationWithAttributes-java.util.Map-">addAttributes</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/OperationWithAttributes.html" title="class in org.apache.hadoop.hbase.client">OperationWithAttributes</a>&nbsp;op,
              <a href="https://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="https://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="https://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)</code>
 <div class="block">Adds all the attributes into the Operation object</div>
 </td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/client/class-use/Result.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/Result.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/Result.html
index 00537ab..79246af 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/Result.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/Result.html
@@ -2291,7 +2291,7 @@ service.</div>
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.HBaseHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getReverseScanResult-byte:A-byte:A-byte:A-">getReverseScanResult</a></span>(byte[]&nbsp;tableName,
+<td class="colLast"><span class="typeNameLabel">ThriftHBaseServiceHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getReverseScanResult-byte:A-byte:A-byte:A-">getReverseScanResult</a></span>(byte[]&nbsp;tableName,
                     byte[]&nbsp;row,
                     byte[]&nbsp;family)</code>&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/client/class-use/ResultScanner.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/ResultScanner.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/ResultScanner.html
index b3b6d6e..aa4f195 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/ResultScanner.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/ResultScanner.html
@@ -445,7 +445,7 @@ service.</div>
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.ResultScannerWrapper.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html#scanner">scanner</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">ThriftHBaseServiceHandler.ResultScannerWrapper.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html#scanner">scanner</a></span></code>&nbsp;</td>
 </tr>
 </tbody>
 </table>
@@ -458,7 +458,7 @@ service.</div>
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.ResultScannerWrapper.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html#getScanner--">getScanner</a></span>()</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">ThriftHBaseServiceHandler.ResultScannerWrapper.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html#getScanner--">getScanner</a></span>()</code>&nbsp;</td>
 </tr>
 </tbody>
 </table>
@@ -471,7 +471,7 @@ service.</div>
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>protected int</code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.HBaseHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#addScanner-org.apache.hadoop.hbase.client.ResultScanner-boolean-">addScanner</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a>&nbsp;scanner,
+<td class="colLast"><span class="typeNameLabel">ThriftHBaseServiceHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#addScanner-org.apache.hadoop.hbase.client.ResultScanner-boolean-">addScanner</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a>&nbsp;scanner,
           boolean&nbsp;sortColumns)</code>
 <div class="block">Assigns a unique ID to the scanner and adds the mapping to an internal
  hash-map.</div>
@@ -486,7 +486,7 @@ service.</div>
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ResultScannerWrapper.html#ResultScannerWrapper-org.apache.hadoop.hbase.client.ResultScanner-boolean-">ResultScannerWrapper</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a>&nbsp;resultScanner,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html#ResultScannerWrapper-org.apache.hadoop.hbase.client.ResultScanner-boolean-">ResultScannerWrapper</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a>&nbsp;resultScanner,
                     boolean&nbsp;sortResultColumns)</code>&nbsp;</td>
 </tr>
 </tbody>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/client/class-use/Table.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/Table.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/Table.html
index d6e1e7b..226f961 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/Table.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/Table.html
@@ -885,14 +885,14 @@ service.</div>
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.HBaseHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getTable-byte:A-">getTable</a></span>(byte[]&nbsp;tableName)</code>
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a></code></td>
+<td class="colLast"><span class="typeNameLabel">HBaseServiceHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#getTable-byte:A-">getTable</a></span>(byte[]&nbsp;tableName)</code>
 <div class="block">Creates and returns a Table instance from a given table name.</div>
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.HBaseHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getTable-java.nio.ByteBuffer-">getTable</a></span>(<a href="https://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)</code>&nbsp;</td>
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a></code></td>
+<td class="colLast"><span class="typeNameLabel">HBaseServiceHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#getTable-java.nio.ByteBuffer-">getTable</a></span>(<a href="https://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)</code>&nbsp;</td>
 </tr>
 </tbody>
 </table>
@@ -905,11 +905,11 @@ service.</div>
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.HBaseHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#closeTable-org.apache.hadoop.hbase.client.Table-">closeTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;table)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">ThriftHBaseServiceHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#closeTable-org.apache.hadoop.hbase.client.Table-">closeTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;table)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>(package private) byte[][]</code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.HBaseHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getAllColumns-org.apache.hadoop.hbase.client.Table-">getAllColumns</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;table)</code>
+<td class="colLast"><span class="typeNameLabel">ThriftHBaseServiceHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getAllColumns-org.apache.hadoop.hbase.client.Table-">getAllColumns</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;table)</code>
 <div class="block">Returns a list of all the column families for a given Table.</div>
 </td>
 </tr>
@@ -928,7 +928,7 @@ service.</div>
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a></code></td>
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a></code></td>
 <td class="colLast"><span class="typeNameLabel">ThriftHBaseServiceHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#getTable-java.nio.ByteBuffer-">getTable</a></span>(<a href="https://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)</code>&nbsp;</td>
 </tr>
 </tbody>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 efba260..04d149d 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -555,24 +555,24 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://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="https://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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/AsyncRequestFutureImpl.Retry.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncRequestFutureImpl.Retry</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html
index f845c4b..3583acd 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.374">CoprocessorHost.EnvironmentPriorityComparator</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.385">CoprocessorHost.EnvironmentPriorityComparator</a>
 extends <a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&gt;</pre>
 <div class="block">Environment priority comparator.
@@ -197,7 +197,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>EnvironmentPriorityComparator</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html#line.374">EnvironmentPriorityComparator</a>()</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html#line.385">EnvironmentPriorityComparator</a>()</pre>
 </li>
 </ul>
 </li>
@@ -214,7 +214,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>compare</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html#line.376">compare</a>(<a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&nbsp;env1,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html#line.387">compare</a>(<a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&nbsp;env1,
                    <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&nbsp;env2)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html
index 51c20d6..f6304d2 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html
@@ -108,7 +108,7 @@
 <hr>
 <br>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/FunctionalInterface.html?is-external=true" title="class or interface in java.lang">@FunctionalInterface</a>
-public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.485">CoprocessorHost.ObserverGetter</a>&lt;C,O&gt;
+public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.496">CoprocessorHost.ObserverGetter</a>&lt;C,O&gt;
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;C,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;O&gt;&gt;</pre>
 <div class="block">Implementations defined function to get an observer of type <code>O</code> from a coprocessor of
  type <code>C</code>. Concrete implementations of CoprocessorHost define one getter for each

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html
index f07ae0d..fba066d 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html
@@ -126,7 +126,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.487">CoprocessorHost.ObserverOperation</a>&lt;O&gt;
+<pre>private abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.498">CoprocessorHost.ObserverOperation</a>&lt;O&gt;
 extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContextImpl</a>&lt;E&gt;</pre>
 </li>
 </ul>
@@ -238,7 +238,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverCont
 <ul class="blockListLast">
 <li class="blockList">
 <h4>observerGetter</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a> extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html" title="type parameter in CoprocessorHost.ObserverOperation">O</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html#line.488">observerGetter</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a> extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html" title="type parameter in CoprocessorHost.ObserverOperation">O</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html#line.499">observerGetter</a></pre>
 </li>
 </ul>
 </li>
@@ -255,7 +255,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverCont
 <ul class="blockList">
 <li class="blockList">
 <h4>ObserverOperation</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html#line.490">ObserverOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html" title="type parameter in CoprocessorHost.ObserverOperation">O</a>&gt;&nbsp;observerGetter)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html#line.501">ObserverOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html" title="type parameter in CoprocessorHost.ObserverOperation">O</a>&gt;&nbsp;observerGetter)</pre>
 </li>
 </ul>
 <a name="ObserverOperation-org.apache.hadoop.hbase.coprocessor.CoprocessorHost.ObserverGetter-org.apache.hadoop.hbase.security.User-">
@@ -264,7 +264,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverCont
 <ul class="blockList">
 <li class="blockList">
 <h4>ObserverOperation</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html#line.494">ObserverOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html" title="type parameter in CoprocessorHost.ObserverOperation">O</a>&gt;&nbsp;observerGetter,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html#line.505">ObserverOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html" title="type parameter in CoprocessorHost.ObserverOperation">O</a>&gt;&nbsp;observerGetter,
                   <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</pre>
 </li>
 </ul>
@@ -274,7 +274,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverCont
 <ul class="blockList">
 <li class="blockList">
 <h4>ObserverOperation</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html#line.498">ObserverOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html" title="type parameter in CoprocessorHost.ObserverOperation">O</a>&gt;&nbsp;observerGetter,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html#line.509">ObserverOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html" title="type parameter in CoprocessorHost.ObserverOperation">O</a>&gt;&nbsp;observerGetter,
                   boolean&nbsp;bypassable)</pre>
 </li>
 </ul>
@@ -284,7 +284,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverCont
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ObserverOperation</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html#line.502">ObserverOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html" title="type parameter in CoprocessorHost.ObserverOperation">O</a>&gt;&nbsp;observerGetter,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html#line.513">ObserverOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html" title="type parameter in CoprocessorHost.ObserverOperation">O</a>&gt;&nbsp;observerGetter,
                   <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
                   boolean&nbsp;bypassable)</pre>
 </li>
@@ -303,7 +303,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverCont
 <ul class="blockList">
 <li class="blockList">
 <h4>callObserver</h4>
-<pre>abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html#line.507">callObserver</a>()
+<pre>abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html#line.518">callObserver</a>()
                     throws <a href="https://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>
@@ -317,7 +317,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverCont
 <ul class="blockListLast">
 <li class="blockList">
 <h4>postEnvCall</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html#line.508">postEnvCall</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html#line.519">postEnvCall</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html
index c74f41c..e220995 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.545">CoprocessorHost.ObserverOperationWithResult</a>&lt;O,R&gt;
+<pre>public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.556">CoprocessorHost.ObserverOperationWithResult</a>&lt;O,R&gt;
 extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverOperation</a>&lt;O&gt;</pre>
 </li>
 </ul>
@@ -266,7 +266,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockListLast">
 <li class="blockList">
 <h4>result</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">R</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html#line.548">result</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">R</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html#line.559">result</a></pre>
 </li>
 </ul>
 </li>
@@ -285,7 +285,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockList">
 <li class="blockList">
 <h4>ObserverOperationWithResult</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html#line.550">ObserverOperationWithResult</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">O</a>&gt;&nbsp;observerGetter,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html#line.561">ObserverOperationWithResult</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">O</a>&gt;&nbsp;observerGetter,
                                    <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">R</a>&nbsp;result)</pre>
 </li>
 </ul>
@@ -297,7 +297,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockList">
 <li class="blockList">
 <h4>ObserverOperationWithResult</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html#line.554">ObserverOperationWithResult</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">O</a>&gt;&nbsp;observerGetter,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html#line.565">ObserverOperationWithResult</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">O</a>&gt;&nbsp;observerGetter,
                                    <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">R</a>&nbsp;result,
                                    boolean&nbsp;bypassable)</pre>
 </li>
@@ -310,7 +310,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockList">
 <li class="blockList">
 <h4>ObserverOperationWithResult</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html#line.559">ObserverOperationWithResult</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">O</a>&gt;&nbsp;observerGetter,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html#line.570">ObserverOperationWithResult</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">O</a>&gt;&nbsp;observerGetter,
                                    <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">R</a>&nbsp;result,
                                    <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</pre>
 </li>
@@ -323,7 +323,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ObserverOperationWithResult</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html#line.564">ObserverOperationWithResult</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">O</a>&gt;&nbsp;observerGetter,
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html#line.575">ObserverOperationWithResult</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">O</a>&gt;&nbsp;observerGetter,
                                     <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">R</a>&nbsp;result,
                                     <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
                                     boolean&nbsp;bypassable)</pre>
@@ -345,7 +345,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockList">
 <li class="blockList">
 <h4>call</h4>
-<pre>protected abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">R</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html#line.546">call</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">O</a>&nbsp;observer)
+<pre>protected abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">R</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html#line.557">call</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">O</a>&nbsp;observer)
                    throws <a href="https://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>
@@ -359,7 +359,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockList">
 <li class="blockList">
 <h4>getResult</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">R</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html#line.570">getResult</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">R</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html#line.581">getResult</a>()</pre>
 </li>
 </ul>
 <a name="callObserver--">
@@ -368,7 +368,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockListLast">
 <li class="blockList">
 <h4>callObserver</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html#line.575">callObserver</a>()
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html#line.586">callObserver</a>()
            throws <a href="https://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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html
index dc44621..a482c6d 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html
@@ -131,7 +131,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.514">CoprocessorHost.ObserverOperationWithoutResult</a>&lt;O&gt;
+<pre>public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.525">CoprocessorHost.ObserverOperationWithoutResult</a>&lt;O&gt;
 extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverOperation</a>&lt;O&gt;</pre>
 </li>
 </ul>
@@ -246,7 +246,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockList">
 <li class="blockList">
 <h4>ObserverOperationWithoutResult</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html#line.517">ObserverOperationWithoutResult</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithoutResult">O</a>&gt;&nbsp;observerGetter)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html#line.528">ObserverOperationWithoutResult</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithoutResult">O</a>&gt;&nbsp;observerGetter)</pre>
 </li>
 </ul>
 <a name="ObserverOperationWithoutResult-org.apache.hadoop.hbase.coprocessor.CoprocessorHost.ObserverGetter-org.apache.hadoop.hbase.security.User-">
@@ -255,7 +255,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockList">
 <li class="blockList">
 <h4>ObserverOperationWithoutResult</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html#line.521">ObserverOperationWithoutResult</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithoutResult">O</a>&gt;&nbsp;observerGetter,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html#line.532">ObserverOperationWithoutResult</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithoutResult">O</a>&gt;&nbsp;observerGetter,
                                       <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</pre>
 </li>
 </ul>
@@ -265,7 +265,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ObserverOperationWithoutResult</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html#line.525">ObserverOperationWithoutResult</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithoutResult">O</a>&gt;&nbsp;observerGetter,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html#line.536">ObserverOperationWithoutResult</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverGetter.html" title="interface in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverGetter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>,<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithoutResult">O</a>&gt;&nbsp;observerGetter,
                                       <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
                                       boolean&nbsp;bypassable)</pre>
 </li>
@@ -286,7 +286,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockList">
 <li class="blockList">
 <h4>call</h4>
-<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html#line.515">call</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithoutResult">O</a>&nbsp;observer)
+<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html#line.526">call</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithoutResult">O</a>&nbsp;observer)
                       throws <a href="https://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>
@@ -300,7 +300,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockListLast">
 <li class="blockList">
 <h4>callObserver</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html#line.537">callObserver</a>()
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html#line.548">callObserver</a>()
            throws <a href="https://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">In case of coprocessors which have many kinds of observers (for eg, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessor.html" title="interface in org.apache.hadoop.hbase.coprocessor"><code>RegionCoprocessor</code></a>
  has BulkLoadObserver, RegionObserver, etc), some implementations may not need all


[50/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 1e3562d..5203a73 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -291,10 +291,10 @@
 <th><img src="images/icon_warning_sml.gif" alt="" />&#160;Warnings</th>
 <th><img src="images/icon_error_sml.gif" alt="" />&#160;Errors</th></tr>
 <tr class="b">
-<td>3834</td>
+<td>3840</td>
 <td>0</td>
 <td>0</td>
-<td>14667</td></tr></table></div>
+<td>14666</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -8669,961 +8669,956 @@
 <td>0</td>
 <td>3</td></tr>
 <tr class="a">
-<td><a href="#org.apache.hadoop.hbase.thrift2.ThriftServer.java">org/apache/hadoop/hbase/thrift2/ThriftServer.java</a></td>
-<td>0</td>
-<td>0</td>
-<td>1</td></tr>
-<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.tool.Canary.java">org/apache/hadoop/hbase/tool/Canary.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.tool.LoadIncrementalHFiles.java">org/apache/hadoop/hbase/tool/LoadIncrementalHFiles.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.tool.MapreduceTestingShim.java">org/apache/hadoop/hbase/tool/MapreduceTestingShim.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.tool.TestCanaryTool.java">org/apache/hadoop/hbase/tool/TestCanaryTool.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.tool.TestLoadIncrementalHFiles.java">org/apache/hadoop/hbase/tool/TestLoadIncrementalHFiles.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.tool.TestLoadIncrementalHFilesSplitRecovery.java">org/apache/hadoop/hbase/tool/TestLoadIncrementalHFilesSplitRecovery.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.trace.IntegrationTestSendTraceRequests.java">org/apache/hadoop/hbase/trace/IntegrationTestSendTraceRequests.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.trace.SpanReceiverHost.java">org/apache/hadoop/hbase/trace/SpanReceiverHost.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.trace.TraceTree.java">org/apache/hadoop/hbase/trace/TraceTree.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.trace.TraceUtil.java">org/apache/hadoop/hbase/trace/TraceUtil.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.types.TestCopyOnWriteMaps.java">org/apache/hadoop/hbase/types/TestCopyOnWriteMaps.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.types.TestOrderedBlob.java">org/apache/hadoop/hbase/types/TestOrderedBlob.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.types.TestOrderedString.java">org/apache/hadoop/hbase/types/TestOrderedString.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.types.TestStruct.java">org/apache/hadoop/hbase/types/TestStruct.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.types.TestTerminatedWrapper.java">org/apache/hadoop/hbase/types/TestTerminatedWrapper.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.types.TestUnion2.java">org/apache/hadoop/hbase/types/TestUnion2.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.util.AbstractByteRange.java">org/apache/hadoop/hbase/util/AbstractByteRange.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.util.AbstractFileStatusFilter.java">org/apache/hadoop/hbase/util/AbstractFileStatusFilter.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.util.AbstractHBaseTool.java">org/apache/hadoop/hbase/util/AbstractHBaseTool.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.util.AbstractPositionedByteRange.java">org/apache/hadoop/hbase/util/AbstractPositionedByteRange.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.util.Addressing.java">org/apache/hadoop/hbase/util/Addressing.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.util.AtomicUtils.java">org/apache/hadoop/hbase/util/AtomicUtils.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.util.AvlUtil.java">org/apache/hadoop/hbase/util/AvlUtil.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.util.BaseTestHBaseFsck.java">org/apache/hadoop/hbase/util/BaseTestHBaseFsck.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.util.BloomContext.java">org/apache/hadoop/hbase/util/BloomContext.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.util.BloomFilter.java">org/apache/hadoop/hbase/util/BloomFilter.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.util.BloomFilterChunk.java">org/apache/hadoop/hbase/util/BloomFilterChunk.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.util.BloomFilterFactory.java">org/apache/hadoop/hbase/util/BloomFilterFactory.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.util.BloomFilterUtil.java">org/apache/hadoop/hbase/util/BloomFilterUtil.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.util.BloomFilterWriter.java">org/apache/hadoop/hbase/util/BloomFilterWriter.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.util.BoundedPriorityBlockingQueue.java">org/apache/hadoop/hbase/util/BoundedPriorityBlockingQueue.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.util.BuilderStyleTest.java">org/apache/hadoop/hbase/util/BuilderStyleTest.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.util.ByteBufferArray.java">org/apache/hadoop/hbase/util/ByteBufferArray.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.util.ByteBufferUtils.java">org/apache/hadoop/hbase/util/ByteBufferUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>45</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ByteRangeUtils.java">org/apache/hadoop/hbase/util/ByteRangeUtils.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.util.Bytes.java">org/apache/hadoop/hbase/util/Bytes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>88</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.ChecksumType.java">org/apache/hadoop/hbase/util/ChecksumType.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.util.ClassLoaderTestHelper.java">org/apache/hadoop/hbase/util/ClassLoaderTestHelper.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.util.ClassSize.java">org/apache/hadoop/hbase/util/ClassSize.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.util.Classes.java">org/apache/hadoop/hbase/util/Classes.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.util.CollectionBackedScanner.java">org/apache/hadoop/hbase/util/CollectionBackedScanner.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.util.CollectionUtils.java">org/apache/hadoop/hbase/util/CollectionUtils.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.util.CommonFSUtils.java">org/apache/hadoop/hbase/util/CommonFSUtils.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.util.CompressionTest.java">org/apache/hadoop/hbase/util/CompressionTest.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.util.ConcatenatedLists.java">org/apache/hadoop/hbase/util/ConcatenatedLists.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.util.ConfigurationUtil.java">org/apache/hadoop/hbase/util/ConfigurationUtil.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.util.ConnectionCache.java">org/apache/hadoop/hbase/util/ConnectionCache.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.util.ConstantDelayQueue.java">org/apache/hadoop/hbase/util/ConstantDelayQueue.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.util.CoprocessorClassLoader.java">org/apache/hadoop/hbase/util/CoprocessorClassLoader.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.util.Counter.java">org/apache/hadoop/hbase/util/Counter.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.util.DirectMemoryUtils.java">org/apache/hadoop/hbase/util/DirectMemoryUtils.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.util.DynamicClassLoader.java">org/apache/hadoop/hbase/util/DynamicClassLoader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>26</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.EncryptionTest.java">org/apache/hadoop/hbase/util/EncryptionTest.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.util.EnvironmentEdgeManager.java">org/apache/hadoop/hbase/util/EnvironmentEdgeManager.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.util.EnvironmentEdgeManagerTestHelper.java">org/apache/hadoop/hbase/util/EnvironmentEdgeManagerTestHelper.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.util.ExceptionUtil.java">org/apache/hadoop/hbase/util/ExceptionUtil.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.util.FSHDFSUtils.java">org/apache/hadoop/hbase/util/FSHDFSUtils.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.util.FSRegionScanner.java">org/apache/hadoop/hbase/util/FSRegionScanner.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.util.FSTableDescriptors.java">org/apache/hadoop/hbase/util/FSTableDescriptors.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>36</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.FSUtils.java">org/apache/hadoop/hbase/util/FSUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>79</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.FSVisitor.java">org/apache/hadoop/hbase/util/FSVisitor.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.util.FileStatusFilter.java">org/apache/hadoop/hbase/util/FileStatusFilter.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.util.GetJavaProperty.java">org/apache/hadoop/hbase/util/GetJavaProperty.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.util.HBaseConfTool.java">org/apache/hadoop/hbase/util/HBaseConfTool.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.util.HBaseFsck.java">org/apache/hadoop/hbase/util/HBaseFsck.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>102</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.HBaseFsckRepair.java">org/apache/hadoop/hbase/util/HBaseFsckRepair.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.util.HBaseHomePath.java">org/apache/hadoop/hbase/util/HBaseHomePath.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.util.HFileArchiveTestingUtil.java">org/apache/hadoop/hbase/util/HFileArchiveTestingUtil.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.util.HFileArchiveUtil.java">org/apache/hadoop/hbase/util/HFileArchiveUtil.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.util.HFileTestUtil.java">org/apache/hadoop/hbase/util/HFileTestUtil.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.util.Hash.java">org/apache/hadoop/hbase/util/Hash.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.util.HashKey.java">org/apache/hadoop/hbase/util/HashKey.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.util.HashedBytes.java">org/apache/hadoop/hbase/util/HashedBytes.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.util.JSONBean.java">org/apache/hadoop/hbase/util/JSONBean.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.util.JSONMetricUtil.java">org/apache/hadoop/hbase/util/JSONMetricUtil.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.util.JVM.java">org/apache/hadoop/hbase/util/JVM.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.util.JVMClusterUtil.java">org/apache/hadoop/hbase/util/JVMClusterUtil.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.util.JenkinsHash.java">org/apache/hadoop/hbase/util/JenkinsHash.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.util.JsonMapper.java">org/apache/hadoop/hbase/util/JsonMapper.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.util.JvmPauseMonitor.java">org/apache/hadoop/hbase/util/JvmPauseMonitor.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.util.KeyLocker.java">org/apache/hadoop/hbase/util/KeyLocker.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.util.LeaseNotRecoveredException.java">org/apache/hadoop/hbase/util/LeaseNotRecoveredException.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.util.LoadTestDataGeneratorWithMOB.java">org/apache/hadoop/hbase/util/LoadTestDataGeneratorWithMOB.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.util.LoadTestDataGeneratorWithTags.java">org/apache/hadoop/hbase/util/LoadTestDataGeneratorWithTags.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.util.LoadTestTool.java">org/apache/hadoop/hbase/util/LoadTestTool.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.util.MD5Hash.java">org/apache/hadoop/hbase/util/MD5Hash.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.util.ManualEnvironmentEdge.java">org/apache/hadoop/hbase/util/ManualEnvironmentEdge.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.util.MapreduceDependencyClasspathTool.java">org/apache/hadoop/hbase/util/MapreduceDependencyClasspathTool.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.util.Methods.java">org/apache/hadoop/hbase/util/Methods.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.util.MockServer.java">org/apache/hadoop/hbase/util/MockServer.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.util.ModifyRegionUtils.java">org/apache/hadoop/hbase/util/ModifyRegionUtils.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.util.MultiHConnection.java">org/apache/hadoop/hbase/util/MultiHConnection.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.util.MultiThreadedAction.java">org/apache/hadoop/hbase/util/MultiThreadedAction.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.util.MultiThreadedReader.java">org/apache/hadoop/hbase/util/MultiThreadedReader.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.util.MultiThreadedReaderWithACL.java">org/apache/hadoop/hbase/util/MultiThreadedReaderWithACL.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.util.MultiThreadedUpdater.java">org/apache/hadoop/hbase/util/MultiThreadedUpdater.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.util.MultiThreadedWriter.java">org/apache/hadoop/hbase/util/MultiThreadedWriter.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.util.MultiThreadedWriterBase.java">org/apache/hadoop/hbase/util/MultiThreadedWriterBase.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.util.MunkresAssignment.java">org/apache/hadoop/hbase/util/MunkresAssignment.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.util.MurmurHash3.java">org/apache/hadoop/hbase/util/MurmurHash3.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.util.NettyEventLoopGroupConfig.java">org/apache/hadoop/hbase/util/NettyEventLoopGroupConfig.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.util.Order.java">org/apache/hadoop/hbase/util/Order.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.util.OrderedBytes.java">org/apache/hadoop/hbase/util/OrderedBytes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>44</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.Pair.java">org/apache/hadoop/hbase/util/Pair.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.util.PairOfSameType.java">org/apache/hadoop/hbase/util/PairOfSameType.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.util.PoolMap.java">org/apache/hadoop/hbase/util/PoolMap.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.util.PositionedByteRange.java">org/apache/hadoop/hbase/util/PositionedByteRange.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.util.PrettyPrinter.java">org/apache/hadoop/hbase/util/PrettyPrinter.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.util.ProcessBasedLocalHBaseCluster.java">org/apache/hadoop/hbase/util/ProcessBasedLocalHBaseCluster.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.util.RedundantKVGenerator.java">org/apache/hadoop/hbase/util/RedundantKVGenerator.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.util.ReflectionUtils.java">org/apache/hadoop/hbase/util/ReflectionUtils.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.util.RegionMover.java">org/apache/hadoop/hbase/util/RegionMover.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.util.RegionSplitCalculator.java">org/apache/hadoop/hbase/util/RegionSplitCalculator.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.util.RegionSplitter.java">org/apache/hadoop/hbase/util/RegionSplitter.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.util.RetryCounter.java">org/apache/hadoop/hbase/util/RetryCounter.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.util.RollingStatCalculator.java">org/apache/hadoop/hbase/util/RollingStatCalculator.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.util.RowBloomContext.java">org/apache/hadoop/hbase/util/RowBloomContext.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.util.ServerCommandLine.java">org/apache/hadoop/hbase/util/ServerCommandLine.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.util.ServerRegionReplicaUtil.java">org/apache/hadoop/hbase/util/ServerRegionReplicaUtil.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.util.ShutdownHookManager.java">org/apache/hadoop/hbase/util/ShutdownHookManager.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.util.SimpleByteRange.java">org/apache/hadoop/hbase/util/SimpleByteRange.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.util.SimpleMutableByteRange.java">org/apache/hadoop/hbase/util/SimpleMutableByteRange.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.util.SimplePositionedByteRange.java">org/apache/hadoop/hbase/util/SimplePositionedByteRange.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.util.SimplePositionedMutableByteRange.java">org/apache/hadoop/hbase/util/SimplePositionedMutableByteRange.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.util.Sleeper.java">org/apache/hadoop/hbase/util/Sleeper.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.util.StealJobQueue.java">org/apache/hadoop/hbase/util/StealJobQueue.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.util.StoppableImplementation.java">org/apache/hadoop/hbase/util/StoppableImplementation.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.util.Strings.java">org/apache/hadoop/hbase/util/Strings.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.util.TestBloomFilterChunk.java">org/apache/hadoop/hbase/util/TestBloomFilterChunk.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.util.TestBytes.java">org/apache/hadoop/hbase/util/TestBytes.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.util.TestCompressionTest.java">org/apache/hadoop/hbase/util/TestCompressionTest.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.util.TestCoprocessorClassLoader.java">org/apache/hadoop/hbase/util/TestCoprocessorClassLoader.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.util.TestCoprocessorScanPolicy.java">org/apache/hadoop/hbase/util/TestCoprocessorScanPolicy.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.util.TestFSTableDescriptors.java">org/apache/hadoop/hbase/util/TestFSTableDescriptors.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.util.TestFSUtils.java">org/apache/hadoop/hbase/util/TestFSUtils.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.util.TestFSVisitor.java">org/apache/hadoop/hbase/util/TestFSVisitor.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.util.TestHFileArchiveUtil.java">org/apache/hadoop/hbase/util/TestHFileArchiveUtil.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.util.TestIdLock.java">org/apache/hadoop/hbase/util/TestIdLock.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.util.TestIdReadWriteLock.java">org/apache/hadoop/hbase/util/TestIdReadWriteLock.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.util.TestMiniClusterLoadEncoded.java">org/apache/hadoop/hbase/util/TestMiniClusterLoadEncoded.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.util.TestMiniClusterLoadSequential.java">org/apache/hadoop/hbase/util/TestMiniClusterLoadSequential.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.util.TestOrderedBytes.java">org/apache/hadoop/hbase/util/TestOrderedBytes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>30</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.TestRegionSplitter.java">org/apache/hadoop/hbase/util/TestRegionSplitter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>192</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.TestSimplePositionedMutableByteRange.java">org/apache/hadoop/hbase/util/TestSimplePositionedMutableByteRange.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.util.TestSortedList.java">org/apache/hadoop/hbase/util/TestSortedList.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.util.Threads.java">org/apache/hadoop/hbase/util/Threads.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.util.TimeOffsetEnvironmentEdge.java">org/apache/hadoop/hbase/util/TimeOffsetEnvironmentEdge.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.util.Triple.java">org/apache/hadoop/hbase/util/Triple.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.util.UnsafeAccess.java">org/apache/hadoop/hbase/util/UnsafeAccess.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>35</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.UnsafeAvailChecker.java">org/apache/hadoop/hbase/util/UnsafeAvailChecker.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.util.VersionInfo.java">org/apache/hadoop/hbase/util/VersionInfo.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.util.Writables.java">org/apache/hadoop/hbase/util/Writables.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.util.ZKDataMigrator.java">org/apache/hadoop/hbase/util/ZKDataMigrator.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.util.compaction.MajorCompactor.java">org/apache/hadoop/hbase/util/compaction/MajorCompactor.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.util.compaction.TestMajorCompactionRequest.java">org/apache/hadoop/hbase/util/compaction/TestMajorCompactionRequest.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.util.compaction.TestMajorCompactor.java">org/apache/hadoop/hbase/util/compaction/TestMajorCompactor.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.util.hbck.HFileCorruptionChecker.java">org/apache/hadoop/hbase/util/hbck/HFileCorruptionChecker.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.util.hbck.HbckTestingUtil.java">org/apache/hadoop/hbase/util/hbck/HbckTestingUtil.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.util.hbck.OfflineMetaRebuildTestCore.java">org/apache/hadoop/hbase/util/hbck/OfflineMetaRebuildTestCore.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.util.hbck.OfflineMetaRepair.java">org/apache/hadoop/hbase/util/hbck/OfflineMetaRepair.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.util.test.LoadTestDataGenerator.java">org/apache/hadoop/hbase/util/test/LoadTestDataGenerator.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.util.test.LoadTestDataGeneratorWithACL.java">org/apache/hadoop/hbase/util/test/LoadTestDataGeneratorWithACL.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.wal.AbstractFSWALProvider.java">org/apache/hadoop/hbase/wal/AbstractFSWALProvider.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.wal.BoundedGroupingStrategy.java">org/apache/hadoop/hbase/wal/BoundedGroupingStrategy.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.wal.DisabledWALProvider.java">org/apache/hadoop/hbase/wal/DisabledWALProvider.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.wal.FSHLogProvider.java">org/apache/hadoop/hbase/wal/FSHLogProvider.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.wal.IOTestProvider.java">org/apache/hadoop/hbase/wal/IOTestProvider.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.wal.NamespaceGroupingStrategy.java">org/apache/hadoop/hbase/wal/NamespaceGroupingStrategy.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.wal.NettyAsyncFSWALConfigHelper.java">org/apache/hadoop/hbase/wal/NettyAsyncFSWALConfigHelper.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.wal.TestBoundedRegionGroupingStrategy.java">org/apache/hadoop/hbase/wal/TestBoundedRegionGroupingStrategy.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.wal.TestFSHLogProvider.java">org/apache/hadoop/hbase/wal/TestFSHLogProvider.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.wal.TestWALFactory.java">org/apache/hadoop/hbase/wal/TestWALFactory.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.wal.TestWALFiltering.java">org/apache/hadoop/hbase/wal/TestWALFiltering.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.wal.TestWALMethods.java">org/apache/hadoop/hbase/wal/TestWALMethods.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.wal.TestWALOpenAfterDNRollingStart.java">org/apache/hadoop/hbase/wal/TestWALOpenAfterDNRollingStart.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.wal.TestWALReaderOnSecureWAL.java">org/apache/hadoop/hbase/wal/TestWALReaderOnSecureWAL.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.wal.TestWALRootDir.java">org/apache/hadoop/hbase/wal/TestWALRootDir.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.wal.TestWALSplit.java">org/apache/hadoop/hbase/wal/TestWALSplit.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.wal.WAL.java">org/apache/hadoop/hbase/wal/WAL.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.wal.WALEdit.java">org/apache/hadoop/hbase/wal/WALEdit.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.wal.WALFactory.java">org/apache/hadoop/hbase/wal/WALFactory.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.wal.WALKey.java">org/apache/hadoop/hbase/wal/WALKey.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.wal.WALKeyImpl.java">org/apache/hadoop/hbase/wal/WALKeyImpl.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.wal.WALPerformanceEvaluation.java">org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.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.wal.WALPrettyPrinter.java">org/apache/hadoop/hbase/wal/WALPrettyPrinter.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.wal.WALSplitter.java">org/apache/hadoop/hbase/wal/WALSplitter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>36</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.java">org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.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.zookeeper.ZKConfig.java">org/apache/hadoop/hbase/zookeeper/ZKConfig.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.zookeeper.ZKMetadata.java">org/apache/hadoop/hbase/zookeeper/ZKMetadata.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.zookeeper.ZNodePaths.java">org/apache/hadoop/hbase/zookeeper/ZNodePaths.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>26</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.zookeeper.ZooKeeperHelper.java">org/apache/hadoop/hbase/zookeeper/ZooKeeperHelper.java</a></td>
 <td>0</td>
 <td>0</td>
@@ -9631,67 +9626,67 @@
 <div class="section">
 <h2><a name="Rules"></a>Rules</h2>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Category</th>
 <th>Rule</th>
 <th>Violations</th>
 <th>Severity</th></tr>
-<tr class="b">
+<tr class="a">
 <td>annotation</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_annotation.html#MissingDeprecated">MissingDeprecated</a></td>
 <td>141</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td>blocks</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_blocks.html#EmptyBlock">EmptyBlock</a></td>
 <td>40</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_blocks.html#LeftCurly">LeftCurly</a></td>
 <td>182</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_blocks.html#NeedBraces">NeedBraces</a></td>
 <td>1740</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td>coding</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_coding.html#EmptyStatement">EmptyStatement</a></td>
 <td>29</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_coding.html#EqualsHashCode">EqualsHashCode</a></td>
 <td>4</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_coding.html#InnerAssignment">InnerAssignment</a></td>
 <td>88</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_coding.html#NoFinalizer">NoFinalizer</a></td>
 <td>1</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td>design</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_design.html#FinalClass">FinalClass</a></td>
 <td>50</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_design.html#HideUtilityClassConstructor">HideUtilityClassConstructor</a></td>
 <td>98</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_design.html#InterfaceIsType">InterfaceIsType</a></td>
 <td>1</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_design.html#VisibilityModifier">VisibilityModifier</a>
 <ul>
@@ -9700,12 +9695,12 @@
 <li>allowPublicImmutableFields: <tt>&quot;true&quot;</tt></li></ul></td>
 <td>124</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td>imports</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_imports.html#AvoidStarImport">AvoidStarImport</a></td>
 <td>74</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_imports.html#ImportOrder">ImportOrder</a>
 <ul>
@@ -9715,19 +9710,19 @@
 <li>option: <tt>&quot;top&quot;</tt></li></ul></td>
 <td>1129</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_imports.html#RedundantImport">RedundantImport</a></td>
 <td>24</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_imports.html#UnusedImports">UnusedImports</a>
 <ul>
 <li>processJavadoc: <tt>&quot;true&quot;</tt></li></ul></td>
 <td>89</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td>indentation</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_indentation.html#Indentation">Indentation</a>
 <ul>
@@ -9738,29 +9733,29 @@
 <li>lineWrappingIndentation: <tt>&quot;2&quot;</tt></li></ul></td>
 <td>4616</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td>javadoc</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#JavadocTagContinuationIndentation">JavadocTagContinuationIndentation</a>
 <ul>
 <li>offset: <tt>&quot;2&quot;</tt></li></ul></td>
-<td>727</td>
+<td>726</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#NonEmptyAtclauseDescription">NonEmptyAtclauseDescription</a></td>
-<td>3406</td>
+<td>3407</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td>misc</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_misc.html#ArrayTypeStyle">ArrayTypeStyle</a></td>
 <td>139</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_misc.html#UpperEll">UpperEll</a></td>
 <td>44</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td>sizes</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_sizes.html#LineLength">LineLength</a>
 <ul>
@@ -9768,22 +9763,22 @@
 <li>ignorePattern: <tt>&quot;^package.*|^import.*|a href|href|http://|https://|ftp://|org.apache.thrift.|com.google.protobuf.|hbase.protobuf.generated&quot;</tt></li></ul></td>
 <td>1424</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_sizes.html#MethodLength">MethodLength</a></td>
-<td>69</td>
+<td>68</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td>whitespace</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_whitespace.html#FileTabCharacter">FileTabCharacter</a></td>
 <td>7</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_whitespace.html#MethodParamPad">MethodParamPad</a></td>
 <td>167</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_whitespace.html#ParenPad">ParenPad</a></td>
 <td>254</td>
@@ -9793,49 +9788,49 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.AcidGuaranteesTestTool.java">org/apache/hadoop/hbase/AcidGuaranteesTestTool.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>138</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>163</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>215</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>216</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>282</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>283</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
@@ -9844,157 +9839,157 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.AsyncMetaTableAccessor.java">org/apache/hadoop/hbase/AsyncMetaTableAccessor.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
 <td>62</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>109</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'lambda arguments' has incorrect indentation level 8, expected level should be 14.</td>
 <td>121</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' has incorrect indentation level 10, expected level should be 16.</td>
 <td>122</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 12, expected level should be 18.</td>
 <td>123</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 12, expected level should be 18.</td>
 <td>124</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if rcurly' has incorrect indentation level 10, expected level should be 16.</td>
 <td>125</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 10, expected level should be 16.</td>
 <td>126</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block rcurly' has incorrect indentation level 8, expected level should be 14.</td>
 <td>128</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>138</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>178</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>191</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>217</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 117).</td>
 <td>233</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>244</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>275</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>288</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>394</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>396</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>404</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>412</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>457</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>462</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>480</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -10003,13 +9998,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.BBKVComparator.java">org/apache/hadoop/hbase/BBKVComparator.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -10018,25 +10013,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ByteBufferKeyOnlyKeyValue.java">org/apache/hadoop/hbase/ByteBufferKeyOnlyKeyValue.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>59</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>60</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -10045,13 +10040,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.Cell.java">org/apache/hadoop/hbase/Cell.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
@@ -10060,31 +10055,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.CellBuilderFactory.java">org/apache/hadoop/hbase/CellBuilderFactory.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 109).</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 107).</td>
 <td>27</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 113).</td>
 <td>28</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -10093,13 +10088,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.CellComparator.java">org/apache/hadoop/hbase/CellComparator.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
@@ -10108,13 +10103,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.CellComparatorImpl.java">org/apache/hadoop/hbase/CellComparatorImpl.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -10123,13 +10118,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.CellScanner.java">org/apache/hadoop/hbase/CellScanner.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -10138,409 +10133,409 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.CellUtil.java">org/apache/hadoop/hbase/CellUtil.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>143</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>156</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>157</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>376</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>377</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>378</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>389</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>390</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>391</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td>402</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>420</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>522</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>534</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>535</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>552</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>553</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>554</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>597</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>615</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>618</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>626</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>630</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>635</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>637</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>640</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>660</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>670</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>676</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>685</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>703</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>718</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>719</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>816</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>830</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>844</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>859</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>986</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1013</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1026</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1027</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1028</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1107</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1108</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1119</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1120</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1131</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1145</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1146</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1159</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1185</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1199</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1217</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>1227</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1248</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1250</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1260</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1261</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1262</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1263</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1264</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1355</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1356</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>1362</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1385</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1386</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>1471</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -10549,31 +10544,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ChoreService.java">org/apache/hadoop/hbase/ChoreService.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>172</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>302</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>374</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -10582,31 +10577,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ClassFinder.java">org/apache/hadoop/hbase/ClassFinder.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 54 should have line break after.</td>
 <td>70</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 46 should have line break after.</td>
 <td>71</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 40 should have line break after.</td>
 <td>72</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
@@ -10615,31 +10610,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ClusterId.java">org/apache/hadoop/hbase/ClusterId.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.exceptions.DeserializationException' import.</td>
 <td>25</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.Bytes' import.</td>
 <td>28</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>60</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -10648,13 +10643,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ClusterManager.java">org/apache/hadoop/hbase/ClusterManager.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -10663,13 +10658,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ClusterStatus.java">org/apache/hadoop/hbase/ClusterStatus.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -10678,37 +10673,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.CompoundConfiguration.java">org/apache/hadoop/hbase/CompoundConfiguration.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'member def modifier' has incorrect indentation level 3, expected level should be 4.</td>
 <td>79</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>183</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>186</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 6, expected level should be 8.</td>
 <td>198</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -10717,13 +10712,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.CoordinatedStateManager.java">org/apache/hadoop/hbase/CoordinatedStateManager.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -10732,19 +10727,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.Coprocessor.java">org/apache/hadoop/hbase/Coprocessor.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'com.google.protobuf.Service' import.</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
@@ -10753,43 +10748,43 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.DistributedHBaseCluster.java">org/apache/hadoop/hbase/DistributedHBaseCluster.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>81</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>105</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>111</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>269</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>469</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -10798,25 +10793,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.DoNotRetryIOException.java">org/apache/hadoop/hbase/DoNotRetryIOException.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>40</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>47</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -10825,13 +10820,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.DroppedSnapshotException.java">org/apache/hadoop/hbase/DroppedSnapshotException.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -10840,13 +10835,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ExtendedCell.java">org/apache/hadoop/hbase/ExtendedCell.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -10855,19 +10850,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.GenericTestUtils.java">org/apache/hadoop/hbase/GenericTestUtils.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 3 should be on the previous line.</td>
 <td>99</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -10876,13 +10871,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.HBaseClassTestRuleChecker.java">org/apache/hadoop/hbase/HBaseClassTestRuleChecker.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>UnusedImports</td>
@@ -10891,43 +10886,43 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.HBaseCluster.java">org/apache/hadoop/hbase/HBaseCluster.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>103</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>109</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>115</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>386</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>390</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -10936,19 +10931,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.HBaseClusterManager.java">org/apache/hadoop/hbase/HBaseClusterManager.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 104).</td>
 <td>68</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -10957,85 +10952,85 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.HBaseCommonTestingUtility.java">org/apache/hadoop/hbase/HBaseCommonTestingUtility.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Er

<TRUNCATED>

[32/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html b/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html
index 8fc0ace..38c35a3 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html
@@ -18,8 +18,8 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":9,"i49":9,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10};
-var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
 var tableTab = "tableTab";
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift2/DemoClient.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" target="_top">Frames</a></li>
@@ -100,10 +100,15 @@ var activeTableTab = "activeTableTab";
 <li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
 <li>
 <ul class="inheritance">
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">org.apache.hadoop.hbase.thrift.HBaseServiceHandler</a></li>
+<li>
+<ul class="inheritance">
 <li>org.apache.hadoop.hbase.thrift2.ThriftHBaseServiceHandler</li>
 </ul>
 </li>
 </ul>
+</li>
+</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
@@ -114,8 +119,8 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.102">ThriftHBaseServiceHandler</a>
-extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.99">ThriftHBaseServiceHandler</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a>
 implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <div class="block">This class is a glue object that connects Thrift RPC calls to the HBase client API primarily
  defined in the Table interface.</div>
@@ -139,10 +144,6 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private static class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler.THBaseServiceMetricsProxy</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private static class&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler.TIOErrorWithCause</a></span></code>&nbsp;</td>
 </tr>
 </table>
@@ -161,14 +162,6 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/ThriftHBaseServiceHandler.html#CLEANUP_INTERVAL">CLEANUP_INTERVAL</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/util/ConnectionCache.html" title="class in org.apache.hadoop.hbase.util">ConnectionCache</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#connectionCache">connectionCache</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><code>private static <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#ioe">ioe</a></span></code>&nbsp;</td>
 </tr>
@@ -181,18 +174,21 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#LOG">LOG</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>(package private) static <a href="https://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/ThriftHBaseServiceHandler.html#MAX_IDLETIME">MAX_IDLETIME</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><code>private <a href="https://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></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#nextScannerId">nextScannerId</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="https://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="https://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/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#scannerMap">scannerMap</a></span></code>&nbsp;</td>
 </tr>
 </table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.thrift.HBaseServiceHandler">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#CLEANUP_INTERVAL">CLEANUP_INTERVAL</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#conf">conf</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#connectionCache">connectionCache</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#MAX_IDLETIME">MAX_IDLETIME</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#metrics">metrics</a></code></li>
+</ul>
 </li>
 </ul>
 <!-- ======== CONSTRUCTOR SUMMARY ======== -->
@@ -220,7 +216,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 </a>
 <h3>Method Summary</h3>
 <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>
 <th class="colLast" scope="col">Method and Description</th>
@@ -427,7 +423,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 </td>
 </tr>
 <tr id="i29" class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a></code></td>
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#getTable-java.nio.ByteBuffer-">getTable</a></span>(<a href="https://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)</code>&nbsp;</td>
 </tr>
 <tr id="i30" class="altColor">
@@ -532,50 +528,37 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 </td>
 </tr>
 <tr id="i48" class="altColor">
-<td class="colFirst"><code>static org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</code></td>
-<td class="colLast"><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>
-</tr>
-<tr id="i49" class="rowColor">
-<td class="colFirst"><code>private static long</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#now--">now</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i50" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#openScanner-java.nio.ByteBuffer-org.apache.hadoop.hbase.thrift2.generated.TScan-">openScanner</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
            org.apache.hadoop.hbase.thrift2.generated.TScan&nbsp;scan)</code>
 <div class="block">Get a Scanner for the provided TScan object.</div>
 </td>
 </tr>
-<tr id="i51" class="rowColor">
+<tr id="i49" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#put-java.nio.ByteBuffer-org.apache.hadoop.hbase.thrift2.generated.TPut-">put</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
    org.apache.hadoop.hbase.thrift2.generated.TPut&nbsp;put)</code>
 <div class="block">Commit a TPut to a table.</div>
 </td>
 </tr>
-<tr id="i52" class="altColor">
+<tr id="i50" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#putMultiple-java.nio.ByteBuffer-java.util.List-">putMultiple</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
            <a href="https://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.TPut&gt;&nbsp;puts)</code>
 <div class="block">Commit a List of Puts to the table.</div>
 </td>
 </tr>
-<tr id="i53" class="rowColor">
+<tr id="i51" class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#removeScanner-int-">removeScanner</a></span>(int&nbsp;id)</code>
 <div class="block">Removes the scanner associated with the specified ID from the internal HashMap.</div>
 </td>
 </tr>
-<tr id="i54" class="altColor">
-<td class="colFirst"><code>(package private) void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#setEffectiveUser-java.lang.String-">setEffectiveUser</a></span>(<a href="https://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)</code>&nbsp;</td>
-</tr>
-<tr id="i55" class="rowColor">
+<tr id="i52" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#tableExists-org.apache.hadoop.hbase.thrift2.generated.TTableName-">tableExists</a></span>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tTableName)</code>&nbsp;</td>
 </tr>
-<tr id="i56" class="altColor">
+<tr id="i53" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#truncateTable-org.apache.hadoop.hbase.thrift2.generated.TTableName-boolean-">truncateTable</a></span>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName,
              boolean&nbsp;preserveSplits)</code>
@@ -584,6 +567,13 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 </tr>
 </table>
 <ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.thrift.HBaseServiceHandler">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#getAdmin--">getAdmin</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#getTable-byte:A-">getTable</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#initMetrics-org.apache.hadoop.hbase.thrift.ThriftMetrics-">initMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#setEffectiveUser-java.lang.String-">setEffectiveUser</a></code></li>
+</ul>
+<ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
 <!--   -->
 </a>
@@ -610,7 +600,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <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/ThriftHBaseServiceHandler.html#line.105">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.102">LOG</a></pre>
 </li>
 </ul>
 <a name="nextScannerId">
@@ -619,7 +609,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>nextScannerId</h4>
-<pre>private final&nbsp;<a href="https://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/thrift2/ThriftHBaseServiceHandler.html#line.109">nextScannerId</a></pre>
+<pre>private final&nbsp;<a href="https://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/thrift2/ThriftHBaseServiceHandler.html#line.106">nextScannerId</a></pre>
 </li>
 </ul>
 <a name="scannerMap">
@@ -628,42 +618,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>scannerMap</h4>
-<pre>private final&nbsp;<a href="https://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="https://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/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.110">scannerMap</a></pre>
-</li>
-</ul>
-<a name="connectionCache">
-<!--   -->
-</a>
-<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/thrift2/ThriftHBaseServiceHandler.html#line.112">connectionCache</a></pre>
-</li>
-</ul>
-<a name="CLEANUP_INTERVAL">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>CLEANUP_INTERVAL</h4>
-<pre>static final&nbsp;<a href="https://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/thrift2/ThriftHBaseServiceHandler.html#line.114">CLEANUP_INTERVAL</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift2.ThriftHBaseServiceHandler.CLEANUP_INTERVAL">Constant Field Values</a></dd>
-</dl>
-</li>
-</ul>
-<a name="MAX_IDLETIME">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>MAX_IDLETIME</h4>
-<pre>static final&nbsp;<a href="https://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/thrift2/ThriftHBaseServiceHandler.html#line.115">MAX_IDLETIME</a></pre>
-<dl>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift2.ThriftHBaseServiceHandler.MAX_IDLETIME">Constant Field Values</a></dd>
-</dl>
+<pre>private final&nbsp;<a href="https://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="https://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/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.107">scannerMap</a></pre>
 </li>
 </ul>
 <a name="ioe">
@@ -672,7 +627,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>ioe</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.117">ioe</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.109">ioe</a></pre>
 </li>
 </ul>
 <a name="isReadOnly">
@@ -681,7 +636,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isReadOnly</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.119">isReadOnly</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.111">isReadOnly</a></pre>
 </li>
 </ul>
 </li>
@@ -698,7 +653,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ThriftHBaseServiceHandler</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.195">ThriftHBaseServiceHandler</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.148">ThriftHBaseServiceHandler</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                           <a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a>&nbsp;userProvider)
                    throws <a href="https://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>
@@ -715,32 +670,17 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="newInstance-org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface-org.apache.hadoop.hbase.thrift.ThriftMetrics-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>newInstance</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.121">newInstance</a>(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)</pre>
-</li>
-</ul>
-<a name="now--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>now</h4>
-<pre>private static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.191">now</a>()</pre>
-</li>
-</ul>
 <a name="getTable-java.nio.ByteBuffer-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTable</h4>
-<pre>private&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/thrift2/ThriftHBaseServiceHandler.html#line.204">getTable</a>(<a href="https://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>
+<pre>protected&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/thrift2/ThriftHBaseServiceHandler.html#line.155">getTable</a>(<a href="https://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>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#getTable-java.nio.ByteBuffer-">getTable</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></code></dd>
+</dl>
 </li>
 </ul>
 <a name="getLocator-java.nio.ByteBuffer-">
@@ -749,7 +689,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getLocator</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.212">getLocator</a>(<a href="https://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>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.163">getLocator</a>(<a href="https://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>
 </li>
 </ul>
 <a name="closeTable-org.apache.hadoop.hbase.client.Table-">
@@ -758,7 +698,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>closeTable</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.220">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/thrift2/ThriftHBaseServiceHandler.html#line.171">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.thrift2.generated.TIOError</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -772,7 +712,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTIOError</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.thrift2.generated.TIOError&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.228">getTIOError</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;e)</pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.thrift2.generated.TIOError&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.179">getTIOError</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;e)</pre>
 </li>
 </ul>
 <a name="addScanner-org.apache.hadoop.hbase.client.ResultScanner-">
@@ -781,7 +721,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>addScanner</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.239">addScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a>&nbsp;scanner)</pre>
+<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.190">addScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a>&nbsp;scanner)</pre>
 <div class="block">Assigns a unique ID to the scanner and adds the mapping to an internal HashMap.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -797,7 +737,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanner</h4>
-<pre>private&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/thrift2/ThriftHBaseServiceHandler.html#line.250">getScanner</a>(int&nbsp;id)</pre>
+<pre>private&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/thrift2/ThriftHBaseServiceHandler.html#line.201">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>
@@ -807,22 +747,13 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 </dl>
 </li>
 </ul>
-<a name="setEffectiveUser-java.lang.String-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>setEffectiveUser</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.254">setEffectiveUser</a>(<a href="https://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="removeScanner-int-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>removeScanner</h4>
-<pre>protected&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/thrift2/ThriftHBaseServiceHandler.html#line.263">removeScanner</a>(int&nbsp;id)</pre>
+<pre>protected&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/thrift2/ThriftHBaseServiceHandler.html#line.210">removeScanner</a>(int&nbsp;id)</pre>
 <div class="block">Removes the scanner associated with the specified ID from the internal HashMap.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -838,7 +769,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>exists</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.268">exists</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.215">exists</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
                       org.apache.hadoop.hbase.thrift2.generated.TGet&nbsp;get)
                throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                       org.apache.thrift.TException</pre>
@@ -864,7 +795,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>existsAll</h4>
-<pre>public&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.280">existsAll</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
+<pre>public&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.227">existsAll</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
                                <a href="https://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.TGet&gt;&nbsp;gets)
                         throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                                org.apache.thrift.TException</pre>
@@ -891,7 +822,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.thrift2.generated.TResult&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.297">get</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
+<pre>public&nbsp;org.apache.hadoop.hbase.thrift2.generated.TResult&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.244">get</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
                                                              org.apache.hadoop.hbase.thrift2.generated.TGet&nbsp;get)
                                                       throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                                                              org.apache.thrift.TException</pre>
@@ -920,7 +851,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getMultiple</h4>
-<pre>public&nbsp;<a href="https://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.TResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.309">getMultiple</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
+<pre>public&nbsp;<a href="https://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.TResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.256">getMultiple</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
                                                                            <a href="https://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.TGet&gt;&nbsp;gets)
                                                                     throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                                                                            org.apache.thrift.TException</pre>
@@ -952,7 +883,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>put</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.321">put</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.268">put</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
                 org.apache.hadoop.hbase.thrift2.generated.TPut&nbsp;put)
          throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                 org.apache.thrift.TException</pre>
@@ -976,7 +907,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPut</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.334">checkAndPut</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.281">checkAndPut</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
                            <a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;family,
                            <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;qualifier,
@@ -1013,7 +944,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>putMultiple</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.354">putMultiple</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.301">putMultiple</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
                         <a href="https://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.TPut&gt;&nbsp;puts)
                  throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                         org.apache.thrift.TException</pre>
@@ -1037,7 +968,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteSingle</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.367">deleteSingle</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.314">deleteSingle</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
                          org.apache.hadoop.hbase.thrift2.generated.TDelete&nbsp;deleteSingle)
                   throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                          org.apache.thrift.TException</pre>
@@ -1064,7 +995,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteMultiple</h4>
-<pre>public&nbsp;<a href="https://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;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.380">deleteMultiple</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
+<pre>public&nbsp;<a href="https://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;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.327">deleteMultiple</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
                                                                               <a href="https://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;deletes)
                                                                        throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                                                                               org.apache.thrift.TException</pre>
@@ -1092,7 +1023,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndMutate</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.395">checkAndMutate</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.342">checkAndMutate</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
                               <a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;family,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;qualifier,
@@ -1130,7 +1061,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndDelete</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.410">checkAndDelete</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.357">checkAndDelete</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
                               <a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;family,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;qualifier,
@@ -1167,7 +1098,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>increment</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.thrift2.generated.TResult&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.432">increment</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
+<pre>public&nbsp;org.apache.hadoop.hbase.thrift2.generated.TResult&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.379">increment</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
                                                                    org.apache.hadoop.hbase.thrift2.generated.TIncrement&nbsp;increment)
                                                             throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                                                                    org.apache.thrift.TException</pre>
@@ -1186,7 +1117,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>append</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.thrift2.generated.TResult&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.445">append</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
+<pre>public&nbsp;org.apache.hadoop.hbase.thrift2.generated.TResult&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.392">append</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
                                                                 org.apache.hadoop.hbase.thrift2.generated.TAppend&nbsp;append)
                                                          throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                                                                 org.apache.thrift.TException</pre>
@@ -1205,7 +1136,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>openScanner</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.458">openScanner</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.405">openScanner</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
                        org.apache.hadoop.hbase.thrift2.generated.TScan&nbsp;scan)
                 throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                        org.apache.thrift.TException</pre>
@@ -1231,7 +1162,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getScannerRows</h4>
-<pre>public&nbsp;<a href="https://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.TResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.472">getScannerRows</a>(int&nbsp;scannerId,
+<pre>public&nbsp;<a href="https://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.TResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.419">getScannerRows</a>(int&nbsp;scannerId,
                                                                               int&nbsp;numRows)
                                                                        throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                                                                               org.apache.hadoop.hbase.thrift2.generated.TIllegalArgument,
@@ -1259,7 +1190,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getScannerResults</h4>
-<pre>public&nbsp;<a href="https://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.TResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.489">getScannerResults</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
+<pre>public&nbsp;<a href="https://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.TResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.436">getScannerResults</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
                                                                                  org.apache.hadoop.hbase.thrift2.generated.TScan&nbsp;scan,
                                                                                  int&nbsp;numRows)
                                                                           throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
@@ -1288,7 +1219,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>closeScanner</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.511">closeScanner</a>(int&nbsp;scannerId)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.458">closeScanner</a>(int&nbsp;scannerId)
                   throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                          org.apache.hadoop.hbase.thrift2.generated.TIllegalArgument,
                          org.apache.thrift.TException</pre>
@@ -1314,7 +1245,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>mutateRow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.526">mutateRow</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.473">mutateRow</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
                       org.apache.hadoop.hbase.thrift2.generated.TRowMutations&nbsp;rowMutations)
                throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                       org.apache.thrift.TException</pre>
@@ -1338,7 +1269,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllRegionLocations</h4>
-<pre>public&nbsp;<a href="https://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/ThriftHBaseServiceHandler.html#line.539">getAllRegionLocations</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table)
+<pre>public&nbsp;<a href="https://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/ThriftHBaseServiceHandler.html#line.486">getAllRegionLocations</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table)
                                                                                        throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                                                                                               org.apache.thrift.TException</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</code></span></div>
@@ -1358,7 +1289,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionLocation</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.thrift2.generated.THRegionLocation&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.560">getRegionLocation</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
+<pre>public&nbsp;org.apache.hadoop.hbase.thrift2.generated.THRegionLocation&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.507">getRegionLocation</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;table,
                                                                                     <a href="https://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,
                                                                                     boolean&nbsp;reload)
                                                                              throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
@@ -1384,7 +1315,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>checkReadOnlyMode</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.583">checkReadOnlyMode</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.530">checkReadOnlyMode</a>()
                         throws org.apache.hadoop.hbase.thrift2.generated.TIOError</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1398,7 +1329,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>isReadOnly</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.589">isReadOnly</a>()</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.536">isReadOnly</a>()</pre>
 </li>
 </ul>
 <a name="getTableDescriptor-org.apache.hadoop.hbase.thrift2.generated.TTableName-">
@@ -1407,7 +1338,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableDescriptor</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.594">getTableDescriptor</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;table)
+<pre>public&nbsp;org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.541">getTableDescriptor</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;table)
                                                                               throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                                                                                      org.apache.thrift.TException</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</code></span></div>
@@ -1431,7 +1362,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableDescriptors</h4>
-<pre>public&nbsp;<a href="https://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.TTableDescriptor&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.605">getTableDescriptors</a>(<a href="https://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.TTableName&gt;&nbsp;tables)
+<pre>public&nbsp;<a href="https://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.TTableDescriptor&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.552">getTableDescriptors</a>(<a href="https://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.TTableName&gt;&nbsp;tables)
                                                                                      throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                                                                                             org.apache.thrift.TException</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</code></span></div>
@@ -1455,7 +1386,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>tableExists</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.618">tableExists</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tTableName)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.565">tableExists</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tTableName)
                     throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                            org.apache.thrift.TException</pre>
 <dl>
@@ -1477,7 +1408,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableDescriptorsByPattern</h4>
-<pre>public&nbsp;<a href="https://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.TTableDescriptor&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.628">getTableDescriptorsByPattern</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex,
+<pre>public&nbsp;<a href="https://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.TTableDescriptor&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.575">getTableDescriptorsByPattern</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex,
                                                                                                      boolean&nbsp;includeSysTables)
                                                                                               throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                                                                                                      org.apache.thrift.TException</pre>
@@ -1503,7 +1434,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableDescriptorsByNamespace</h4>
-<pre>public&nbsp;<a href="https://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.TTableDescriptor&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.641">getTableDescriptorsByNamespace</a>(<a href="https://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;<a href="https://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.TTableDescriptor&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.588">getTableDescriptorsByNamespace</a>(<a href="https://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)
                                                                                                 throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                                                                                                        org.apache.thrift.TException</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</code></span></div>
@@ -1527,7 +1458,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableNamesByPattern</h4>
-<pre>public&nbsp;<a href="https://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.TTableName&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.653">getTableNamesByPattern</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex,
+<pre>public&nbsp;<a href="https://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.TTableName&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.600">getTableNamesByPattern</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex,
                                                                                          boolean&nbsp;includeSysTables)
                                                                                   throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                                                                                          org.apache.thrift.TException</pre>
@@ -1553,7 +1484,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableNamesByNamespace</h4>
-<pre>public&nbsp;<a href="https://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.TTableName&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.666">getTableNamesByNamespace</a>(<a href="https://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;<a href="https://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.TTableName&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.613">getTableNamesByNamespace</a>(<a href="https://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)
                                                                                     throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                                                                                            org.apache.thrift.TException</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</code></span></div>
@@ -1577,7 +1508,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.676">createTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor&nbsp;desc,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.623">createTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor&nbsp;desc,
                         <a href="https://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="https://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;splitKeys)
                  throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                         org.apache.thrift.TException</pre>
@@ -1603,7 +1534,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.688">deleteTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.635">deleteTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName)
                  throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                         org.apache.thrift.TException</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</code></span></div>
@@ -1625,7 +1556,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>truncateTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.698">truncateTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.645">truncateTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName,
                           boolean&nbsp;preserveSplits)
                    throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                           org.apache.thrift.TException</pre>
@@ -1649,7 +1580,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>enableTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.709">enableTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.656">enableTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName)
                  throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                         org.apache.thrift.TException</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</code></span></div>
@@ -1671,7 +1602,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>disableTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.719">disableTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.666">disableTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName)
                   throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                          org.apache.thrift.TException</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</code></span></div>
@@ -1693,7 +1624,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>isTableEnabled</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.729">isTableEnabled</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.676">isTableEnabled</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName)
                        throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                               org.apache.thrift.TException</pre>
 <dl>
@@ -1715,7 +1646,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>isTableDisabled</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.739">isTableDisabled</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.686">isTableDisabled</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName)
                         throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                                org.apache.thrift.TException</pre>
 <dl>
@@ -1737,7 +1668,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>isTableAvailable</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.749">isTableAvailable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.696">isTableAvailable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName)
                          throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                                 org.apache.thrift.TException</pre>
 <dl>
@@ -1759,7 +1690,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>isTableAvailableWithSplit</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.759">isTableAvailableWithSplit</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.706">isTableAvailableWithSplit</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName,
                                          <a href="https://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="https://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;splitKeys)
                                   throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                                          org.apache.thrift.TException</pre>
@@ -1788,7 +1719,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>addColumnFamily</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.771">addColumnFamily</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.718">addColumnFamily</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName,
                             org.apache.hadoop.hbase.thrift2.generated.TColumnFamilyDescriptor&nbsp;column)
                      throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                             org.apache.thrift.TException</pre>
@@ -1812,7 +1743,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteColumnFamily</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.783">deleteColumnFamily</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.730">deleteColumnFamily</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName,
                                <a href="https://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)
                         throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                                org.apache.thrift.TException</pre>
@@ -1836,7 +1767,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>modifyColumnFamily</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.794">modifyColumnFamily</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.741">modifyColumnFamily</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName&nbsp;tableName,
                                org.apache.hadoop.hbase.thrift2.generated.TColumnFamilyDescriptor&nbsp;column)
                         throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                                org.apache.thrift.TException</pre>
@@ -1860,7 +1791,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>modifyTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.806">modifyTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor&nbsp;desc)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.753">modifyTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor&nbsp;desc)
                  throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                         org.apache.thrift.TException</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</code></span></div>
@@ -1882,7 +1813,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>createNamespace</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.816">createNamespace</a>(org.apache.hadoop.hbase.thrift2.generated.TNamespaceDescriptor&nbsp;namespaceDesc)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.763">createNamespace</a>(org.apache.hadoop.hbase.thrift2.generated.TNamespaceDescriptor&nbsp;namespaceDesc)
                      throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                             org.apache.thrift.TException</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</code></span></div>
@@ -1905,7 +1836,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>modifyNamespace</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.826">modifyNamespace</a>(org.apache.hadoop.hbase.thrift2.generated.TNamespaceDescriptor&nbsp;namespaceDesc)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.773">modifyNamespace</a>(org.apache.hadoop.hbase.thrift2.generated.TNamespaceDescriptor&nbsp;namespaceDesc)
                      throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                             org.apache.thrift.TException</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</code></span></div>
@@ -1928,7 +1859,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteNamespace</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.836">deleteNamespace</a>(<a href="https://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/thrift2/ThriftHBaseServiceHandler.html#line.783">deleteNamespace</a>(<a href="https://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)
                      throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                             org.apache.thrift.TException</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</code></span></div>
@@ -1952,7 +1883,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getNamespaceDescriptor</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.thrift2.generated.TNamespaceDescriptor&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.845">getNamespaceDescriptor</a>(<a href="https://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;org.apache.hadoop.hbase.thrift2.generated.TNamespaceDescriptor&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.792">getNamespaceDescriptor</a>(<a href="https://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)
                                                                                       throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                                                                                              org.apache.thrift.TException</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</code></span></div>
@@ -1974,7 +1905,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>listNamespaceDescriptors</h4>
-<pre>public&nbsp;<a href="https://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.TNamespaceDescriptor&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.855">listNamespaceDescriptors</a>()
+<pre>public&nbsp;<a href="https://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.TNamespaceDescriptor&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.802">listNamespaceDescriptors</a>()
                                                                                               throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
                                                                                                      org.apache.thrift.TException</pre>
 <dl>
@@ -2017,7 +1948,7 @@ implements org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</pre>
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift2/DemoClient.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/h

<TRUNCATED>

[14/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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
deleted file mode 100644
index e692633..0000000
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html
+++ /dev/null
@@ -1,2103 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
-<title>Source code</title>
-<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
-</head>
-<body>
-<div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
-<span class="sourceLineNo">009</span> *<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *<a name="line.11"></a>
-<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
-<span class="sourceLineNo">017</span> */<a name="line.17"></a>
-<span class="sourceLineNo">018</span><a name="line.18"></a>
-<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.thrift;<a name="line.19"></a>
-<span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.util.Bytes.getBytes;<a name="line.21"></a>
-<span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.io.IOException;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.net.InetAddress;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.net.InetSocketAddress;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.net.UnknownHostException;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.nio.ByteBuffer;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.security.PrivilegedAction;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.ArrayList;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.Arrays;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.Collections;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.HashMap;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.List;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.Map;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.TreeMap;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.concurrent.BlockingQueue;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.concurrent.ExecutorService;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.concurrent.TimeUnit;<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>import javax.security.auth.callback.Callback;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import javax.security.sasl.AuthorizeCallback;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import javax.security.sasl.SaslServer;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.commons.lang3.ArrayUtils;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.conf.Configuration;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.Cell.Type;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CellBuilder;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.CellBuilderFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.HConstants;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.ServerName;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.TableName;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.client.Append;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.client.Get;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.client.OperationWithAttributes;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.client.Put;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Result;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.client.Table;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.filter.ParseFilter;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.filter.PrefixFilter;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.filter.WhileMatchFilter;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.http.HttpServerUtil;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.security.SaslUtil;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.security.SaslUtil.QualityOfProtection;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.security.SecurityUtil;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.thrift.generated.AlreadyExists;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.thrift.generated.BatchMutation;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.thrift.generated.ColumnDescriptor;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.thrift.generated.Hbase;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.thrift.generated.IOError;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.thrift.generated.IllegalArgument;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.thrift.generated.Mutation;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.thrift.generated.TAppend;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.thrift.generated.TCell;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.thrift.generated.TIncrement;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.thrift.generated.TRegionInfo;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.thrift.generated.TRowResult;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.thrift.generated.TScan;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.util.ConnectionCache;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.util.DNS;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.util.JvmPauseMonitor;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.util.Strings;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.security.SaslRpcServer.SaslGssCallbackHandler;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.security.authorize.ProxyUsers;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.thrift.TException;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.thrift.TProcessor;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.thrift.protocol.TBinaryProtocol;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.thrift.protocol.TCompactProtocol;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.thrift.protocol.TProtocolFactory;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.thrift.server.THsHaServer;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.thrift.server.TNonblockingServer;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.thrift.server.TServer;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.thrift.server.TServlet;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.thrift.server.TThreadedSelectorServer;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.thrift.transport.TFramedTransport;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.thrift.transport.TNonblockingServerSocket;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.thrift.transport.TNonblockingServerTransport;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.thrift.transport.TSaslServerTransport;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.thrift.transport.TServerSocket;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.thrift.transport.TServerTransport;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.thrift.transport.TTransportFactory;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.eclipse.jetty.http.HttpVersion;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.eclipse.jetty.server.HttpConfiguration;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.eclipse.jetty.server.HttpConnectionFactory;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.eclipse.jetty.server.SecureRequestCustomizer;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.eclipse.jetty.server.Server;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.eclipse.jetty.server.SslConnectionFactory;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.eclipse.jetty.servlet.ServletContextHandler;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.eclipse.jetty.util.ssl.SslContextFactory;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.eclipse.jetty.util.thread.QueuedThreadPool;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.slf4j.Logger;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.slf4j.LoggerFactory;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hbase.thirdparty.com.google.common.base.Joiner;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hbase.thirdparty.com.google.common.base.Splitter;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hbase.thirdparty.com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Option;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.OptionGroup;<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> * ThriftServerRunner - this class starts up a Thrift server which implements<a name="line.149"></a>
-<span class="sourceLineNo">150</span> * the Hbase API specified in the Hbase.thrift IDL file.<a name="line.150"></a>
-<span class="sourceLineNo">151</span> */<a name="line.151"></a>
-<span class="sourceLineNo">152</span>@InterfaceAudience.Private<a name="line.152"></a>
-<span class="sourceLineNo">153</span>public class ThriftServerRunner implements Runnable {<a name="line.153"></a>
-<span class="sourceLineNo">154</span><a name="line.154"></a>
-<span class="sourceLineNo">155</span>  private static final Logger LOG = LoggerFactory.getLogger(ThriftServerRunner.class);<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  private static final int DEFAULT_HTTP_MAX_HEADER_SIZE = 64 * 1024; // 64k<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  static final String SERVER_TYPE_CONF_KEY =<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      "hbase.regionserver.thrift.server.type";<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>  static final String BIND_CONF_KEY = "hbase.regionserver.thrift.ipaddress";<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  static final String COMPACT_CONF_KEY = "hbase.regionserver.thrift.compact";<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  static final String FRAMED_CONF_KEY = "hbase.regionserver.thrift.framed";<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  static final String MAX_FRAME_SIZE_CONF_KEY =<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          "hbase.regionserver.thrift.framed.max_frame_size_in_mb";<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  static final String PORT_CONF_KEY = "hbase.regionserver.thrift.port";<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  static final String COALESCE_INC_KEY = "hbase.regionserver.thrift.coalesceIncrement";<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  static final String USE_HTTP_CONF_KEY = "hbase.regionserver.thrift.http";<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  static final String HTTP_MIN_THREADS_KEY = "hbase.thrift.http_threads.min";<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  static final String HTTP_MAX_THREADS_KEY = "hbase.thrift.http_threads.max";<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  static final String THRIFT_SSL_ENABLED_KEY = "hbase.thrift.ssl.enabled";<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  static final String THRIFT_SSL_KEYSTORE_STORE_KEY = "hbase.thrift.ssl.keystore.store";<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  static final String THRIFT_SSL_KEYSTORE_PASSWORD_KEY = "hbase.thrift.ssl.keystore.password";<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  static final String THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY = "hbase.thrift.ssl.keystore.keypassword";<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  static final String THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY =<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      "hbase.thrift.ssl.exclude.cipher.suites";<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  static final String THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY =<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      "hbase.thrift.ssl.include.cipher.suites";<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  static final String THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY = "hbase.thrift.ssl.exclude.protocols";<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  static final String THRIFT_SSL_INCLUDE_PROTOCOLS_KEY = "hbase.thrift.ssl.include.protocols";<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  static final String THRIFT_SUPPORT_PROXYUSER_KEY = "hbase.thrift.support.proxyuser";<a name="line.184"></a>
-<span class="sourceLineNo">185</span><a name="line.185"></a>
-<span class="sourceLineNo">186</span>  static final String THRIFT_DNS_INTERFACE_KEY = "hbase.thrift.dns.interface";<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  static final String THRIFT_DNS_NAMESERVER_KEY = "hbase.thrift.dns.nameserver";<a name="line.187"></a>
-<span class="sourceLineNo">188</span>  static final String THRIFT_KERBEROS_PRINCIPAL_KEY = "hbase.thrift.kerberos.principal";<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  static final String THRIFT_KEYTAB_FILE_KEY = "hbase.thrift.keytab.file";<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  static final String THRIFT_SPNEGO_PRINCIPAL_KEY = "hbase.thrift.spnego.principal";<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  static final String THRIFT_SPNEGO_KEYTAB_FILE_KEY = "hbase.thrift.spnego.keytab.file";<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>   * Amount of time in milliseconds before a server thread will timeout<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * waiting for client to send data on a connected socket. Currently,<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * applies only to TBoundedThreadPoolServer<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   */<a name="line.197"></a>
-<span class="sourceLineNo">198</span>  public static final String THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY =<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    "hbase.thrift.server.socket.read.timeout";<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  public static final int THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT = 60000;<a name="line.200"></a>
-<span class="sourceLineNo">201</span><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>   * Thrift quality of protection configuration key. Valid values can be:<a name="line.204"></a>
-<span class="sourceLineNo">205</span>   * auth-conf: authentication, integrity and confidentiality checking<a name="line.205"></a>
-<span class="sourceLineNo">206</span>   * auth-int: authentication and integrity checking<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   * auth: authentication only<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   *<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   * This is used to authenticate the callers and support impersonation.<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   * The thrift server and the HBase cluster must run in secure mode.<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   */<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  static final String THRIFT_QOP_KEY = "hbase.thrift.security.qop";<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  static final String BACKLOG_CONF_KEY = "hbase.regionserver.thrift.backlog";<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>  private static final String DEFAULT_BIND_ADDR = "0.0.0.0";<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  public static final int DEFAULT_LISTEN_PORT = 9090;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  public static final int HREGION_VERSION = 1;<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>  private final int listenPort;<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>  private Configuration conf;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  volatile TServer tserver;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  volatile Server httpServer;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>  private final Hbase.Iface handler;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  private final ThriftMetrics metrics;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  private final HBaseHandler hbaseHandler;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private final UserGroupInformation serviceUGI;<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private SaslUtil.QualityOfProtection qop;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  private String host;<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>  private final boolean securityEnabled;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  private final boolean doAsEnabled;<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>  private final JvmPauseMonitor pauseMonitor;<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>  static String THRIFT_HTTP_ALLOW_OPTIONS_METHOD = "hbase.thrift.http.allow.options.method";<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  private static boolean THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT = false;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  /** An enum of server implementation selections */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  public enum ImplType {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    HS_HA("hsha", true, THsHaServer.class, true),<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    NONBLOCKING("nonblocking", true, TNonblockingServer.class, true),<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    THREAD_POOL("threadpool", false, TBoundedThreadPoolServer.class, true),<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    THREADED_SELECTOR("threadedselector", true, TThreadedSelectorServer.class, true);<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>    public static final ImplType DEFAULT = THREAD_POOL;<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>    final String option;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    final boolean isAlwaysFramed;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    final Class&lt;? extends TServer&gt; serverClass;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    final boolean canSpecifyBindIP;<a name="line.252"></a>
-<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>    private ImplType(String option, boolean isAlwaysFramed,<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        Class&lt;? extends TServer&gt; serverClass, boolean canSpecifyBindIP) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      this.option = option;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      this.isAlwaysFramed = isAlwaysFramed;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      this.serverClass = serverClass;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      this.canSpecifyBindIP = canSpecifyBindIP;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>    /**<a name="line.262"></a>
-<span class="sourceLineNo">263</span>     * @return &lt;code&gt;-option&lt;/code&gt;<a name="line.263"></a>
-<span class="sourceLineNo">264</span>     */<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    @Override<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    public String toString() {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      return "-" + option;<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>    public String getOption() {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      return option;<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>    public boolean isAlwaysFramed() {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      return isAlwaysFramed;<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>    public String getDescription() {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      StringBuilder sb = new StringBuilder("Use the " +<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          serverClass.getSimpleName());<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      if (isAlwaysFramed) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        sb.append(" This implies the framed transport.");<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      }<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      if (this == DEFAULT) {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        sb.append("This is the default.");<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      return sb.toString();<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    static OptionGroup createOptionGroup() {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      OptionGroup group = new OptionGroup();<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      for (ImplType t : values()) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        group.addOption(new Option(t.option, t.getDescription()));<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      }<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      return group;<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>    public static ImplType getServerImpl(Configuration conf) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      String confType = conf.get(SERVER_TYPE_CONF_KEY, THREAD_POOL.option);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      for (ImplType t : values()) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        if (confType.equals(t.option)) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>          return t;<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>      throw new AssertionError("Unknown server ImplType.option:" + confType);<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>    static void setServerImpl(CommandLine cmd, Configuration conf) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      ImplType chosenType = null;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      int numChosen = 0;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      for (ImplType t : values()) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        if (cmd.hasOption(t.option)) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>          chosenType = t;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>          ++numChosen;<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>      if (numChosen &lt; 1) {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>        LOG.info("Using default thrift server type");<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        chosenType = DEFAULT;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      } else if (numChosen &gt; 1) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        throw new AssertionError("Exactly one option out of " +<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          Arrays.toString(values()) + " has to be specified");<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      LOG.info("Using thrift server type " + chosenType.option);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      conf.set(SERVER_TYPE_CONF_KEY, chosenType.option);<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 String simpleClassName() {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      return serverClass.getSimpleName();<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>    public static List&lt;String&gt; serversThatCannotSpecifyBindIP() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      List&lt;String&gt; l = new ArrayList&lt;&gt;();<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      for (ImplType t : values()) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        if (!t.canSpecifyBindIP) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>          l.add(t.simpleClassName());<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      return l;<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><a name="line.342"></a>
-<span class="sourceLineNo">343</span>  public ThriftServerRunner(Configuration conf) throws IOException {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    // login the server principal (if using secure Hadoop)<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    UserProvider userProvider = UserProvider.instantiate(conf);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    securityEnabled = userProvider.isHadoopSecurityEnabled()<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        &amp;&amp; userProvider.isHBaseSecurityEnabled();<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    if (securityEnabled) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      host = Strings.domainNamePointerToHostName(DNS.getDefaultHost(<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        conf.get(THRIFT_DNS_INTERFACE_KEY, "default"),<a name="line.350"></a>
-<span class="sourceLineNo">351</span>        conf.get(THRIFT_DNS_NAMESERVER_KEY, "default")));<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      userProvider.login(THRIFT_KEYTAB_FILE_KEY, THRIFT_KERBEROS_PRINCIPAL_KEY, host);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    }<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    this.serviceUGI = userProvider.getCurrent().getUGI();<a name="line.354"></a>
-<span class="sourceLineNo">355</span><a name="line.355"></a>
-<span class="sourceLineNo">356</span>    this.conf = HBaseConfiguration.create(conf);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    this.listenPort = conf.getInt(PORT_CONF_KEY, DEFAULT_LISTEN_PORT);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    this.metrics = new ThriftMetrics(conf, ThriftMetrics.ThriftServerType.ONE);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    this.pauseMonitor = new JvmPauseMonitor(conf, this.metrics.getSource());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    this.hbaseHandler = new HBaseHandler(conf, userProvider);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    this.hbaseHandler.initMetrics(metrics);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    this.handler = HbaseHandlerMetricsProxy.newInstance(hbaseHandler, metrics, conf);<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    boolean httpEnabled = conf.getBoolean(USE_HTTP_CONF_KEY, false);<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    doAsEnabled = conf.getBoolean(THRIFT_SUPPORT_PROXYUSER_KEY, false);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    if (doAsEnabled &amp;&amp; !httpEnabled) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      LOG.warn("Fail to enable the doAs feature. " + USE_HTTP_CONF_KEY + " is not configured");<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>    String strQop = conf.get(THRIFT_QOP_KEY);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    if (strQop != null) {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      this.qop = SaslUtil.getQop(strQop);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    }<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    if (qop != null) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      if (qop != QualityOfProtection.AUTHENTICATION &amp;&amp;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>          qop != QualityOfProtection.INTEGRITY &amp;&amp;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>          qop != QualityOfProtection.PRIVACY) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>        throw new IOException(String.format("Invalid %s: It must be one of %s, %s, or %s.",<a name="line.378"></a>
-<span class="sourceLineNo">379</span>                              THRIFT_QOP_KEY,<a name="line.379"></a>
-<span class="sourceLineNo">380</span>                              QualityOfProtection.AUTHENTICATION.name(),<a name="line.380"></a>
-<span class="sourceLineNo">381</span>                              QualityOfProtection.INTEGRITY.name(),<a name="line.381"></a>
-<span class="sourceLineNo">382</span>                              QualityOfProtection.PRIVACY.name()));<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      }<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      checkHttpSecurity(qop, conf);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      if (!securityEnabled) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        throw new IOException("Thrift server must run in secure mode to support authentication");<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><a name="line.390"></a>
-<span class="sourceLineNo">391</span>  private void checkHttpSecurity(QualityOfProtection qop, Configuration conf) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    if (qop == QualityOfProtection.PRIVACY &amp;&amp;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        conf.getBoolean(USE_HTTP_CONF_KEY, false) &amp;&amp;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        !conf.getBoolean(THRIFT_SSL_ENABLED_KEY, false)) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      throw new IllegalArgumentException("Thrift HTTP Server's QoP is privacy, but " +<a name="line.395"></a>
-<span class="sourceLineNo">396</span>          THRIFT_SSL_ENABLED_KEY + " is false");<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 name="line.400"></a>
-<span class="sourceLineNo">401</span>   * Runs the Thrift server<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  @Override<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  public void run() {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    serviceUGI.doAs(new PrivilegedAction&lt;Object&gt;() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      @Override<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      public Object run() {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        try {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>          pauseMonitor.start();<a name="line.409"></a>
-<span class="sourceLineNo">410</span>          if (conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>            setupHTTPServer();<a name="line.411"></a>
-<span class="sourceLineNo">412</span>            httpServer.start();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>            httpServer.join();<a name="line.413"></a>
-<span class="sourceLineNo">414</span>          } else {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>            setupServer();<a name="line.415"></a>
-<span class="sourceLineNo">416</span>            tserver.serve();<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        } catch (Exception e) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>          LOG.error(HBaseMarkers.FATAL, "Cannot run ThriftServer", e);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>          // Crash the process if the ThriftServer is not running<a name="line.420"></a>
-<span class="sourceLineNo">421</span>          System.exit(-1);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        }<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        return null;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    });<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><a name="line.428"></a>
-<span class="sourceLineNo">429</span>  public void shutdown() {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    if (pauseMonitor != null) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      pauseMonitor.stop();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    }<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    if (tserver != null) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      tserver.stop();<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      tserver = null;<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    }<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    if (httpServer != null) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      try {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        httpServer.stop();<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        httpServer = null;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      } catch (Exception e) {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        LOG.error("Problem encountered in shutting down HTTP server", e);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      }<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      httpServer = null;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>  private void setupHTTPServer() throws IOException {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    TProcessor processor = new Hbase.Processor&lt;&gt;(handler);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    TServlet thriftHttpServlet = new ThriftHttpServlet(processor, protocolFactory, serviceUGI,<a name="line.451"></a>
-<span class="sourceLineNo">452</span>        conf, hbaseHandler, securityEnabled, doAsEnabled);<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // Set the default max thread number to 100 to limit<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    // the number of concurrent requests so that Thrfit HTTP server doesn't OOM easily.<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    // Jetty set the default max thread number to 250, if we don't set it.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    //<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    // Our default min thread number 2 is the same as that used by Jetty.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    int minThreads = conf.getInt(HTTP_MIN_THREADS_KEY, 2);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    int maxThreads = conf.getInt(HTTP_MAX_THREADS_KEY, 100);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    QueuedThreadPool threadPool = new QueuedThreadPool(maxThreads);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    threadPool.setMinThreads(minThreads);<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    httpServer = new Server(threadPool);<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>    // Context handler<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    ServletContextHandler ctxHandler = new ServletContextHandler(httpServer, "/",<a name="line.466"></a>
-<span class="sourceLineNo">467</span>            ServletContextHandler.SESSIONS);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    ctxHandler.addServlet(new ServletHolder(thriftHttpServlet), "/*");<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    HttpServerUtil.constrainHttpMethods(ctxHandler,<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      conf.getBoolean(THRIFT_HTTP_ALLOW_OPTIONS_METHOD, THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT));<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>    // set up Jetty and run the embedded server<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    HttpConfiguration httpConfig = new HttpConfiguration();<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    httpConfig.setSecureScheme("https");<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    httpConfig.setSecurePort(listenPort);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    httpConfig.setHeaderCacheSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    httpConfig.setRequestHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    httpConfig.setResponseHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    httpConfig.setSendServerVersion(false);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    httpConfig.setSendDateHeader(false);<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>    ServerConnector serverConnector;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    if(conf.getBoolean(THRIFT_SSL_ENABLED_KEY, false)) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      HttpConfiguration httpsConfig = new HttpConfiguration(httpConfig);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      httpsConfig.addCustomizer(new SecureRequestCustomizer());<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>      SslContextFactory sslCtxFactory = new SslContextFactory();<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      String keystore = conf.get(THRIFT_SSL_KEYSTORE_STORE_KEY);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      String password = HBaseConfiguration.getPassword(conf,<a name="line.489"></a>
-<span class="sourceLineNo">490</span>          THRIFT_SSL_KEYSTORE_PASSWORD_KEY, null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      String keyPassword = HBaseConfiguration.getPassword(conf,<a name="line.491"></a>
-<span class="sourceLineNo">492</span>          THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY, password);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      sslCtxFactory.setKeyStorePath(keystore);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      sslCtxFactory.setKeyStorePassword(password);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      sslCtxFactory.setKeyManagerPassword(keyPassword);<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>      String[] excludeCiphers = conf.getStrings(<a name="line.497"></a>
-<span class="sourceLineNo">498</span>          THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      if (excludeCiphers.length != 0) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        sslCtxFactory.setExcludeCipherSuites(excludeCiphers);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      }<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      String[] includeCiphers = conf.getStrings(<a name="line.502"></a>
-<span class="sourceLineNo">503</span>          THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      if (includeCiphers.length != 0) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        sslCtxFactory.setIncludeCipherSuites(includeCiphers);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      }<a name="line.506"></a>
-<span class="sourceLineNo">507</span><a name="line.507"></a>
-<span class="sourceLineNo">508</span>      // Disable SSLv3 by default due to "Poodle" Vulnerability - CVE-2014-3566<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      String[] excludeProtocols = conf.getStrings(<a name="line.509"></a>
-<span class="sourceLineNo">510</span>          THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY, "SSLv3");<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      if (excludeProtocols.length != 0) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        sslCtxFactory.setExcludeProtocols(excludeProtocols);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      String[] includeProtocols = conf.getStrings(<a name="line.514"></a>
-<span class="sourceLineNo">515</span>          THRIFT_SSL_INCLUDE_PROTOCOLS_KEY, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      if (includeProtocols.length != 0) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>        sslCtxFactory.setIncludeProtocols(includeProtocols);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      }<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>      serverConnector = new ServerConnector(httpServer,<a name="line.520"></a>
-<span class="sourceLineNo">521</span>          new SslConnectionFactory(sslCtxFactory, HttpVersion.HTTP_1_1.toString()),<a name="line.521"></a>
-<span class="sourceLineNo">522</span>          new HttpConnectionFactory(httpsConfig));<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    } else {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      serverConnector = new ServerConnector(httpServer, new HttpConnectionFactory(httpConfig));<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    serverConnector.setPort(listenPort);<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    serverConnector.setHost(getBindAddress(conf).getHostAddress());<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    httpServer.addConnector(serverConnector);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    httpServer.setStopAtShutdown(true);<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>    if (doAsEnabled) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      ProxyUsers.refreshSuperUserGroupsConfiguration(conf);<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>    LOG.info("Starting Thrift HTTP Server on {}", Integer.toString(listenPort));<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>   * Setting up the thrift TServer<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  private void setupServer() throws Exception {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    // Construct correct ProtocolFactory<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    TProtocolFactory protocolFactory = getProtocolFactory();<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    final TProcessor p = new Hbase.Processor&lt;&gt;(handler);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    ImplType implType = ImplType.getServerImpl(conf);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    TProcessor processor = p;<a name="line.547"></a>
-<span class="sourceLineNo">548</span><a name="line.548"></a>
-<span class="sourceLineNo">549</span>    // Construct correct TransportFactory<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    TTransportFactory transportFactory;<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    if (conf.getBoolean(FRAMED_CONF_KEY, false) || implType.isAlwaysFramed) {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      if (qop != null) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        throw new RuntimeException("Thrift server authentication"<a name="line.553"></a>
-<span class="sourceLineNo">554</span>          + " doesn't work with framed transport yet");<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      transportFactory = new TFramedTransport.Factory(<a name="line.556"></a>
-<span class="sourceLineNo">557</span>          conf.getInt(MAX_FRAME_SIZE_CONF_KEY, 2)  * 1024 * 1024);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      LOG.debug("Using framed transport");<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    } else if (qop == null) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      transportFactory = new TTransportFactory();<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    } else {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      // Extract the name from the principal<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      String thriftKerberosPrincipal = conf.get(THRIFT_KERBEROS_PRINCIPAL_KEY);<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      if (thriftKerberosPrincipal == null) {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>        throw new IllegalArgumentException(THRIFT_KERBEROS_PRINCIPAL_KEY + " cannot be null");<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      }<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      String name = SecurityUtil.getUserFromPrincipal(thriftKerberosPrincipal);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      Map&lt;String, String&gt; saslProperties = SaslUtil.initSaslProperties(qop.name());<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      TSaslServerTransport.Factory saslFactory = new TSaslServerTransport.Factory();<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      saslFactory.addServerDefinition("GSSAPI", name, host, saslProperties,<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        new SaslGssCallbackHandler() {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>          @Override<a name="line.572"></a>
-<span class="sourceLineNo">573</span>          public void handle(Callback[] callbacks)<a name="line.573"></a>
-<span class="sourceLineNo">574</span>              throws UnsupportedCallbackException {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>            AuthorizeCallback ac = null;<a name="line.575"></a>
-<span class="sourceLineNo">576</span>            for (Callback callback : callbacks) {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>              if (callback instanceof AuthorizeCallback) {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>                ac = (AuthorizeCallback) callback;<a name="line.578"></a>
-<span class="sourceLineNo">579</span>              } else {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>                throw new UnsupportedCallbackException(callback,<a name="line.580"></a>
-<span class="sourceLineNo">581</span>                    "Unrecognized SASL GSSAPI Callback");<a name="line.581"></a>
-<span class="sourceLineNo">582</span>              }<a name="line.582"></a>
-<span class="sourceLineNo">583</span>            }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>            if (ac != null) {<a name="line.584"></a>
-<span class="sourceLineNo">585</span>              String authid = ac.getAuthenticationID();<a name="line.585"></a>
-<span class="sourceLineNo">586</span>              String authzid = ac.getAuthorizationID();<a name="line.586"></a>
-<span class="sourceLineNo">587</span>              if (!authid.equals(authzid)) {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>                ac.setAuthorized(false);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>              } else {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>                ac.setAuthorized(true);<a name="line.590"></a>
-<span class="sourceLineNo">591</span>                String userName = SecurityUtil.getUserFromPrincipal(authzid);<a name="line.591"></a>
-<span class="sourceLineNo">592</span>                LOG.info("Effective user: {}", userName);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>                ac.setAuthorizedID(userName);<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>          }<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        });<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      transportFactory = saslFactory;<a name="line.598"></a>
-<span class="sourceLineNo">599</span><a name="line.599"></a>
-<span class="sourceLineNo">600</span>      // Create a processor wrapper, to get the caller<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      processor = (inProt, outProt) -&gt; {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>        TSaslServerTransport saslServerTransport =<a name="line.602"></a>
-<span class="sourceLineNo">603</span>          (TSaslServerTransport)inProt.getTransport();<a name="line.603"></a>
-<span class="sourceLineNo">604</span>        SaslServer saslServer = saslServerTransport.getSaslServer();<a name="line.604"></a>
-<span class="sourceLineNo">605</span>        String principal = saslServer.getAuthorizationID();<a name="line.605"></a>
-<span class="sourceLineNo">606</span>        hbaseHandler.setEffectiveUser(principal);<a name="line.606"></a>
-<span class="sourceLineNo">607</span>        return p.process(inProt, outProt);<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      };<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    }<a name="line.609"></a>
-<span class="sourceLineNo">610</span><a name="line.610"></a>
-<span class="sourceLineNo">611</span>    if (conf.get(BIND_CONF_KEY) != null &amp;&amp; !implType.canSpecifyBindIP) {<a name="line.611"></a>
-<span class="sourceLineNo">612</span>      LOG.error("Server types {} don't support IP address binding at the moment. See " +<a name="line.612"></a>
-<span class="sourceLineNo">613</span>          "https://issues.apache.org/jira/browse/HBASE-2155 for details.",<a name="line.613"></a>
-<span class="sourceLineNo">614</span>          Joiner.on(", ").join(ImplType.serversThatCannotSpecifyBindIP()));<a name="line.614"></a>
-<span class="sourceLineNo">615</span>      throw new RuntimeException("-" + BIND_CONF_KEY + " not supported with " + implType);<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>
-<span class="sourceLineNo">618</span>    // Thrift's implementation uses '0' as a placeholder for 'use the default.'<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    int backlog = conf.getInt(BACKLOG_CONF_KEY, 0);<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>    if (implType == ImplType.HS_HA || implType == ImplType.NONBLOCKING ||<a name="line.621"></a>
-<span class="sourceLineNo">622</span>        implType == ImplType.THREADED_SELECTOR) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      InetAddress listenAddress = getBindAddress(conf);<a name="line.623"></a>
-<span class="sourceLineNo">624</span>      TNonblockingServerTransport serverTransport = new TNonblockingServerSocket(<a name="line.624"></a>
-<span class="sourceLineNo">625</span>          new InetSocketAddress(listenAddress, listenPort));<a name="line.625"></a>
-<span class="sourceLineNo">626</span><a name="line.626"></a>
-<span class="sourceLineNo">627</span>      if (implType == ImplType.NONBLOCKING) {<a name="line.627"></a>
-<span class="sourceLineNo">628</span>        TNonblockingServer.Args serverArgs =<a name="line.628"></a>
-<span class="sourceLineNo">629</span>            new TNonblockingServer.Args(serverTransport);<a name="line.629"></a>
-<span class="sourceLineNo">630</span>        serverArgs.processor(processor)<a name="line.630"></a>
-<span class="sourceLineNo">631</span>                  .transportFactory(transportFactory)<a name="line.631"></a>
-<span class="sourceLineNo">632</span>                  .protocolFactory(protocolFactory);<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        tserver = new TNonblockingServer(serverArgs);<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      } else if (implType == ImplType.HS_HA) {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>        THsHaServer.Args serverArgs = new THsHaServer.Args(serverTransport);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>        CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.636"></a>
-<span class="sourceLineNo">637</span>        ExecutorService executorService = createExecutor(<a name="line.637"></a>
-<span class="sourceLineNo">638</span>            callQueue, serverArgs.getMaxWorkerThreads(), serverArgs.getMaxWorkerThreads());<a name="line.638"></a>
-<span class="sourceLineNo">639</span>        serverArgs.executorService(executorService).processor(processor)<a name="line.639"></a>
-<span class="sourceLineNo">640</span>                .transportFactory(transportFactory).protocolFactory(protocolFactory);<a name="line.640"></a>
-<span class="sourceLineNo">641</span>        tserver = new THsHaServer(serverArgs);<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      } else { // THREADED_SELECTOR<a name="line.642"></a>
-<span class="sourceLineNo">643</span>        TThreadedSelectorServer.Args serverArgs =<a name="line.643"></a>
-<span class="sourceLineNo">644</span>            new HThreadedSelectorServerArgs(serverTransport, conf);<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        ExecutorService executorService = createExecutor(<a name="line.646"></a>
-<span class="sourceLineNo">647</span>            callQueue, serverArgs.getWorkerThreads(), serverArgs.getWorkerThreads());<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        serverArgs.executorService(executorService).processor(processor)<a name="line.648"></a>
-<span class="sourceLineNo">649</span>                .transportFactory(transportFactory).protocolFactory(protocolFactory);<a name="line.649"></a>
-<span class="sourceLineNo">650</span>        tserver = new TThreadedSelectorServer(serverArgs);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      }<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      LOG.info("starting HBase {} server on {}", implType.simpleClassName(),<a name="line.652"></a>
-<span class="sourceLineNo">653</span>          Integer.toString(listenPort));<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    } else if (implType == ImplType.THREAD_POOL) {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      // Thread pool server. Get the IP address to bind to.<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      InetAddress listenAddress = getBindAddress(conf);<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      int readTimeout = conf.getInt(THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY,<a name="line.657"></a>
-<span class="sourceLineNo">658</span>          THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT);<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      TServerTransport serverTransport = new TServerSocket(<a name="line.659"></a>
-<span class="sourceLineNo">660</span>          new TServerSocket.ServerSocketTransportArgs().<a name="line.660"></a>
-<span class="sourceLineNo">661</span>              bindAddr(new InetSocketAddress(listenAddress, listenPort)).backlog(backlog).<a name="line.661"></a>
-<span class="sourceLineNo">662</span>              clientTimeout(readTimeout));<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>      TBoundedThreadPoolServer.Args serverArgs =<a name="line.664"></a>
-<span class="sourceLineNo">665</span>          new TBoundedThreadPoolServer.Args(serverTransport, conf);<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      serverArgs.processor(processor).transportFactory(transportFactory)<a name="line.666"></a>
-<span class="sourceLineNo">667</span>              .protocolFactory(protocolFactory);<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      LOG.info("starting " + ImplType.THREAD_POOL.simpleClassName() + " on "<a name="line.668"></a>
-<span class="sourceLineNo">669</span>          + listenAddress + ":" + Integer.toString(listenPort)<a name="line.669"></a>
-<span class="sourceLineNo">670</span>          + " with readTimeout " + readTimeout + "ms; " + serverArgs);<a name="line.670"></a>
-<span class="sourceLineNo">671</span>      this.tserver = new TBoundedThreadPoolServer(serverArgs, metrics);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    } else {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      throw new AssertionError("Unsupported Thrift server implementation: " +<a name="line.673"></a>
-<span class="sourceLineNo">674</span>          implType.simpleClassName());<a name="line.674"></a>
-<span class="sourceLineNo">675</span>    }<a name="line.675"></a>
-<span class="sourceLineNo">676</span><a name="line.676"></a>
-<span class="sourceLineNo">677</span>    // A sanity check that we instantiated the right type of server.<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    if (tserver.getClass() != implType.serverClass) {<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      throw new AssertionError("Expected to create Thrift server class " +<a name="line.679"></a>
-<span class="sourceLineNo">680</span>          implType.serverClass.getName() + " but got " +<a name="line.680"></a>
-<span class="sourceLineNo">681</span>          tserver.getClass().getName());<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    }<a name="line.682"></a>
-<span class="sourceLineNo">683</span><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>    registerFilters(conf);<a name="line.686"></a>
-<span class="sourceLineNo">687</span>  }<a name="line.687"></a>
-<span class="sourceLineNo">688</span><a name="line.688"></a>
-<span class="sourceLineNo">689</span>  private TProtocolFactory getProtocolFactory() {<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    TProtocolFactory protocolFactory;<a name="line.690"></a>
-<span class="sourceLineNo">691</span><a name="line.691"></a>
-<span class="sourceLineNo">692</span>    if (conf.getBoolean(COMPACT_CONF_KEY, false)) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>      LOG.debug("Using compact protocol");<a name="line.693"></a>
-<span class="sourceLineNo">694</span>      protocolFactory = new TCompactProtocol.Factory();<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    } else {<a name="line.695"></a>
-<span class="sourceLineNo">696</span>      LOG.debug("Using binary protocol");<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      protocolFactory = new TBinaryProtocol.Factory();<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    }<a name="line.698"></a>
-<span class="sourceLineNo">699</span><a name="line.699"></a>
-<span class="sourceLineNo">700</span>    return protocolFactory;<a name="line.700"></a>
-<span class="sourceLineNo">701</span>  }<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>  ExecutorService createExecutor(BlockingQueue&lt;Runnable&gt; callQueue,<a name="line.703"></a>
-<span class="sourceLineNo">704</span>                                 int minWorkers, int maxWorkers) {<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    ThreadFactoryBuilder tfb = new ThreadFactoryBuilder();<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    tfb.setDaemon(true);<a name="line.706"></a>
-<span class="sourceLineNo">707</span>    tfb.setNameFormat("thrift-worker-%d");<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    ThreadPoolExecutor threadPool = new THBaseThreadPoolExecutor(minWorkers, maxWorkers,<a name="line.708"></a>
-<span class="sourceLineNo">709</span>            Long.MAX_VALUE, TimeUnit.SECONDS, callQueue, tfb.build(), metrics);<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    threadPool.allowCoreThreadTimeOut(true);<a name="line.710"></a>
-<span class="sourceLineNo">711</span>    return threadPool;<a name="line.711"></a>
-<span class="sourceLineNo">712</span>  }<a name="line.712"></a>
-<span class="sourceLineNo">713</span><a name="line.713"></a>
-<span class="sourceLineNo">714</span>  private InetAddress getBindAddress(Configuration conf)<a name="line.714"></a>
-<span class="sourceLineNo">715</span>      throws UnknownHostException {<a name="line.715"></a>
-<span class="sourceLineNo">716</span>    String bindAddressStr = conf.get(BIND_CONF_KEY, DEFAULT_BIND_ADDR);<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    return InetAddress.getByName(bindAddressStr);<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
-<span class="sourceLineNo">719</span><a name="line.719"></a>
-<span class="sourceLineNo">720</span>  protected static class ResultScannerWrapper {<a name="line.720"></a>
-<span class="sourceLineNo">721</span><a name="line.721"></a>
-<span class="sourceLineNo">722</span>    private final ResultScanner scanner;<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    private final boolean sortColumns;<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    public ResultScannerWrapper(ResultScanner resultScanner,<a name="line.724"></a>
-<span class="sourceLineNo">725</span>                                boolean sortResultColumns) {<a name="line.725"></a>
-<span class="sourceLineNo">726</span>      scanner = resultScanner;<a name="line.726"></a>
-<span class="sourceLineNo">727</span>      sortColumns = sortResultColumns;<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>    public ResultScanner getScanner() {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      return scanner;<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>    public boolean isColumnSorted() {<a name="line.734"></a>
-<span class="sourceLineNo">735</span>      return sortColumns;<a name="line.735"></a>
-<span class="sourceLineNo">736</span>    }<a name="line.736"></a>
-<span class="sourceLineNo">737</span>  }<a name="line.737"></a>
-<span class="sourceLineNo">738</span><a name="line.738"></a>
-<span class="sourceLineNo">739</span>  /**<a name="line.739"></a>
-<span class="sourceLineNo">740</span>   * The HBaseHandler is a glue object that connects Thrift RPC calls to the<a name="line.740"></a>
-<span class="sourceLineNo">741</span>   * HBase client API primarily defined in the Admin and Table objects.<a name="line.741"></a>
-<span class="sourceLineNo">742</span>   */<a name="line.742"></a>
-<span class="sourceLineNo">743</span>  public static class HBaseHandler implements Hbase.Iface {<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    protected Configuration conf;<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    protected static final Logger LOG = LoggerFactory.getLogger(HBaseHandler.class);<a name="line.745"></a>
-<span class="sourceLineNo">746</span><a name="line.746"></a>
-<span class="sourceLineNo">747</span>    // nextScannerId and scannerMap are used to manage scanner state<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    protected int nextScannerId = 0;<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    protected HashMap&lt;Integer, ResultScannerWrapper&gt; scannerMap;<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    private ThriftMetrics metrics = null;<a name="line.750"></a>
-<span class="sourceLineNo">751</span><a name="line.751"></a>
-<span class="sourceLineNo">752</span>    private final ConnectionCache connectionCache;<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    IncrementCoalescer coalescer;<a name="line.753"></a>
-<span class="sourceLineNo">754</span><a name="line.754"></a>
-<span class="sourceLineNo">755</span>    static final String CLEANUP_INTERVAL = "hbase.thrift.connection.cleanup-interval";<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    static final String MAX_IDLETIME = "hbase.thrift.connection.max-idletime";<a name="line.756"></a>
-<span class="sourceLineNo">757</span><a name="line.757"></a>
-<span class="sourceLineNo">758</span>    /**<a name="line.758"></a>
-<span class="sourceLineNo">759</span>     * Returns a list of all the column families for a given Table.<a name="line.759"></a>
-<span class="sourceLineNo">760</span>     *<a name="line.760"></a>
-<span class="sourceLineNo">761</span>     * @param table<a name="line.761"></a>
-<span class="sourceLineNo">762</span>     * @throws IOException<a name="line.762"></a>
-<span class="sourceLineNo">763</span>     */<a name="line.763"></a>
-<span class="sourceLineNo">764</span>    byte[][] getAllColumns(Table table) throws IOException {<a name="line.764"></a>
-<span class="sourceLineNo">765</span>      HColumnDescriptor[] cds = table.getTableDescriptor().getColumnFamilies();<a name="line.765"></a>
-<span class="sourceLineNo">766</span>      byte[][] columns = new byte[cds.length][];<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      for (int i = 0; i &lt; cds.length; i++) {<a name="line.767"></a>
-<span class="sourceLineNo">768</span>        columns[i] = Bytes.add(cds[i].getName(),<a name="line.768"></a>
-<span class="sourceLineNo">769</span>            KeyValue.COLUMN_FAMILY_DELIM_ARRAY);<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      }<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      return columns;<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    }<a name="line.772"></a>
-<span class="sourceLineNo">773</span><a name="line.773"></a>
-<span class="sourceLineNo">774</span>    /**<a name="line.774"></a>
-<span class="sourceLineNo">775</span>     * Creates and returns a Table instance from a given table name.<a name="line.775"></a>
-<span class="sourceLineNo">776</span>     *<a name="line.776"></a>
-<span class="sourceLineNo">777</span>     * @param tableName<a name="line.777"></a>
-<span class="sourceLineNo">778</span>     *          name of table<a name="line.778"></a>
-<span class="sourceLineNo">779</span>     * @return Table object<a name="line.779"></a>
-<span class="sourceLineNo">780</span>     * @throws IOException if getting the table fails<a name="line.780"></a>
-<span class="sourceLineNo">781</span>     */<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    public Table getTable(final byte[] tableName) throws IOException {<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      String table = Bytes.toString(tableName);<a name="line.783"></a>
-<span class="sourceLineNo">784</span>      return connectionCache.getTable(table);<a name="line.784"></a>
-<span class="sourceLineNo">785</span>    }<a name="line.785"></a>
-<span class="sourceLineNo">786</span><a name="line.786"></a>
-<span class="sourceLineNo">787</span>    public Table getTable(final ByteBuffer tableName) throws IOException {<a name="line.787"></a>
-<span class="sourceLineNo">788</span>      return getTable(getBytes(tableName));<a name="line.788"></a>
-<span class="sourceLineNo">789</span>    }<a name="line.789"></a>
-<span class="sourceLineNo">790</span><a name="line.790"></a>
-<span class="sourceLineNo">791</span>    /**<a name="line.791"></a>
-<span class="sourceLineNo">792</span>     * Assigns a unique ID to the scanner and adds the mapping to an internal<a name="line.792"></a>
-<span class="sourceLineNo">793</span>     * hash-map.<a name="line.793"></a>
-<span class="sourceLineNo">794</span>     *<a name="line.794"></a>
-<span class="sourceLineNo">795</span>     * @param scanner the {@link ResultScanner} to add<a name="line.795"></a>
-<span class="sourceLineNo">796</span>     * @return integer scanner id<a name="line.796"></a>
-<span class="sourceLineNo">797</span>     */<a name="line.797"></a>
-<span class="sourceLineNo">798</span>    protected synchronized int addScanner(ResultScanner scanner, boolean sortColumns) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>      int id = nextScannerId++;<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      ResultScannerWrapper resultScannerWrapper = new ResultScannerWrapper(scanner, sortColumns);<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      scannerMap.put(id, resultScannerWrapper);<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      return id;<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    }<a name="line.803"></a>
-<span class="sourceLineNo">804</span><a name="line.804"></a>
-<span class="sourceLineNo">805</span>    /**<a name="line.805"></a>
-<span class="sourceLineNo">806</span>     * Returns the scanner associated with the specified ID.<a name="line.806"></a>
-<span class="sourceLineNo">807</span>     *<a name="line.807"></a>
-<span class="sourceLineNo">808</span>     * @param id the ID of the scanner to get<a name="line.808"></a>
-<span class="sourceLineNo">809</span>     * @return a Scanner, or null if ID was invalid.<a name="line.809"></a>
-<span class="sourceLineNo">810</span>     */<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    protected synchronized ResultScannerWrapper getScanner(int id) {<a name="line.811"></a>
-<span class="sourceLineNo">812</span>      return scannerMap.get(id);<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    }<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>     * Removes the scanner associated with the specified ID from the internal<a name="line.816"></a>
-<span class="sourceLineNo">817</span>     * id-&amp;gt;scanner hash-map.<a name="line.817"></a>
-<span class="sourceLineNo">818</span>     *<a name="line.818"></a>
-<span class="sourceLineNo">819</span>     * @param id the ID of the scanner to remove<a name="line.819"></a>
-<span class="sourceLineNo">820</span>     * @return a Scanner, or null if ID was invalid.<a name="line.820"></a>
-<span class="sourceLineNo">821</span>     */<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    protected synchronized ResultScannerWrapper removeScanner(int id) {<a name="line.822"></a>
-<span class="sourceLineNo">823</span>      return scannerMap.remove(id);<a name="line.823"></a>
-<span class="sourceLineNo">824</span>    }<a name="line.824"></a>
-<span class="sourceLineNo">825</span><a name="line.825"></a>
-<span class="sourceLineNo">826</span>    protected HBaseHandler(final Configuration c,<a name="line.826"></a>
-<span class="sourceLineNo">827</span>        final UserProvider userProvider) throws IOException {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      this.conf = c;<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      scannerMap = new HashMap&lt;&gt;();<a name="line.829"></a>
-<span class="sourceLineNo">830</span>      this.coalescer = new IncrementCoalescer(this);<a name="line.830"></a>
-<span class="sourceLineNo">831</span><a name="line.831"></a>
-<span class="sourceLineNo">832</span>      int cleanInterval = conf.getInt(CLEANUP_INTERVAL, 10 * 1000);<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      int maxIdleTime = conf.getInt(MAX_IDLETIME, 10 * 60 * 1000);<a name="line.833"></a>
-<span class="sourceLineNo">834</span>      connectionCache = new ConnectionCache(<a name="line.834"></a>
-<span class="sourceLineNo">835</span>        conf, userProvider, cleanInterval, maxIdleTime);<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span><a name="line.837"></a>
-<span class="sourceLineNo">838</span>    /**<a name="line.838"></a>
-<span class="sourceLineNo">839</span>     * Obtain HBaseAdmin. Creates the instance if it is not already created.<a name="line.839"></a>
-<span class="sourceLineNo">840</span>     */<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    private Admin getAdmin() throws IOException {<a name="line.841"></a>
-<span class="sourceLineNo">842</span>      return connectionCache.getAdmin();<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    }<a name="line.843"></a>
-<span class="sourceLineNo">844</span><a name="line.844"></a>
-<span class="sourceLineNo">845</span>    void setEffectiveUser(String effectiveUser) {<a name="line.845"></a>
-<span class="sourceLineNo">846</span>      connectionCache.setEffectiveUser(effectiveUser);<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>    @Override<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    public void enableTable(ByteBuffer tableName) throws IOError {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      try{<a name="line.851"></a>
-<span class="sourceLineNo">852</span>        getAdmin().enableTable(getTableName(tableName));<a name="line.852"></a>
-<span class="sourceLineNo">853</span>      } catch (IOException e) {<a name="line.853"></a>
-<span class="sourceLineNo">854</span>        LOG.warn(e.getMessage(), e);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>        throw getIOError(e);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      }<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    }<a name="line.857"></a>
-<span class="sourceLineNo">858</span><a name="line.858"></a>
-<span class="sourceLineNo">859</span>    @Override<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    public void disableTable(ByteBuffer tableName) throws IOError{<a name="line.860"></a>
-<span class="sourceLineNo">861</span>      try{<a name="line.861"></a>
-<span class="sourceLineNo">862</span>        getAdmin().disableTable(getTableName(tableName));<a name="line.862"></a>
-<span class="sourceLineNo">863</span>      } catch (IOException e) {<a name="line.863"></a>
-<span class="sourceLineNo">864</span>        LOG.warn(e.getMessage(), e);<a name="line.864"></a>
-<span class="sourceLineNo">865</span>        throw getIOError(e);<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><a name="line.868"></a>
-<span class="sourceLineNo">869</span>    @Override<a name="line.869"></a>
-<span class="sourceLineNo">870</span>    public boolean isTableEnabled(ByteBuffer tableName) throws IOError {<a name="line.870"></a>
-<span class="sourceLineNo">871</span>      try {<a name="line.871"></a>
-<span class="sourceLineNo">872</span>        return this.connectionCache

<TRUNCATED>

[35/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/class-use/HBaseServiceHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/HBaseServiceHandler.html b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/HBaseServiceHandler.html
new file mode 100644
index 0000000..0a22131
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/HBaseServiceHandler.html
@@ -0,0 +1,245 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.thrift.HBaseServiceHandler (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.thrift.HBaseServiceHandler (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/HBaseServiceHandler.html" target="_top">Frames</a></li>
+<li><a href="HBaseServiceHandler.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.thrift.HBaseServiceHandler" class="title">Uses of Class<br>org.apache.hadoop.hbase.thrift.HBaseServiceHandler</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift">org.apache.hadoop.hbase.thrift</a></td>
+<td class="colLast">
+<div class="block">Provides an HBase <a href="http://incubator.apache.org/thrift/">Thrift</a>
+service.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift2">org.apache.hadoop.hbase.thrift2</a></td>
+<td class="colLast">
+<div class="block">Provides an HBase <a href="http://thrift.apache.org/">Thrift</a>
+service.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.thrift">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
+<caption><span>Fields in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a> declared as <a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ThriftHttpServlet.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html#handler">handler</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ThriftServer.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#hbaseServiceHandler">hbaseServiceHandler</a></span></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a> that return <a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ThriftServer.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#createHandler-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.UserProvider-">createHandler</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+             <a href="../../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a>&nbsp;userProvider)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing constructors, and an explanation">
+<caption><span>Constructors in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a> with parameters of type <a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html#ThriftHttpServlet-org.apache.thrift.TProcessor-org.apache.thrift.protocol.TProtocolFactory-org.apache.hadoop.security.UserGroupInformation-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.thrift.HBaseServiceHandler-boolean-boolean-">ThriftHttpServlet</a></span>(org.apache.thrift.TProcessor&nbsp;processor,
+                 org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
+                 org.apache.hadoop.security.UserGroupInformation&nbsp;serviceUGI,
+                 org.apache.hadoop.conf.Configuration&nbsp;conf,
+                 <a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a>&nbsp;handler,
+                 boolean&nbsp;securityEnabled,
+                 boolean&nbsp;doAsEnabled)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList"><a name="org.apache.hadoop.hbase.thrift2">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing subclasses, and an explanation">
+<caption><span>Subclasses of <a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler</a></span></code>
+<div class="block">This class is a glue object that connects Thrift RPC calls to the HBase client API primarily
+ defined in the Table interface.</div>
+</td>
+</tr>
+</tbody>
+</table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a> that return <a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ThriftServer.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html#createHandler-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.UserProvider-">createHandler</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+             <a href="../../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a>&nbsp;userProvider)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/HBaseServiceHandler.html" target="_top">Frames</a></li>
+<li><a href="HBaseServiceHandler.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ImplType.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ImplType.html b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ImplType.html
new file mode 100644
index 0000000..65cdebb
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ImplType.html
@@ -0,0 +1,194 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.thrift.ImplType (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.thrift.ImplType (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/ImplType.html" target="_top">Frames</a></li>
+<li><a href="ImplType.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.thrift.ImplType" class="title">Uses of Class<br>org.apache.hadoop.hbase.thrift.ImplType</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift">org.apache.hadoop.hbase.thrift</a></td>
+<td class="colLast">
+<div class="block">Provides an HBase <a href="http://incubator.apache.org/thrift/">Thrift</a>
+service.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.thrift">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
+<caption><span>Fields in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a> declared as <a href="../../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ImplType.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ImplType.html#DEFAULT">DEFAULT</a></span></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a> that return <a href="../../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ImplType.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ImplType.html#getServerImpl-org.apache.hadoop.conf.Configuration-">getServerImpl</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ImplType.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ImplType.html#valueOf-java.lang.String-">valueOf</a></span>(<a href="https://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)</code>
+<div class="block">Returns the enum constant of this type with the specified name.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a>[]</code></td>
+<td class="colLast"><span class="typeNameLabel">ImplType.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ImplType.html#values--">values</a></span>()</code>
+<div class="block">Returns an array containing the constants of this enum type, in
+the order they are declared.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/ImplType.html" target="_top">Frames</a></li>
+<li><a href="ImplType.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/class-use/IncrementCoalescer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/IncrementCoalescer.html b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/IncrementCoalescer.html
index 20635de..d7d977f 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/IncrementCoalescer.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/IncrementCoalescer.html
@@ -107,7 +107,7 @@ service.</div>
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.html" title="class in org.apache.hadoop.hbase.thrift">IncrementCoalescer</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.HBaseHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#coalescer">coalescer</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">ThriftHBaseServiceHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#coalescer">coalescer</a></span></code>&nbsp;</td>
 </tr>
 </tbody>
 </table>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftHBaseServiceHandler.IOErrorWithCause.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftHBaseServiceHandler.IOErrorWithCause.html b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftHBaseServiceHandler.IOErrorWithCause.html
new file mode 100644
index 0000000..c728067
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftHBaseServiceHandler.IOErrorWithCause.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler.IOErrorWithCause (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler.IOErrorWithCause (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/ThriftHBaseServiceHandler.IOErrorWithCause.html" target="_top">Frames</a></li>
+<li><a href="ThriftHBaseServiceHandler.IOErrorWithCause.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler.IOErrorWithCause" class="title">Uses of Class<br>org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler.IOErrorWithCause</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler.IOErrorWithCause</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/ThriftHBaseServiceHandler.IOErrorWithCause.html" target="_top">Frames</a></li>
+<li><a href="ThriftHBaseServiceHandler.IOErrorWithCause.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftHBaseServiceHandler.ResultScannerWrapper.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftHBaseServiceHandler.ResultScannerWrapper.html b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftHBaseServiceHandler.ResultScannerWrapper.html
new file mode 100644
index 0000000..6a95ead
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftHBaseServiceHandler.ResultScannerWrapper.html
@@ -0,0 +1,190 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler.ResultScannerWrapper (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler.ResultScannerWrapper (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/ThriftHBaseServiceHandler.ResultScannerWrapper.html" target="_top">Frames</a></li>
+<li><a href="ThriftHBaseServiceHandler.ResultScannerWrapper.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler.ResultScannerWrapper" class="title">Uses of Class<br>org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler.ResultScannerWrapper</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.ResultScannerWrapper</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift">org.apache.hadoop.hbase.thrift</a></td>
+<td class="colLast">
+<div class="block">Provides an HBase <a href="http://incubator.apache.org/thrift/">Thrift</a>
+service.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.thrift">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.ResultScannerWrapper</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
+<caption><span>Fields in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a> with type parameters of type <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.ResultScannerWrapper</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="https://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="https://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/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.ResultScannerWrapper</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">ThriftHBaseServiceHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#scannerMap">scannerMap</a></span></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a> that return <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.ResultScannerWrapper</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.ResultScannerWrapper</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ThriftHBaseServiceHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getScanner-int-">getScanner</a></span>(int&nbsp;id)</code>
+<div class="block">Returns the scanner associated with the specified ID.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.ResultScannerWrapper</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ThriftHBaseServiceHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#removeScanner-int-">removeScanner</a></span>(int&nbsp;id)</code>
+<div class="block">Removes the scanner associated with the specified ID from the internal
+ id-&gt;scanner hash-map.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/ThriftHBaseServiceHandler.ResultScannerWrapper.html" target="_top">Frames</a></li>
+<li><a href="ThriftHBaseServiceHandler.ResultScannerWrapper.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftHBaseServiceHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftHBaseServiceHandler.html b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftHBaseServiceHandler.html
new file mode 100644
index 0000000..6d98f77
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftHBaseServiceHandler.html
@@ -0,0 +1,179 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/ThriftHBaseServiceHandler.html" target="_top">Frames</a></li>
+<li><a href="ThriftHBaseServiceHandler.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler" class="title">Uses of Class<br>org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift">org.apache.hadoop.hbase.thrift</a></td>
+<td class="colLast">
+<div class="block">Provides an HBase <a href="http://incubator.apache.org/thrift/">Thrift</a>
+service.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.thrift">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
+<caption><span>Fields in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a> declared as <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></code></td>
+<td class="colLast"><span class="typeNameLabel">IncrementCoalescer.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#handler">handler</a></span></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing constructors, and an explanation">
+<caption><span>Constructors in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a> with parameters of type <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#IncrementCoalescer-org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler-">IncrementCoalescer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a>&nbsp;hand)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/ThriftHBaseServiceHandler.html" target="_top">Frames</a></li>
+<li><a href="ThriftHBaseServiceHandler.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 6d63300..cebabd0 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftMetrics.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftMetrics.html
@@ -89,13 +89,6 @@
 service.</div>
 </td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift2">org.apache.hadoop.hbase.thrift2</a></td>
-<td class="colLast">
-<div class="block">Provides an HBase <a href="http://thrift.apache.org/">Thrift</a>
-service.</div>
-</td>
-</tr>
 </tbody>
 </table>
 </li>
@@ -113,20 +106,20 @@ service.</div>
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a></code></td>
-<td class="colLast"><span class="typeNameLabel">HbaseHandlerMetricsProxy.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#metrics">metrics</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ThriftServer.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html#metrics">metrics</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a></code></td>
-<td class="colLast"><span class="typeNameLabel">THBaseThreadPoolExecutor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/THBaseThreadPoolExecutor.html#metrics">metrics</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">HbaseHandlerMetricsProxy.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#metrics">metrics</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#metrics">metrics</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a></code></td>
+<td class="colLast"><span class="typeNameLabel">HBaseServiceHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#metrics">metrics</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.HBaseHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#metrics">metrics</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">THBaseThreadPoolExecutor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/THBaseThreadPoolExecutor.html#metrics">metrics</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a></code></td>
@@ -142,8 +135,8 @@ service.</div>
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.HBaseHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#initMetrics-org.apache.hadoop.hbase.thrift.ThriftMetrics-">initMetrics</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a>&nbsp;metrics)</code>&nbsp;</td>
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">HBaseServiceHandler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#initMetrics-org.apache.hadoop.hbase.thrift.ThriftMetrics-">initMetrics</a></span>(<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>static org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</code></td>
@@ -151,6 +144,12 @@ service.</div>
            <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a>&nbsp;metrics,
            org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>static org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface</code></td>
+<td class="colLast"><span class="typeNameLabel">HbaseHandlerMetricsProxy.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#newInstance-org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface-org.apache.hadoop.hbase.thrift.ThriftMetrics-org.apache.hadoop.conf.Configuration-">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,
+           org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
+</tr>
 </tbody>
 </table>
 <table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing constructors, and an explanation">
@@ -164,7 +163,7 @@ 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="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#HbaseHandlerMetricsProxy-org.apache.hadoop.hbase.thrift.generated.Hbase.Iface-org.apache.hadoop.hbase.thrift.ThriftMetrics-org.apache.hadoop.conf.Configuration-">HbaseHandlerMetricsProxy</a></span>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface&nbsp;handler,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#HbaseHandlerMetricsProxy-java.lang.Object-org.apache.hadoop.hbase.thrift.ThriftMetrics-org.apache.hadoop.conf.Configuration-">HbaseHandlerMetricsProxy</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;handler,
                         <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a>&nbsp;metrics,
                         org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
 </tr>
@@ -192,104 +191,6 @@ service.</div>
 </tbody>
 </table>
 </li>
-<li class="blockList"><a name="org.apache.hadoop.hbase.thrift2">
-<!--   -->
-</a>
-<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a></h3>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
-<caption><span>Fields in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a> declared as <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Field and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html#metrics">metrics</a></span></code>&nbsp;</td>
-</tr>
-</tbody>
-</table>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
-<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a> with parameters of type <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>private static <a href="https://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"><span class="typeNameLabel">ThriftServer.</span><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 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="https://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,
-              org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
-              int&nbsp;workerThreads,
-              int&nbsp;maxCallQueueSize,
-              <a href="https://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">
-<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,
-                          org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
-                          int&nbsp;workerThreads,
-                          int&nbsp;selectorThreads,
-                          int&nbsp;maxCallQueueSize,
-                          <a href="https://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">
-<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,
-                    org.apache.thrift.transport.TTransportFactory&nbsp;transportFactory,
-                    int&nbsp;workerThreads,
-                    <a href="https://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,
-                    int&nbsp;backlog,
-                    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="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>
-</tr>
-</tbody>
-</table>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing constructors, and an explanation">
-<caption><span>Constructors in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a> with parameters of type <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colOne" scope="col">Constructor and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html#THBaseServiceMetricsProxy-org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface-org.apache.hadoop.hbase.thrift.ThriftMetrics-">THBaseServiceMetricsProxy</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>
-</tr>
-</tbody>
-</table>
-</li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServer.html b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServer.html
index f0f3810..07725f3 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServer.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServer.html
@@ -72,7 +72,53 @@
 <div class="header">
 <h2 title="Uses of Class org.apache.hadoop.hbase.thrift.ThriftServer" class="title">Uses of Class<br>org.apache.hadoop.hbase.thrift.ThriftServer</h2>
 </div>
-<div class="classUseContainer">No usage of org.apache.hadoop.hbase.thrift.ThriftServer</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift2">org.apache.hadoop.hbase.thrift2</a></td>
+<td class="colLast">
+<div class="block">Provides an HBase <a href="http://thrift.apache.org/">Thrift</a>
+service.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.thrift2">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing subclasses, and an explanation">
+<caption><span>Subclasses of <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift2/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftServer</a></span></code>
+<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>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->
 <div class="bottomNav"><a name="navbar.bottom">
 <!--   -->

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.HBaseHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.HBaseHandler.html b/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.HBaseHandler.html
deleted file mode 100644
index f745e1e..0000000
--- a/devapidocs/org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.HBaseHandler.html
+++ /dev/null
@@ -1,196 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler (Apache HBase 3.0.0-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
-    try {
-        if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler (Apache HBase 3.0.0-SNAPSHOT API)";
-        }
-    }
-    catch(err) {
-    }
-//-->
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../../../../../../overview-tree.html">Tree</a></li>
-<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.HBaseHandler.html" target="_top">Frames</a></li>
-<li><a href="ThriftServerRunner.HBaseHandler.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<div class="header">
-<h2 title="Uses of Class org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler" class="title">Uses of Class<br>org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler</h2>
-</div>
-<div class="classUseContainer">
-<ul class="blockList">
-<li class="blockList">
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
-<caption><span>Packages that use <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Package</th>
-<th class="colLast" scope="col">Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift">org.apache.hadoop.hbase.thrift</a></td>
-<td class="colLast">
-<div class="block">Provides an HBase <a href="http://incubator.apache.org/thrift/">Thrift</a>
-service.</div>
-</td>
-</tr>
-</tbody>
-</table>
-</li>
-<li class="blockList">
-<ul class="blockList">
-<li class="blockList"><a name="org.apache.hadoop.hbase.thrift">
-<!--   -->
-</a>
-<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a></h3>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
-<caption><span>Fields in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a> declared as <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Field and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></code></td>
-<td class="colLast"><span class="typeNameLabel">IncrementCoalescer.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#handler">handler</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftHttpServlet.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html#hbaseHandler">hbaseHandler</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ThriftServerRunner.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#hbaseHandler">hbaseHandler</a></span></code>&nbsp;</td>
-</tr>
-</tbody>
-</table>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing constructors, and an explanation">
-<caption><span>Constructors in <a href="../../../../../../org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a> with parameters of type <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colOne" scope="col">Constructor and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#IncrementCoalescer-org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler-">IncrementCoalescer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a>&nbsp;hand)</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html#ThriftHttpServlet-org.apache.thrift.TProcessor-org.apache.thrift.protocol.TProtocolFactory-org.apache.hadoop.security.UserGroupInformation-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler-boolean-boolean-">ThriftHttpServlet</a></span>(org.apache.thrift.TProcessor&nbsp;processor,
-                 org.apache.thrift.protocol.TProtocolFactory&nbsp;protocolFactory,
-                 org.apache.hadoop.security.UserGroupInformation&nbsp;serviceUGI,
-                 org.apache.hadoop.conf.Configuration&nbsp;conf,
-                 <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a>&nbsp;hbaseHandler,
-                 boolean&nbsp;securityEnabled,
-                 boolean&nbsp;doAsEnabled)</code>&nbsp;</td>
-</tr>
-</tbody>
-</table>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar.bottom">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.bottom.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../../../../../../overview-tree.html">Tree</a></li>
-<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/thrift/class-use/ThriftServerRunner.HBaseHandler.html" target="_top">Frames</a></li>
-<li><a href="ThriftServerRunner.HBaseHandler.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>


[08/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 783dc34..5898688 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html
@@ -26,609 +26,99 @@
 <span class="sourceLineNo">018</span> */<a name="line.18"></a>
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.thrift2;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.net.InetAddress;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.net.InetSocketAddress;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.net.UnknownHostException;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.security.PrivilegedAction;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.Map;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.concurrent.ExecutorService;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.concurrent.SynchronousQueue;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.concurrent.TimeUnit;<a name="line.31"></a>
-<span class="sourceLineNo">032</span><a name="line.32"></a>
-<span class="sourceLineNo">033</span>import javax.security.auth.callback.Callback;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import javax.security.sasl.AuthorizeCallback;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import javax.security.sasl.SaslServer;<a name="line.36"></a>
-<span class="sourceLineNo">037</span><a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.conf.Configuration;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.conf.Configured;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.filter.ParseFilter;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.security.SaslUtil;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.security.SecurityUtil;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.thrift.CallQueue;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.thrift.THBaseThreadPoolExecutor;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.thrift.ThriftMetrics;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.thrift2.generated.THBaseService;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.DNS;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.util.JvmPauseMonitor;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.util.Strings;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.security.SaslRpcServer.SaslGssCallbackHandler;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.util.Tool;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.util.ToolRunner;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.thrift.TException;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.thrift.TProcessor;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.thrift.protocol.TBinaryProtocol;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.thrift.protocol.TCompactProtocol;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.thrift.protocol.TProtocol;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.thrift.protocol.TProtocolFactory;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.thrift.server.THsHaServer;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.thrift.server.TNonblockingServer;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.thrift.server.TServer;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.thrift.server.TThreadPoolServer;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.thrift.server.TThreadedSelectorServer;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.thrift.transport.TFramedTransport;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.thrift.transport.TNonblockingServerSocket;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.thrift.transport.TNonblockingServerTransport;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.thrift.transport.TSaslServerTransport;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.thrift.transport.TServerSocket;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.thrift.transport.TServerTransport;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.thrift.transport.TTransportException;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.thrift.transport.TTransportFactory;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.slf4j.Logger;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.slf4j.LoggerFactory;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hbase.thirdparty.com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLineParser;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.DefaultParser;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.HelpFormatter;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Option;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.OptionGroup;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Options;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.ParseException;<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> * ThriftServer - this class starts up a Thrift server which implements the HBase API specified in<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * the HbaseClient.thrift IDL file.<a name="line.92"></a>
-<span class="sourceLineNo">093</span> */<a name="line.93"></a>
-<span class="sourceLineNo">094</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.94"></a>
-<span class="sourceLineNo">095</span>@SuppressWarnings({ "rawtypes", "unchecked" })<a name="line.95"></a>
-<span class="sourceLineNo">096</span>public class ThriftServer extends Configured implements Tool {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  private static final Logger log = LoggerFactory.getLogger(ThriftServer.class);<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>   * Thrift quality of protection configuration key. Valid values can be:<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * privacy: authentication, integrity and confidentiality checking<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * integrity: authentication and integrity checking<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * authentication: authentication only<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   *<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * This is used to authenticate the callers and support impersonation.<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   * The thrift server and the HBase cluster must run in secure mode.<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   */<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  static final String THRIFT_QOP_KEY = "hbase.thrift.security.qop";<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>  static final String BACKLOG_CONF_KEY = "hbase.regionserver.thrift.backlog";<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>  public static final int DEFAULT_LISTEN_PORT = 9090;<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private static final String READ_TIMEOUT_OPTION = "readTimeout";<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>   * Amount of time in milliseconds before a server thread will timeout<a name="line.117"></a>
-<span class="sourceLineNo">118</span>   * waiting for client to send data on a connected socket. Currently,<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   * applies only to TBoundedThreadPoolServer<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   */<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  public static final String THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY =<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    "hbase.thrift.server.socket.read.timeout";<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  public static final int THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT = 60000;<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>  public ThriftServer() {<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>  private static void printUsage() {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    HelpFormatter formatter = new HelpFormatter();<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    formatter.printHelp("Thrift", null, getOptions(),<a name="line.130"></a>
-<span class="sourceLineNo">131</span>        "To start the Thrift server run 'hbase-daemon.sh start thrift2' or " +<a name="line.131"></a>
-<span class="sourceLineNo">132</span>        "'hbase thrift2'\n" +<a name="line.132"></a>
-<span class="sourceLineNo">133</span>        "To shutdown the thrift server run 'hbase-daemon.sh stop thrift2' or" +<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        " send a kill signal to the thrift server pid",<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        true);<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>  private static Options getOptions() {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    Options options = new Options();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    options.addOption("b", "bind", true,<a name="line.140"></a>
-<span class="sourceLineNo">141</span>        "Address to bind the Thrift server to. [default: 0.0.0.0]");<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    options.addOption("p", "port", true, "Port to bind to [default: " + DEFAULT_LISTEN_PORT + "]");<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    options.addOption("f", "framed", false, "Use framed transport");<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    options.addOption("c", "compact", false, "Use the compact protocol");<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    options.addOption("w", "workers", true, "How many worker threads to use.");<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    options.addOption("s", "selectors", true, "How many selector threads to use.");<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    options.addOption("q", "callQueueSize", true,<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      "Max size of request queue (unbounded by default)");<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    options.addOption("h", "help", false, "Print help information");<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    options.addOption(null, "infoport", true, "Port for web UI");<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    options.addOption("t", READ_TIMEOUT_OPTION, true,<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      "Amount of time in milliseconds before a server thread will timeout " +<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      "waiting for client to send data on a connected socket. Currently, " +<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      "only applies to TBoundedThreadPoolServer");<a name="line.154"></a>
-<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(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 DefaultParser();<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 (cmd.hasOption("help")) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      printUsage();<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      return 1;<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>    // Get address to bind<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    String bindAddress = getBindAddress(conf, cmd);<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>    // check if server should only process read requests, if so override the conf<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    if (cmd.hasOption("readonly")) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      conf.setBoolean("hbase.thrift.readonly", true);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      if (log.isDebugEnabled()) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        log.debug("readonly set to true");<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><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // Get read timeout<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    int readTimeout = getReadTimeout(conf, cmd);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    // Get port to bind to<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    int listenPort = getListenPort(conf, cmd);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    // Thrift's implementation uses '0' as a placeholder for 'use the default.'<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    int backlog = conf.getInt(BACKLOG_CONF_KEY, 0);<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>    // Local hostname and user name, used only if QOP is configured.<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    String host = null;<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    String name = null;<a name="line.416"></a>
-<span class="sourceLineNo">417</span><a name="line.417"></a>
-<span class="sourceLineNo">418</span>    UserProvider userProvider = UserProvider.instantiate(conf);<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    // login the server principal (if using secure Hadoop)<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    boolean securityEnabled = userProvider.isHadoopSecurityEnabled()<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      &amp;&amp; userProvider.isHBaseSecurityEnabled();<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    if (securityEnabled) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      host = Strings.domainNamePointerToHostName(DNS.getDefaultHost(<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        conf.get("hbase.thrift.dns.interface", "default"),<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        conf.get("hbase.thrift.dns.nameserver", "default")));<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      userProvider.login("hbase.thrift.keytab.file", "hbase.thrift.kerberos.principal", host);<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>    UserGroupInformation realUser = userProvider.getCurrent().getUGI();<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    String stringQop = conf.get(THRIFT_QOP_KEY);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    SaslUtil.QualityOfProtection qop = null;<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    if (stringQop != null) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      qop = SaslUtil.getQop(stringQop);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      if (!securityEnabled) {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        throw new IOException("Thrift server must run in secure mode to support authentication");<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      }<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      // Extract the name from the principal<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      name = SecurityUtil.getUserFromPrincipal(conf.get("hbase.thrift.kerberos.principal"));<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>    boolean nonblocking = cmd.hasOption("nonblocking");<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    boolean hsha = cmd.hasOption("hsha");<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    boolean selector = cmd.hasOption("selector");<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>    ThriftMetrics metrics = new ThriftMetrics(conf, ThriftMetrics.ThriftServerType.TWO);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    final JvmPauseMonitor pauseMonitor = new JvmPauseMonitor(conf, metrics.getSource());<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>    String implType = getImplType(nonblocking, hsha, selector);<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>    conf.set("hbase.regionserver.thrift.server.type", implType);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    conf.setInt("hbase.regionserver.thrift.port", listenPort);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    registerFilters(conf);<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // Construct correct ProtocolFactory<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    boolean compact = cmd.hasOption("compact") ||<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        conf.getBoolean("hbase.regionserver.thrift.compact", false);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    TProtocolFactory protocolFactory = getTProtocolFactory(compact);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    final ThriftHBaseServiceHandler hbaseHandler =<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      new ThriftHBaseServiceHandler(conf, userProvider);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    THBaseService.Iface handler =<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      ThriftHBaseServiceHandler.newInstance(hbaseHandler, metrics);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    final THBaseService.Processor p = new THBaseService.Processor(handler);<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    conf.setBoolean("hbase.regionserver.thrift.compact", compact);<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    TProcessor processor = p;<a name="line.464"></a>
-<span class="sourceLineNo">465</span><a name="line.465"></a>
-<span class="sourceLineNo">466</span>    boolean framed = cmd.hasOption("framed") ||<a name="line.466"></a>
-<span class="sourceLineNo">467</span>        conf.getBoolean("hbase.regionserver.thrift.framed", false) || nonblocking || hsha;<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    TTransportFactory transportFactory = getTTransportFactory(qop, name, host, framed,<a name="line.468"></a>
-<span class="sourceLineNo">469</span>        conf.getInt("hbase.regionserver.thrift.framed.max_frame_size_in_mb", 2) * 1024 * 1024);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    InetSocketAddress inetSocketAddress = bindToPort(bindAddress, listenPort);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    conf.setBoolean("hbase.regionserver.thrift.framed", framed);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    if (qop != null) {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      // Create a processor wrapper, to get the caller<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      processor = new TProcessor() {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        @Override<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        public boolean process(TProtocol inProt,<a name="line.476"></a>
-<span class="sourceLineNo">477</span>            TProtocol outProt) throws TException {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>          TSaslServerTransport saslServerTransport =<a name="line.478"></a>
-<span class="sourceLineNo">479</span>            (TSaslServerTransport)inProt.getTransport();<a name="line.479"></a>
-<span class="sourceLineNo">480</span>          SaslServer saslServer = saslServerTransport.getSaslServer();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>          String principal = saslServer.getAuthorizationID();<a name="line.481"></a>
-<span class="sourceLineNo">482</span>          hbaseHandler.setEffectiveUser(principal);<a name="line.482"></a>
-<span class="sourceLineNo">483</span>          return p.process(inProt, outProt);<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><a name="line.487"></a>
-<span class="sourceLineNo">488</span>    if (cmd.hasOption("w")) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      workerThreads = Integer.parseInt(cmd.getOptionValue("w"));<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    }<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    if (cmd.hasOption("s")) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      selectorThreads = Integer.parseInt(cmd.getOptionValue("s"));<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    }<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    if (cmd.hasOption("q")) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      maxCallQueueSize = Integer.parseInt(cmd.getOptionValue("q"));<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    // check for user-defined info server port setting, if so override the conf<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    try {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      if (cmd.hasOption("infoport")) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>        String val = cmd.getOptionValue("infoport");<a name="line.501"></a>
-<span class="sourceLineNo">502</span>        conf.setInt("hbase.thrift.info.port", Integer.parseInt(val));<a name="line.502"></a>
-<span class="sourceLineNo">503</span>        log.debug("Web UI port set to " + val);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      }<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    } catch (NumberFormatException e) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      log.error("Could not parse the value provided for the infoport option", e);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      printUsage();<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      System.exit(1);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    }<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>    // Put up info server.<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    startInfoServer(conf);<a name="line.512"></a>
-<span class="sourceLineNo">513</span><a name="line.513"></a>
-<span class="sourceLineNo">514</span>    final TServer tserver = getServer(workerThreads, selectorThreads, maxCallQueueSize, readTimeout,<a name="line.514"></a>
-<span class="sourceLineNo">515</span>            backlog, nonblocking, hsha, selector, metrics, protocolFactory, processor,<a name="line.515"></a>
-<span class="sourceLineNo">516</span>            transportFactory, inetSocketAddress);<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>    realUser.doAs(<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      new PrivilegedAction&lt;Object&gt;() {<a name="line.519"></a>
-<span class="sourceLineNo">520</span>        @Override<a name="line.520"></a>
-<span class="sourceLineNo">521</span>        public Object run() {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>          pauseMonitor.start();<a name="line.522"></a>
-<span class="sourceLineNo">523</span>          try {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>            tserver.serve();<a name="line.524"></a>
-<span class="sourceLineNo">525</span>            return null;<a name="line.525"></a>
-<span class="sourceLineNo">526</span>          } finally {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>            pauseMonitor.stop();<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>      });<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    // when tserver.stop eventually happens we'll get here.<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    return 0;<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>  private String getImplType(boolean nonblocking, boolean hsha, boolean selector) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    String implType = "threadpool";<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>    if (nonblocking) {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      implType = "nonblocking";<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    } else if (hsha) {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      implType = "hsha";<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    } else if (selector) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      implType = "selector";<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    }<a name="line.544"></a>
-<span class="sourceLineNo">545</span><a name="line.545"></a>
-<span class="sourceLineNo">546</span>    return implType;<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>  private String getBindAddress(Configuration conf, CommandLine cmd) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    String bindAddress;<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    if (cmd.hasOption("bind")) {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      bindAddress = cmd.getOptionValue("bind");<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      conf.set("hbase.thrift.info.bindAddress", bindAddress);<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    } else {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      bindAddress = conf.get("hbase.thrift.info.bindAddress");<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    }<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    return bindAddress;<a name="line.557"></a>
-<span class="sourceLineNo">558</span>  }<a name="line.558"></a>
-<span class="sourceLineNo">559</span><a name="line.559"></a>
-<span class="sourceLineNo">560</span>  private int getListenPort(Configuration conf, CommandLine cmd) {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    int listenPort;<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    try {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      if (cmd.hasOption("port")) {<a name="line.563"></a>
-<span class="sourceLineNo">564</span>        listenPort = Integer.parseInt(cmd.getOptionValue("port"));<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      } else {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>        listenPort = conf.getInt("hbase.regionserver.thrift.port", DEFAULT_LISTEN_PORT);<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      }<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    } catch (NumberFormatException e) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      throw new RuntimeException("Could not parse the value provided for the port option", e);<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    }<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    return listenPort;<a name="line.571"></a>
-<span class="sourceLineNo">572</span>  }<a name="line.572"></a>
-<span class="sourceLineNo">573</span><a name="line.573"></a>
-<span class="sourceLineNo">574</span>  private int getReadTimeout(Configuration conf, CommandLine cmd) {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    int readTimeout;<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    if (cmd.hasOption(READ_TIMEOUT_OPTION)) {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      try {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>        readTimeout = Integer.parseInt(cmd.getOptionValue(READ_TIMEOUT_OPTION));<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      } catch (NumberFormatException e) {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>        throw new RuntimeException("Could not parse the value provided for the timeout option", e);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>      }<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    } else {<a name="line.582"></a>
-<span class="sourceLineNo">583</span>      readTimeout = conf.getInt(THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY,<a name="line.583"></a>
-<span class="sourceLineNo">584</span>        THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT);<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    }<a name="line.585"></a>
-<span class="sourceLineNo">586</span>    return readTimeout;<a name="line.586"></a>
-<span class="sourceLineNo">587</span>  }<a name="line.587"></a>
-<span class="sourceLineNo">588</span><a name="line.588"></a>
-<span class="sourceLineNo">589</span>  private void startInfoServer(Configuration conf) throws IOException {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    int port = conf.getInt("hbase.thrift.info.port", 9095);<a name="line.590"></a>
-<span class="sourceLineNo">591</span><a name="line.591"></a>
-<span class="sourceLineNo">592</span>    if (port &gt;= 0) {<a name="line.592"></a>
-<span class="sourceLineNo">593</span>      conf.setLong("startcode", System.currentTimeMillis());<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      String a = conf.get("hbase.thrift.info.bindAddress", "0.0.0.0");<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      InfoServer infoServer = new InfoServer("thrift", a, port, false, conf);<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      infoServer.setAttribute("hbase.conf", conf);<a name="line.596"></a>
-<span class="sourceLineNo">597</span>      infoServer.start();<a name="line.597"></a>
-<span class="sourceLineNo">598</span>    }<a name="line.598"></a>
-<span class="sourceLineNo">599</span>  }<a name="line.599"></a>
-<span class="sourceLineNo">600</span><a name="line.600"></a>
-<span class="sourceLineNo">601</span>  private TServer getServer(int workerThreads, int selectorThreads, int maxCallQueueSize,<a name="line.601"></a>
-<span class="sourceLineNo">602</span>        int readTimeout, int backlog, boolean nonblocking, boolean hsha, boolean selector,<a name="line.602"></a>
-<span class="sourceLineNo">603</span>        ThriftMetrics metrics, TProtocolFactory protocolFactory, TProcessor processor,<a name="line.603"></a>
-<span class="sourceLineNo">604</span>        TTransportFactory transportFactory, InetSocketAddress inetSocketAddress)<a name="line.604"></a>
-<span class="sourceLineNo">605</span>          throws TTransportException {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    TServer server;<a name="line.606"></a>
-<span class="sourceLineNo">607</span><a name="line.607"></a>
-<span class="sourceLineNo">608</span>    if (nonblocking) {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>      server = getTNonBlockingServer(protocolFactory, processor, transportFactory,<a name="line.609"></a>
-<span class="sourceLineNo">610</span>              inetSocketAddress);<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    } else if (hsha) {<a name="line.611"></a>
-<span class="sourceLineNo">612</span>      server = getTHsHaServer(protocolFactory, processor, transportFactory, workerThreads,<a name="line.612"></a>
-<span class="sourceLineNo">613</span>              maxCallQueueSize, inetSocketAddress, metrics);<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    } else if (selector) {<a name="line.614"></a>
-<span class="sourceLineNo">615</span>      server = getTThreadedSelectorServer(protocolFactory, processor, transportFactory,<a name="line.615"></a>
-<span class="sourceLineNo">616</span>              workerThreads, selectorThreads, maxCallQueueSize, inetSocketAddress, metrics);<a name="line.616"></a>
-<span class="sourceLineNo">617</span>    } else {<a name="line.617"></a>
-<span class="sourceLineNo">618</span>      server = getTThreadPoolServer(protocolFactory, processor, transportFactory, workerThreads,<a name="line.618"></a>
-<span class="sourceLineNo">619</span>              inetSocketAddress, backlog, readTimeout, metrics);<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    }<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    return server;<a name="line.621"></a>
-<span class="sourceLineNo">622</span>  }<a name="line.622"></a>
-<span class="sourceLineNo">623</span>}<a name="line.623"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.thrift.Constants.READONLY_OPTION;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_READONLY_ENABLED;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_READONLY_ENABLED_DEFAULT;<a name="line.23"></a>
+<span class="sourceLineNo">024</span><a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.IOException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span><a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.conf.Configuration;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.thrift.HBaseServiceHandler;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.thrift.HbaseHandlerMetricsProxy;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.thrift2.generated.THBaseService;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.util.Shell;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.util.ToolRunner;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.thrift.TProcessor;<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.slf4j.Logger;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.slf4j.LoggerFactory;<a name="line.39"></a>
+<span class="sourceLineNo">040</span><a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.HelpFormatter;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Options;<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> * ThriftServer - this class starts up a Thrift server which implements the HBase API specified in<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * the HbaseClient.thrift IDL file.<a name="line.47"></a>
+<span class="sourceLineNo">048</span> */<a name="line.48"></a>
+<span class="sourceLineNo">049</span>@edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "NM_SAME_SIMPLE_NAME_AS_SUPERCLASS",<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    justification = "Change the name will be an incompatible change, will do it later")<a name="line.50"></a>
+<span class="sourceLineNo">051</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.51"></a>
+<span class="sourceLineNo">052</span>@SuppressWarnings({ "rawtypes", "unchecked" })<a name="line.52"></a>
+<span class="sourceLineNo">053</span>public class ThriftServer extends org.apache.hadoop.hbase.thrift.ThriftServer {<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  private static final Logger log = LoggerFactory.getLogger(ThriftServer.class);<a name="line.54"></a>
+<span class="sourceLineNo">055</span><a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  public ThriftServer(Configuration conf) {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    super(conf);<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>  @Override<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  protected void printUsageAndExit(Options options, int exitCode)<a name="line.62"></a>
+<span class="sourceLineNo">063</span>      throws Shell.ExitCodeException {<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    HelpFormatter formatter = new HelpFormatter();<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    formatter.printHelp("Thrift", null, options,<a name="line.65"></a>
+<span class="sourceLineNo">066</span>        "To start the Thrift server run 'hbase-daemon.sh start thrift2' or " +<a name="line.66"></a>
+<span class="sourceLineNo">067</span>            "'hbase thrift2'\n" +<a name="line.67"></a>
+<span class="sourceLineNo">068</span>            "To shutdown the thrift server run 'hbase-daemon.sh stop thrift2' or" +<a name="line.68"></a>
+<span class="sourceLineNo">069</span>            " send a kill signal to the thrift server pid",<a name="line.69"></a>
+<span class="sourceLineNo">070</span>        true);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    throw new Shell.ExitCodeException(exitCode, "");<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  }<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>  @Override<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  protected HBaseServiceHandler createHandler(Configuration conf, UserProvider userProvider)<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      throws IOException {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    return new ThriftHBaseServiceHandler(conf, userProvider);<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  }<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>  @Override<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  protected TProcessor createProcessor() {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    return new THBaseService.Processor&lt;&gt;(HbaseHandlerMetricsProxy<a name="line.82"></a>
+<span class="sourceLineNo">083</span>        .newInstance((THBaseService.Iface) hbaseServiceHandler, metrics, conf));<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  }<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>  @Override<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  protected void addOptions(Options options) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    super.addOptions(options);<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    options.addOption("ro", READONLY_OPTION, false,<a name="line.89"></a>
+<span class="sourceLineNo">090</span>        "Respond only to read method requests [default: false]");<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>  @Override<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  protected void parseCommandLine(CommandLine cmd, Options options) throws Shell.ExitCodeException {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    super.parseCommandLine(cmd, options);<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    boolean readOnly = THRIFT_READONLY_ENABLED_DEFAULT;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    if (cmd.hasOption(READONLY_OPTION)) {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      readOnly = true;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    }<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    conf.setBoolean(THRIFT_READONLY_ENABLED, readOnly);<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>   * Start up the Thrift2 server.<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  public static void main(String[] args) throws Exception {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    // for now, only time we return is on an argument error.<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    final int status = ToolRunner.run(conf, new ThriftServer(conf), args);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    System.exit(status);<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>}<a name="line.113"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/downloads.html
----------------------------------------------------------------------
diff --git a/downloads.html b/downloads.html
index 5139216..7620d8f 100644
--- a/downloads.html
+++ b/downloads.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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase Downloads</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -463,7 +463,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: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index e00496e..75d6cdf 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -341,7 +341,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: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index e5eb0be..f6661ba 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBaseâ„¢ Home</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -421,7 +421,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: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index f9295b9..820ba07 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -301,7 +301,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index 42f08fb..1ba1c86 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -298,7 +298,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index 6da1cd5..95d1e3c 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -501,7 +501,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index 49209db..af66f60 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -351,7 +351,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index 68fbc78..5d742af 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -469,7 +469,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: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index 61f2cd2..5f99b80 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -450,7 +450,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: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index e7a187a..0a6915a 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -450,7 +450,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index 3d7bbc3..5924bd7 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -381,7 +381,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index b3c6e9e..af5a540 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <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.4-HBase.min.css" />
@@ -779,7 +779,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: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index 2d1bad0..3b405b1 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -345,7 +345,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index 038e1b1..01b2e8f 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -315,7 +315,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index 09a9c20..9cfa717 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="20190101" />
+    <meta name="Date-Revision-yyyymmdd" content="20190102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -341,7 +341,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2019-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2019-01-02</li>
             </p>
                 </div>
 


[09/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html
index 1a0f64e..2290ca8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html
@@ -26,849 +26,796 @@
 <span class="sourceLineNo">018</span> */<a name="line.18"></a>
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.thrift2;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.appendFromThrift;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.columnFamilyDescriptorFromThrift;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.compareOpFromThrift;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.deleteFromThrift;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.deletesFromThrift;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.getFromThrift;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.getsFromThrift;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.incrementFromThrift;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.namespaceDescriptorFromHBase;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.namespaceDescriptorFromThrift;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.namespaceDescriptorsFromHBase;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.putFromThrift;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.putsFromThrift;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.resultFromHBase;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.resultsFromHBase;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.rowMutationsFromThrift;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.scanFromThrift;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.splitKeyFromThrift;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableDescriptorFromHBase;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableDescriptorFromThrift;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableDescriptorsFromHBase;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableNameFromThrift;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableNamesFromHBase;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import static org.apache.thrift.TBaseHelper.byteBufferToByteArray;<a name="line.44"></a>
-<span class="sourceLineNo">045</span><a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.io.IOException;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.lang.reflect.InvocationHandler;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.lang.reflect.InvocationTargetException;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.lang.reflect.Method;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.lang.reflect.Proxy;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.nio.ByteBuffer;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import java.util.ArrayList;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import java.util.Collections;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import java.util.List;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import java.util.Map;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import java.util.concurrent.ConcurrentHashMap;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import java.util.regex.Pattern;<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.conf.Configuration;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.TableName;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.client.Table;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.thrift.ThriftMetrics;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.thrift2.generated.TAppend;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.thrift2.generated.TColumnFamilyDescriptor;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.thrift2.generated.TCompareOp;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.thrift2.generated.TDelete;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.thrift2.generated.TGet;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.thrift2.generated.THBaseService;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.thrift2.generated.THRegionLocation;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.thrift2.generated.TIOError;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.thrift2.generated.TIllegalArgument;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.thrift2.generated.TIncrement;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.thrift2.generated.TNamespaceDescriptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.thrift2.generated.TPut;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.thrift2.generated.TResult;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.thrift2.generated.TRowMutations;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.thrift2.generated.TScan;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.thrift2.generated.TTableName;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.util.ConnectionCache;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.thrift.TException;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.slf4j.Logger;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.slf4j.LoggerFactory;<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> * This class is a glue object that connects Thrift RPC calls to the HBase client API primarily<a name="line.97"></a>
-<span class="sourceLineNo">098</span> * defined in the Table interface.<a name="line.98"></a>
-<span class="sourceLineNo">099</span> */<a name="line.99"></a>
-<span class="sourceLineNo">100</span>@InterfaceAudience.Private<a name="line.100"></a>
-<span class="sourceLineNo">101</span>@SuppressWarnings("deprecation")<a name="line.101"></a>
-<span class="sourceLineNo">102</span>public class ThriftHBaseServiceHandler implements THBaseService.Iface {<a name="line.102"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_READONLY_ENABLED;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.thrift.Constants.THRIFT_READONLY_ENABLED_DEFAULT;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.appendFromThrift;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.columnFamilyDescriptorFromThrift;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.compareOpFromThrift;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.deleteFromThrift;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.deletesFromThrift;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.getFromThrift;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.getsFromThrift;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.incrementFromThrift;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.namespaceDescriptorFromHBase;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.namespaceDescriptorFromThrift;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.namespaceDescriptorsFromHBase;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.putFromThrift;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.putsFromThrift;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.resultFromHBase;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.resultsFromHBase;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.rowMutationsFromThrift;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.scanFromThrift;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.splitKeyFromThrift;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableDescriptorFromHBase;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableDescriptorFromThrift;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableDescriptorsFromHBase;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableNameFromThrift;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableNamesFromHBase;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import static org.apache.thrift.TBaseHelper.byteBufferToByteArray;<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.io.IOException;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.nio.ByteBuffer;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.ArrayList;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import java.util.Collections;<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.concurrent.ConcurrentHashMap;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import java.util.regex.Pattern;<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.conf.Configuration;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.TableName;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.client.Table;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.thrift.HBaseServiceHandler;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.thrift2.generated.TAppend;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.thrift2.generated.TColumnFamilyDescriptor;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.thrift2.generated.TCompareOp;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.thrift2.generated.TDelete;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.thrift2.generated.TGet;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.thrift2.generated.THBaseService;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.thrift2.generated.THRegionLocation;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.thrift2.generated.TIOError;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.thrift2.generated.TIllegalArgument;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.thrift2.generated.TIncrement;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.thrift2.generated.TNamespaceDescriptor;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.thrift2.generated.TPut;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.thrift2.generated.TResult;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.thrift2.generated.TRowMutations;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.thrift2.generated.TScan;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.thrift2.generated.TTableName;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.thrift.TException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.slf4j.Logger;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.slf4j.LoggerFactory;<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> * This class is a glue object that connects Thrift RPC calls to the HBase client API primarily<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * defined in the Table interface.<a name="line.95"></a>
+<span class="sourceLineNo">096</span> */<a name="line.96"></a>
+<span class="sourceLineNo">097</span>@InterfaceAudience.Private<a name="line.97"></a>
+<span class="sourceLineNo">098</span>@SuppressWarnings("deprecation")<a name="line.98"></a>
+<span class="sourceLineNo">099</span>public class ThriftHBaseServiceHandler extends HBaseServiceHandler implements THBaseService.Iface {<a name="line.99"></a>
+<span class="sourceLineNo">100</span><a name="line.100"></a>
+<span class="sourceLineNo">101</span>  // TODO: Size of pool configuraple<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  private static final Logger LOG = LoggerFactory.getLogger(ThriftHBaseServiceHandler.class);<a name="line.102"></a>
 <span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  // TODO: Size of pool configuraple<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  private static final Logger LOG = LoggerFactory.getLogger(ThriftHBaseServiceHandler.class);<a name="line.105"></a>
-<span class="sourceLineNo">106</span><a name="line.106"></a>
-<span class="sourceLineNo">107</span>  // nextScannerId and scannerMap are used to manage scanner state<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  // TODO: Cleanup thread for Scanners, Scanner id wrap<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  private final AtomicInteger nextScannerId = new AtomicInteger(0);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  private final Map&lt;Integer, ResultScanner&gt; scannerMap = new ConcurrentHashMap&lt;&gt;();<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>  private final ConnectionCache connectionCache;<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  static final String CLEANUP_INTERVAL = "hbase.thrift.connection.cleanup-interval";<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  static final String MAX_IDLETIME = "hbase.thrift.connection.max-idletime";<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  private static final IOException ioe<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      = new DoNotRetryIOException("Thrift Server is in Read-only mode.");<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  private boolean isReadOnly;<a name="line.119"></a>
+<span class="sourceLineNo">104</span>  // nextScannerId and scannerMap are used to manage scanner state<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  // TODO: Cleanup thread for Scanners, Scanner id wrap<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  private final AtomicInteger nextScannerId = new AtomicInteger(0);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  private final Map&lt;Integer, ResultScanner&gt; scannerMap = new ConcurrentHashMap&lt;&gt;();<a name="line.107"></a>
+<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">109</span>  private static final IOException ioe<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      = new DoNotRetryIOException("Thrift Server is in Read-only mode.");<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private boolean isReadOnly;<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private static class TIOErrorWithCause extends TIOError {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    private Throwable cause;<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>    public TIOErrorWithCause(Throwable cause) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      super();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      this.cause = cause;<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>  public static THBaseService.Iface newInstance(<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      THBaseService.Iface handler, ThriftMetrics metrics) {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    return (THBaseService.Iface) Proxy.newProxyInstance(handler.getClass().getClassLoader(),<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      new Class[] { THBaseService.Iface.class }, new THBaseServiceMetricsProxy(handler, metrics));<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>  private static final class THBaseServiceMetricsProxy implements InvocationHandler {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    private final THBaseService.Iface handler;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    private final ThriftMetrics metrics;<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span>    private THBaseServiceMetricsProxy(THBaseService.Iface handler, ThriftMetrics metrics) {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      this.handler = handler;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      this.metrics = metrics;<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>    @Override<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    public Object invoke(Object proxy, Method m, Object[] args) throws Throwable {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      Object result;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      long start = now();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      try {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>        result = m.invoke(handler, args);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      } catch (InvocationTargetException e) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        metrics.exception(e.getCause());<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        throw e.getTargetException();<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      } catch (Exception e) {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>        metrics.exception(e);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        throw new RuntimeException("unexpected invocation exception: " + e.getMessage());<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      } finally {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        long processTime = now() - start;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>        metrics.incMethodTime(m.getName(), processTime);<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      }<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      return result;<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>  private static class TIOErrorWithCause extends TIOError {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    private Throwable cause;<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>    public TIOErrorWithCause(Throwable cause) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      super();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      this.cause = cause;<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 synchronized Throwable getCause() {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      return cause;<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 boolean equals(Object other) {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      if (super.equals(other) &amp;&amp;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>          other instanceof TIOErrorWithCause) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>        Throwable otherCause = ((TIOErrorWithCause) other).getCause();<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        if (this.getCause() != null) {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>          return otherCause != null &amp;&amp; this.getCause().equals(otherCause);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        } else {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          return otherCause == null;<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>      return false;<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>    @Override<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    public int hashCode() {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      int result = super.hashCode();<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      result = 31 * result + (cause != null ? cause.hashCode() : 0);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      return result;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    }<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>  private static long now() {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    return System.nanoTime();<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>  ThriftHBaseServiceHandler(final Configuration conf,<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      final UserProvider userProvider) throws IOException {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    int cleanInterval = conf.getInt(CLEANUP_INTERVAL, 10 * 1000);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    int maxIdleTime = conf.getInt(MAX_IDLETIME, 10 * 60 * 1000);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    connectionCache = new ConnectionCache(<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      conf, userProvider, cleanInterval, maxIdleTime);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    isReadOnly = conf.getBoolean("hbase.thrift.readonly", false);<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>  private Table getTable(ByteBuffer tableName) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    try {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      return connectionCache.getTable(Bytes.toString(byteBufferToByteArray(tableName)));<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    } catch (IOException ie) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      throw new RuntimeException(ie);<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><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  private RegionLocator getLocator(ByteBuffer tableName) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    try {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      return connectionCache.getRegionLocator(byteBufferToByteArray(tableName));<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    } catch (IOException ie) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      throw new RuntimeException(ie);<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><a name="line.219"></a>
-<span class="sourceLineNo">220</span>  private void closeTable(Table table) throws TIOError {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    try {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      table.close();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    } catch (IOException e) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      throw getTIOError(e);<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>  private TIOError getTIOError(IOException e) {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    TIOError err = new TIOErrorWithCause(e);<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    err.setMessage(e.getMessage());<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    return err;<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>  /**<a name="line.234"></a>
-<span class="sourceLineNo">235</span>   * Assigns a unique ID to the scanner and adds the mapping to an internal HashMap.<a name="line.235"></a>
-<span class="sourceLineNo">236</span>   * @param scanner to add<a name="line.236"></a>
-<span class="sourceLineNo">237</span>   * @return Id for this Scanner<a name="line.237"></a>
-<span class="sourceLineNo">238</span>   */<a name="line.238"></a>
-<span class="sourceLineNo">239</span>  private int addScanner(ResultScanner scanner) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    int id = nextScannerId.getAndIncrement();<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    scannerMap.put(id, scanner);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    return id;<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>   * Returns the Scanner associated with the specified Id.<a name="line.246"></a>
-<span class="sourceLineNo">247</span>   * @param id of the Scanner to get<a name="line.247"></a>
-<span class="sourceLineNo">248</span>   * @return a Scanner, or null if the Id is invalid<a name="line.248"></a>
-<span class="sourceLineNo">249</span>   */<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  private ResultScanner getScanner(int id) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    return scannerMap.get(id);<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>  void setEffectiveUser(String effectiveUser) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    connectionCache.setEffectiveUser(effectiveUser);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  /**<a name="line.258"></a>
-<span class="sourceLineNo">259</span>   * Removes the scanner associated with the specified ID from the internal HashMap.<a name="line.259"></a>
-<span class="sourceLineNo">260</span>   * @param id of the Scanner to remove<a name="line.260"></a>
-<span class="sourceLineNo">261</span>   * @return the removed Scanner, or &lt;code&gt;null&lt;/code&gt; if the Id is invalid<a name="line.261"></a>
-<span class="sourceLineNo">262</span>   */<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  protected ResultScanner removeScanner(int id) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    return scannerMap.remove(id);<a name="line.264"></a>
+<span class="sourceLineNo">121</span>    @Override<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    public synchronized Throwable getCause() {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      return cause;<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 boolean equals(Object other) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      if (super.equals(other) &amp;&amp;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>          other instanceof TIOErrorWithCause) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        Throwable otherCause = ((TIOErrorWithCause) other).getCause();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>        if (this.getCause() != null) {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>          return otherCause != null &amp;&amp; this.getCause().equals(otherCause);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>        } else {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>          return otherCause == null;<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>      return false;<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 hashCode() {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      int result = super.hashCode();<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      result = 31 * result + (cause != null ? cause.hashCode() : 0);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      return result;<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>  ThriftHBaseServiceHandler(final Configuration conf,<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      final UserProvider userProvider) throws IOException {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    super(conf, userProvider);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    isReadOnly = conf.getBoolean(THRIFT_READONLY_ENABLED, THRIFT_READONLY_ENABLED_DEFAULT);<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>  @Override<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  protected Table getTable(ByteBuffer tableName) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    try {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      return connectionCache.getTable(Bytes.toString(byteBufferToByteArray(tableName)));<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    } catch (IOException ie) {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      throw new RuntimeException(ie);<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><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  private RegionLocator getLocator(ByteBuffer tableName) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    try {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      return connectionCache.getRegionLocator(byteBufferToByteArray(tableName));<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    } catch (IOException ie) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      throw new RuntimeException(ie);<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><a name="line.170"></a>
+<span class="sourceLineNo">171</span>  private void closeTable(Table table) throws TIOError {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    try {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      table.close();<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    } catch (IOException e) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      throw getTIOError(e);<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>  private TIOError getTIOError(IOException e) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    TIOError err = new TIOErrorWithCause(e);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    err.setMessage(e.getMessage());<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    return err;<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>   * Assigns a unique ID to the scanner and adds the mapping to an internal HashMap.<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * @param scanner to add<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   * @return Id for this Scanner<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  private int addScanner(ResultScanner scanner) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    int id = nextScannerId.getAndIncrement();<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    scannerMap.put(id, scanner);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    return id;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  }<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>   * Returns the Scanner associated with the specified Id.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * @param id of the Scanner to get<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * @return a Scanner, or null if the Id is invalid<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   */<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  private ResultScanner getScanner(int id) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    return scannerMap.get(id);<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>  /**<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   * Removes the scanner associated with the specified ID from the internal HashMap.<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * @param id of the Scanner to remove<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   * @return the removed Scanner, or &lt;code&gt;null&lt;/code&gt; if the Id is invalid<a name="line.208"></a>
+<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  protected ResultScanner removeScanner(int id) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    return scannerMap.remove(id);<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>  @Override<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  public boolean exists(ByteBuffer table, TGet get) throws TIOError, TException {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    Table htable = getTable(table);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    try {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      return htable.exists(getFromThrift(get));<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    } catch (IOException e) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      throw getTIOError(e);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    } finally {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      closeTable(htable);<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>  @Override<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public List&lt;Boolean&gt; existsAll(ByteBuffer table, List&lt;TGet&gt; gets) throws TIOError, TException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    Table htable = getTable(table);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    try {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      boolean[] exists = htable.existsAll(getsFromThrift(gets));<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      List&lt;Boolean&gt; result = new ArrayList&lt;&gt;(exists.length);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      for (boolean exist : exists) {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        result.add(exist);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      }<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      return result;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    } catch (IOException e) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      throw getTIOError(e);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    } finally {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      closeTable(htable);<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><a name="line.242"></a>
+<span class="sourceLineNo">243</span>  @Override<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  public TResult get(ByteBuffer table, TGet get) throws TIOError, TException {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    Table htable = getTable(table);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    try {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      return resultFromHBase(htable.get(getFromThrift(get)));<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    } catch (IOException e) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      throw getTIOError(e);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    } finally {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      closeTable(htable);<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>  @Override<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  public List&lt;TResult&gt; getMultiple(ByteBuffer table, List&lt;TGet&gt; gets) throws TIOError, TException {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Table htable = getTable(table);<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    try {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      return resultsFromHBase(htable.get(getsFromThrift(gets)));<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    } catch (IOException e) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      throw getTIOError(e);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    } finally {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      closeTable(htable);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    }<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>  @Override<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  public boolean exists(ByteBuffer table, TGet get) throws TIOError, TException {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    Table htable = getTable(table);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    try {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      return htable.exists(getFromThrift(get));<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    } catch (IOException e) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      throw getTIOError(e);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    } finally {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      closeTable(htable);<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><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  @Override<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  public List&lt;Boolean&gt; existsAll(ByteBuffer table, List&lt;TGet&gt; gets) throws TIOError, TException {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    Table htable = getTable(table);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    try {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      boolean[] exists = htable.existsAll(getsFromThrift(gets));<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      List&lt;Boolean&gt; result = new ArrayList&lt;&gt;(exists.length);<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      for (boolean exist : exists) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        result.add(exist);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      }<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      return result;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    } catch (IOException e) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      throw getTIOError(e);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    } finally {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      closeTable(htable);<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><a name="line.295"></a>
-<span class="sourceLineNo">296</span>  @Override<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public TResult get(ByteBuffer table, TGet get) throws TIOError, TException {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    Table htable = getTable(table);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    try {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      return resultFromHBase(htable.get(getFromThrift(get)));<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    } catch (IOException e) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      throw getTIOError(e);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    } finally {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      closeTable(htable);<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>  @Override<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public List&lt;TResult&gt; getMultiple(ByteBuffer table, List&lt;TGet&gt; gets) throws TIOError, TException {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    Table htable = getTable(table);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    try {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      return resultsFromHBase(htable.get(getsFromThrift(gets)));<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    } catch (IOException e) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      throw getTIOError(e);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    } finally {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      closeTable(htable);<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">320</span>  @Override<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public void put(ByteBuffer table, TPut put) throws TIOError, TException {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    checkReadOnlyMode();<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    Table htable = getTable(table);<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    try {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      htable.put(putFromThrift(put));<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    } catch (IOException e) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      throw getTIOError(e);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    } finally {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      closeTable(htable);<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><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  @Override<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  public boolean checkAndPut(ByteBuffer table, ByteBuffer row, ByteBuffer family,<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      ByteBuffer qualifier, ByteBuffer value, TPut put) throws TIOError, TException {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    checkReadOnlyMode();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    Table htable = getTable(table);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    try {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      Table.CheckAndMutateBuilder builder = htable.checkAndMutate(byteBufferToByteArray(row),<a name="line.339"></a>
-<span class="sourceLineNo">340</span>          byteBufferToByteArray(family)).qualifier(byteBufferToByteArray(qualifier));<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      if (value == null) {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        return builder.ifNotExists().thenPut(putFromThrift(put));<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      } else {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        return builder.ifEquals(byteBufferToByteArray(value)).thenPut(putFromThrift(put));<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      }<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    } catch (IOException e) {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      throw getTIOError(e);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    } finally {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      closeTable(htable);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    }<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>  @Override<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  public void putMultiple(ByteBuffer table, List&lt;TPut&gt; puts) throws TIOError, TException {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    checkReadOnlyMode();<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    Table htable = getTable(table);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    try {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      htable.put(putsFromThrift(puts));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    } catch (IOException e) {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      throw getTIOError(e);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    } finally {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      closeTable(htable);<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>  @Override<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  public void deleteSingle(ByteBuffer table, TDelete deleteSingle) throws TIOError, TException {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    checkReadOnlyMode();<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    Table htable = getTable(table);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    try {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      htable.delete(deleteFromThrift(deleteSingle));<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    } catch (IOException e) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      throw getTIOError(e);<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    } finally {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      closeTable(htable);<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><a name="line.378"></a>
-<span class="sourceLineNo">379</span>  @Override<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  public List&lt;TDelete&gt; deleteMultiple(ByteBuffer table, List&lt;TDelete&gt; deletes) throws TIOError,<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      TException {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    checkReadOnlyMode();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    Table htable = getTable(table);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    try {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      htable.delete(deletesFromThrift(deletes));<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    } catch (IOException e) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      throw getTIOError(e);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    } finally {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      closeTable(htable);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    }<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    return Collections.emptyList();<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>  @Override<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  public boolean checkAndMutate(ByteBuffer table, ByteBuffer row, ByteBuffer family,<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      ByteBuffer qualifier, TCompareOp compareOp, ByteBuffer value, TRowMutations rowMutations)<a name="line.396"></a>
-<span class="sourceLineNo">397</span>          throws TIOError, TException {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    checkReadOnlyMode();<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    try (final Table htable = getTable(table)) {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      return htable.checkAndMutate(byteBufferToByteArray(row), byteBufferToByteArray(family))<a name="line.400"></a>
-<span class="sourceLineNo">401</span>          .qualifier(byteBufferToByteArray(qualifier))<a name="line.401"></a>
-<span class="sourceLineNo">402</span>          .ifMatches(compareOpFromThrift(compareOp), byteBufferToByteArray(value))<a name="line.402"></a>
-<span class="sourceLineNo">403</span>          .thenMutate(rowMutationsFromThrift(rowMutations));<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    } catch (IOException e) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      throw getTIOError(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>
-<span class="sourceLineNo">409</span>  @Override<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  public boolean checkAndDelete(ByteBuffer table, ByteBuffer row, ByteBuffer family,<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      ByteBuffer qualifier, ByteBuffer value, TDelete deleteSingle) throws TIOError, TException {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    checkReadOnlyMode();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    Table htable = getTable(table);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    try {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      Table.CheckAndMutateBuilder mutateBuilder =<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          htable.checkAndMutate(byteBufferToByteArray(row), byteBufferToByteArray(family))<a name="line.416"></a>
-<span class="sourceLineNo">417</span>              .qualifier(byteBufferToByteArray(qualifier));<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      if (value == null) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        return mutateBuilder.ifNotExists().thenDelete(deleteFromThrift(deleteSingle));<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      } else {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        return mutateBuilder.ifEquals(byteBufferToByteArray(value))<a name="line.421"></a>
-<span class="sourceLineNo">422</span>            .thenDelete(deleteFromThrift(deleteSingle));<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      }<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    } catch (IOException e) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      throw getTIOError(e);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    } finally {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      closeTable(htable);<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>  @Override<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  public TResult increment(ByteBuffer table, TIncrement increment) throws TIOError, TException {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    checkReadOnlyMode();<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    Table htable = getTable(table);<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    try {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      return resultFromHBase(htable.increment(incrementFromThrift(increment)));<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    } catch (IOException e) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      throw getTIOError(e);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    } finally {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      closeTable(htable);<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>  @Override<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  public TResult append(ByteBuffer table, TAppend append) throws TIOError, TException {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    checkReadOnlyMode();<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    Table htable = getTable(table);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    try {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      return resultFromHBase(htable.append(appendFromThrift(append)));<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    } catch (IOException e) {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      throw getTIOError(e);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    } finally {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      closeTable(htable);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>  }<a name="line.455"></a>
+<span class="sourceLineNo">268</span>  public void put(ByteBuffer table, TPut put) throws TIOError, TException {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    checkReadOnlyMode();<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    Table htable = getTable(table);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    try {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      htable.put(putFromThrift(put));<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    } catch (IOException e) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      throw getTIOError(e);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    } finally {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      closeTable(htable);<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>  @Override<a name="line.280"></a>
+<span class="sourceLineNo">281</span>  public boolean checkAndPut(ByteBuffer table, ByteBuffer row, ByteBuffer family,<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      ByteBuffer qualifier, ByteBuffer value, TPut put) throws TIOError, TException {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    checkReadOnlyMode();<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    Table htable = getTable(table);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    try {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      Table.CheckAndMutateBuilder builder = htable.checkAndMutate(byteBufferToByteArray(row),<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          byteBufferToByteArray(family)).qualifier(byteBufferToByteArray(qualifier));<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      if (value == null) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        return builder.ifNotExists().thenPut(putFromThrift(put));<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      } else {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        return builder.ifEquals(byteBufferToByteArray(value)).thenPut(putFromThrift(put));<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    } catch (IOException e) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      throw getTIOError(e);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    } finally {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      closeTable(htable);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    }<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>  @Override<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  public void putMultiple(ByteBuffer table, List&lt;TPut&gt; puts) throws TIOError, TException {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    checkReadOnlyMode();<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    Table htable = getTable(table);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    try {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      htable.put(putsFromThrift(puts));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    } catch (IOException e) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      throw getTIOError(e);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    } finally {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      closeTable(htable);<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 void deleteSingle(ByteBuffer table, TDelete deleteSingle) throws TIOError, TException {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    checkReadOnlyMode();<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    Table htable = getTable(table);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    try {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      htable.delete(deleteFromThrift(deleteSingle));<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    } catch (IOException e) {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      throw getTIOError(e);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    } finally {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      closeTable(htable);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    }<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>  @Override<a name="line.326"></a>
+<span class="sourceLineNo">327</span>  public List&lt;TDelete&gt; deleteMultiple(ByteBuffer table, List&lt;TDelete&gt; deletes) throws TIOError,<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      TException {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    checkReadOnlyMode();<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    Table htable = getTable(table);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    try {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      htable.delete(deletesFromThrift(deletes));<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    } catch (IOException e) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      throw getTIOError(e);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    } finally {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      closeTable(htable);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    return Collections.emptyList();<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 boolean checkAndMutate(ByteBuffer table, ByteBuffer row, ByteBuffer family,<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      ByteBuffer qualifier, TCompareOp compareOp, ByteBuffer value, TRowMutations rowMutations)<a name="line.343"></a>
+<span class="sourceLineNo">344</span>          throws TIOError, TException {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    checkReadOnlyMode();<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    try (final Table htable = getTable(table)) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      return htable.checkAndMutate(byteBufferToByteArray(row), byteBufferToByteArray(family))<a name="line.347"></a>
+<span class="sourceLineNo">348</span>          .qualifier(byteBufferToByteArray(qualifier))<a name="line.348"></a>
+<span class="sourceLineNo">349</span>          .ifMatches(compareOpFromThrift(compareOp), byteBufferToByteArray(value))<a name="line.349"></a>
+<span class="sourceLineNo">350</span>          .thenMutate(rowMutationsFromThrift(rowMutations));<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    } catch (IOException e) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      throw getTIOError(e);<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><a name="line.355"></a>
+<span class="sourceLineNo">356</span>  @Override<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  public boolean checkAndDelete(ByteBuffer table, ByteBuffer row, ByteBuffer family,<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      ByteBuffer qualifier, ByteBuffer value, TDelete deleteSingle) throws TIOError, TException {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    checkReadOnlyMode();<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    Table htable = getTable(table);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    try {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      Table.CheckAndMutateBuilder mutateBuilder =<a name="line.362"></a>
+<span class="sourceLineNo">363</span>          htable.checkAndMutate(byteBufferToByteArray(row), byteBufferToByteArray(family))<a name="line.363"></a>
+<span class="sourceLineNo">364</span>              .qualifier(byteBufferToByteArray(qualifier));<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      if (value == null) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>        return mutateBuilder.ifNotExists().thenDelete(deleteFromThrift(deleteSingle));<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      } else {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        return mutateBuilder.ifEquals(byteBufferToByteArray(value))<a name="line.368"></a>
+<span class="sourceLineNo">369</span>            .thenDelete(deleteFromThrift(deleteSingle));<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      }<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    } catch (IOException e) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      throw getTIOError(e);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    } finally {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      closeTable(htable);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    }<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 TResult increment(ByteBuffer table, TIncrement increment) throws TIOError, TException {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    checkReadOnlyMode();<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    Table htable = getTable(table);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    try {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      return resultFromHBase(htable.increment(incrementFromThrift(increment)));<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    } catch (IOException e) {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      throw getTIOError(e);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    } finally {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      closeTable(htable);<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><a name="line.390"></a>
+<span class="sourceLineNo">391</span>  @Override<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  public TResult append(ByteBuffer table, TAppend append) throws TIOError, TException {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    checkReadOnlyMode();<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    Table htable = getTable(table);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    try {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      return resultFromHBase(htable.append(appendFromThrift(append)));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    } catch (IOException e) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      throw getTIOError(e);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    } finally {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      closeTable(htable);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
+<span class="sourceLineNo">402</span>  }<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>  @Override<a name="line.404"></a>
+<span class="sourceLineNo">405</span>  public int openScanner(ByteBuffer table, TScan scan) throws TIOError, TException {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    Table htable = getTable(table);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    ResultScanner resultScanner = null;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    try {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      resultScanner = htable.getScanner(scanFromThrift(scan));<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    } catch (IOException e) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      throw getTIOError(e);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    } finally {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      closeTable(htable);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    }<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    return addScanner(resultScanner);<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>  @Override<a name="line.418"></a>
+<span class="sourceLineNo">419</span>  public List&lt;TResult&gt; getScannerRows(int scannerId, int numRows) throws TIOError,<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      TIllegalArgument, TException {<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    ResultScanner scanner = getScanner(scannerId);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    if (scanner == null) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      TIllegalArgument ex = new TIllegalArgument();<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      ex.setMessage("Invalid scanner Id");<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      throw ex;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    }<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    try {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      connectionCache.updateConnectionAccessTime();<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      return resultsFromHBase(scanner.next(numRows));<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    } catch (IOException e) {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      throw getTIOError(e);<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><a name="line.434"></a>
+<span class="sourceLineNo">435</span>  @Override<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  public List&lt;TResult&gt; getScannerResults(ByteBuffer table, TScan scan, int numRows)<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      throws TIOError, TException {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    Table htable = getTable(table);<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    List&lt;TResult&gt; results = null;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    ResultScanner scanner = null;<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    try {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      scanner = htable.getScanner(scanFromThrift(scan));<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      results = resultsFromHBase(scanner.next(numRows));<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    } catch (IOException e) {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      throw getTIOError(e);<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    } finally {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      if (scanner != null) {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>        scanner.close();<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      }<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      closeTable(htable);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    }<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    return results;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>  }<a name="line.453"></a>
+<span class="sourceLineNo">454</span><a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
 <span class="sourceLineNo">456</span><a name="line.456"></a>
 <span class="sourceLineNo">457</span>  @Override<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  public int openScanner(ByteBuffer table, TScan scan) throws TIOError, TException {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    Table htable = getTable(table);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    ResultScanner resultScanner = null;<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    try {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      resultScanner = htable.getScanner(scanFromThrift(scan));<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    } catch (IOException e) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      throw getTIOError(e);<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    } finally {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      closeTable(htable);<a name="line.466"></a>
+<span class="sourceLineNo">458</span>  public void closeScanner(int scannerId) throws TIOError, TIllegalArgument, TException {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    LOG.debug("scannerClose: id=" + scannerId);<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    ResultScanner scanner = getScanner(scannerId);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    if (scanner == null) {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      String message = "scanner ID is invalid";<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      LOG.warn(message);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      TIllegalArgument ex = new TIllegalArgument();<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      ex.setMessage("Invalid scanner Id");<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      throw ex;<a name="line.466"></a>
 <span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    return addScanner(resultScanner);<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>  @Override<a name="line.471"></a>
-<span class="sourceLineNo">472</span>  public List&lt;TResult&gt; getScannerRows(int scannerId, int numRows) throws TIOError,<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      TIllegalArgument, TException {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    ResultScanner scanner = getScanner(scannerId);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    if (scanner == null) {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      TIllegalArgument ex = new TIllegalArgument();<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      ex.setMessage("Invalid scanner Id");<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      throw ex;<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    }<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    try {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      connectionCache.updateConnectionAccessTime();<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      return resultsFromHBase(scanner.next(numRows));<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    } catch (IOException e) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      throw getTIOError(e);<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><a name="line.487"></a>
-<span class="sourceLineNo">488</span>  @Override<a name="line.488"></a>
-<span class="sourceLineNo">489</span>  public List&lt;TResult&gt; getScannerResults(ByteBuffer table, TScan scan, int numRows)<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      throws TIOError, TException {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    Table htable = getTable(table);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    List&lt;TResult&gt; results = null;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    ResultScanner scanner = null;<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    try {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      scanner = htable.getScanner(scanFromThrift(scan));<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      results = resultsFromHBase(scanner.next(numRows));<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    } catch (IOException e) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      throw getTIOError(e);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    } finally {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      if (scanner != null) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>        scanner.close();<a n

<TRUNCATED>

[15/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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
deleted file mode 100644
index e692633..0000000
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html
+++ /dev/null
@@ -1,2103 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
-<title>Source code</title>
-<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
-</head>
-<body>
-<div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
-<span class="sourceLineNo">009</span> *<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *<a name="line.11"></a>
-<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
-<span class="sourceLineNo">017</span> */<a name="line.17"></a>
-<span class="sourceLineNo">018</span><a name="line.18"></a>
-<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.thrift;<a name="line.19"></a>
-<span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.util.Bytes.getBytes;<a name="line.21"></a>
-<span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.io.IOException;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.net.InetAddress;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.net.InetSocketAddress;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.net.UnknownHostException;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.nio.ByteBuffer;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.security.PrivilegedAction;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.ArrayList;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.Arrays;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.Collections;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.HashMap;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.List;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.Map;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.TreeMap;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.concurrent.BlockingQueue;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.concurrent.ExecutorService;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.concurrent.TimeUnit;<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>import javax.security.auth.callback.Callback;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import javax.security.sasl.AuthorizeCallback;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import javax.security.sasl.SaslServer;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.commons.lang3.ArrayUtils;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.conf.Configuration;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.Cell.Type;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CellBuilder;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.CellBuilderFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.HConstants;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.ServerName;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.TableName;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.client.Append;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.client.Get;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.client.OperationWithAttributes;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.client.Put;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Result;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.client.Table;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.filter.ParseFilter;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.filter.PrefixFilter;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.filter.WhileMatchFilter;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.http.HttpServerUtil;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.security.SaslUtil;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.security.SaslUtil.QualityOfProtection;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.security.SecurityUtil;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.thrift.generated.AlreadyExists;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.thrift.generated.BatchMutation;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.thrift.generated.ColumnDescriptor;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.thrift.generated.Hbase;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.thrift.generated.IOError;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.thrift.generated.IllegalArgument;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.thrift.generated.Mutation;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.thrift.generated.TAppend;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.thrift.generated.TCell;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.thrift.generated.TIncrement;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.thrift.generated.TRegionInfo;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.thrift.generated.TRowResult;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.thrift.generated.TScan;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.util.ConnectionCache;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.util.DNS;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.util.JvmPauseMonitor;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.util.Strings;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.security.SaslRpcServer.SaslGssCallbackHandler;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.security.authorize.ProxyUsers;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.thrift.TException;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.thrift.TProcessor;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.thrift.protocol.TBinaryProtocol;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.thrift.protocol.TCompactProtocol;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.thrift.protocol.TProtocolFactory;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.thrift.server.THsHaServer;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.thrift.server.TNonblockingServer;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.thrift.server.TServer;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.thrift.server.TServlet;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.thrift.server.TThreadedSelectorServer;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.thrift.transport.TFramedTransport;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.thrift.transport.TNonblockingServerSocket;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.thrift.transport.TNonblockingServerTransport;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.thrift.transport.TSaslServerTransport;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.thrift.transport.TServerSocket;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.thrift.transport.TServerTransport;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.thrift.transport.TTransportFactory;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.eclipse.jetty.http.HttpVersion;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.eclipse.jetty.server.HttpConfiguration;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.eclipse.jetty.server.HttpConnectionFactory;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.eclipse.jetty.server.SecureRequestCustomizer;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.eclipse.jetty.server.Server;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.eclipse.jetty.server.SslConnectionFactory;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.eclipse.jetty.servlet.ServletContextHandler;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.eclipse.jetty.util.ssl.SslContextFactory;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.eclipse.jetty.util.thread.QueuedThreadPool;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.slf4j.Logger;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.slf4j.LoggerFactory;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hbase.thirdparty.com.google.common.base.Joiner;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hbase.thirdparty.com.google.common.base.Splitter;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hbase.thirdparty.com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Option;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.OptionGroup;<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> * ThriftServerRunner - this class starts up a Thrift server which implements<a name="line.149"></a>
-<span class="sourceLineNo">150</span> * the Hbase API specified in the Hbase.thrift IDL file.<a name="line.150"></a>
-<span class="sourceLineNo">151</span> */<a name="line.151"></a>
-<span class="sourceLineNo">152</span>@InterfaceAudience.Private<a name="line.152"></a>
-<span class="sourceLineNo">153</span>public class ThriftServerRunner implements Runnable {<a name="line.153"></a>
-<span class="sourceLineNo">154</span><a name="line.154"></a>
-<span class="sourceLineNo">155</span>  private static final Logger LOG = LoggerFactory.getLogger(ThriftServerRunner.class);<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  private static final int DEFAULT_HTTP_MAX_HEADER_SIZE = 64 * 1024; // 64k<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  static final String SERVER_TYPE_CONF_KEY =<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      "hbase.regionserver.thrift.server.type";<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>  static final String BIND_CONF_KEY = "hbase.regionserver.thrift.ipaddress";<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  static final String COMPACT_CONF_KEY = "hbase.regionserver.thrift.compact";<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  static final String FRAMED_CONF_KEY = "hbase.regionserver.thrift.framed";<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  static final String MAX_FRAME_SIZE_CONF_KEY =<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          "hbase.regionserver.thrift.framed.max_frame_size_in_mb";<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  static final String PORT_CONF_KEY = "hbase.regionserver.thrift.port";<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  static final String COALESCE_INC_KEY = "hbase.regionserver.thrift.coalesceIncrement";<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  static final String USE_HTTP_CONF_KEY = "hbase.regionserver.thrift.http";<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  static final String HTTP_MIN_THREADS_KEY = "hbase.thrift.http_threads.min";<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  static final String HTTP_MAX_THREADS_KEY = "hbase.thrift.http_threads.max";<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  static final String THRIFT_SSL_ENABLED_KEY = "hbase.thrift.ssl.enabled";<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  static final String THRIFT_SSL_KEYSTORE_STORE_KEY = "hbase.thrift.ssl.keystore.store";<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  static final String THRIFT_SSL_KEYSTORE_PASSWORD_KEY = "hbase.thrift.ssl.keystore.password";<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  static final String THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY = "hbase.thrift.ssl.keystore.keypassword";<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  static final String THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY =<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      "hbase.thrift.ssl.exclude.cipher.suites";<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  static final String THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY =<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      "hbase.thrift.ssl.include.cipher.suites";<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  static final String THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY = "hbase.thrift.ssl.exclude.protocols";<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  static final String THRIFT_SSL_INCLUDE_PROTOCOLS_KEY = "hbase.thrift.ssl.include.protocols";<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  static final String THRIFT_SUPPORT_PROXYUSER_KEY = "hbase.thrift.support.proxyuser";<a name="line.184"></a>
-<span class="sourceLineNo">185</span><a name="line.185"></a>
-<span class="sourceLineNo">186</span>  static final String THRIFT_DNS_INTERFACE_KEY = "hbase.thrift.dns.interface";<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  static final String THRIFT_DNS_NAMESERVER_KEY = "hbase.thrift.dns.nameserver";<a name="line.187"></a>
-<span class="sourceLineNo">188</span>  static final String THRIFT_KERBEROS_PRINCIPAL_KEY = "hbase.thrift.kerberos.principal";<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  static final String THRIFT_KEYTAB_FILE_KEY = "hbase.thrift.keytab.file";<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  static final String THRIFT_SPNEGO_PRINCIPAL_KEY = "hbase.thrift.spnego.principal";<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  static final String THRIFT_SPNEGO_KEYTAB_FILE_KEY = "hbase.thrift.spnego.keytab.file";<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>   * Amount of time in milliseconds before a server thread will timeout<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * waiting for client to send data on a connected socket. Currently,<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * applies only to TBoundedThreadPoolServer<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   */<a name="line.197"></a>
-<span class="sourceLineNo">198</span>  public static final String THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY =<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    "hbase.thrift.server.socket.read.timeout";<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  public static final int THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT = 60000;<a name="line.200"></a>
-<span class="sourceLineNo">201</span><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>   * Thrift quality of protection configuration key. Valid values can be:<a name="line.204"></a>
-<span class="sourceLineNo">205</span>   * auth-conf: authentication, integrity and confidentiality checking<a name="line.205"></a>
-<span class="sourceLineNo">206</span>   * auth-int: authentication and integrity checking<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   * auth: authentication only<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   *<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   * This is used to authenticate the callers and support impersonation.<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   * The thrift server and the HBase cluster must run in secure mode.<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   */<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  static final String THRIFT_QOP_KEY = "hbase.thrift.security.qop";<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  static final String BACKLOG_CONF_KEY = "hbase.regionserver.thrift.backlog";<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>  private static final String DEFAULT_BIND_ADDR = "0.0.0.0";<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  public static final int DEFAULT_LISTEN_PORT = 9090;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  public static final int HREGION_VERSION = 1;<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>  private final int listenPort;<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>  private Configuration conf;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  volatile TServer tserver;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  volatile Server httpServer;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>  private final Hbase.Iface handler;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  private final ThriftMetrics metrics;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  private final HBaseHandler hbaseHandler;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private final UserGroupInformation serviceUGI;<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private SaslUtil.QualityOfProtection qop;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  private String host;<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>  private final boolean securityEnabled;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  private final boolean doAsEnabled;<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>  private final JvmPauseMonitor pauseMonitor;<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>  static String THRIFT_HTTP_ALLOW_OPTIONS_METHOD = "hbase.thrift.http.allow.options.method";<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  private static boolean THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT = false;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  /** An enum of server implementation selections */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  public enum ImplType {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    HS_HA("hsha", true, THsHaServer.class, true),<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    NONBLOCKING("nonblocking", true, TNonblockingServer.class, true),<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    THREAD_POOL("threadpool", false, TBoundedThreadPoolServer.class, true),<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    THREADED_SELECTOR("threadedselector", true, TThreadedSelectorServer.class, true);<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>    public static final ImplType DEFAULT = THREAD_POOL;<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>    final String option;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    final boolean isAlwaysFramed;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    final Class&lt;? extends TServer&gt; serverClass;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    final boolean canSpecifyBindIP;<a name="line.252"></a>
-<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>    private ImplType(String option, boolean isAlwaysFramed,<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        Class&lt;? extends TServer&gt; serverClass, boolean canSpecifyBindIP) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      this.option = option;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      this.isAlwaysFramed = isAlwaysFramed;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      this.serverClass = serverClass;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      this.canSpecifyBindIP = canSpecifyBindIP;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>    /**<a name="line.262"></a>
-<span class="sourceLineNo">263</span>     * @return &lt;code&gt;-option&lt;/code&gt;<a name="line.263"></a>
-<span class="sourceLineNo">264</span>     */<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    @Override<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    public String toString() {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      return "-" + option;<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>    public String getOption() {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      return option;<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>    public boolean isAlwaysFramed() {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      return isAlwaysFramed;<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>    public String getDescription() {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      StringBuilder sb = new StringBuilder("Use the " +<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          serverClass.getSimpleName());<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      if (isAlwaysFramed) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        sb.append(" This implies the framed transport.");<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      }<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      if (this == DEFAULT) {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        sb.append("This is the default.");<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      return sb.toString();<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    static OptionGroup createOptionGroup() {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      OptionGroup group = new OptionGroup();<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      for (ImplType t : values()) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        group.addOption(new Option(t.option, t.getDescription()));<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      }<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      return group;<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>    public static ImplType getServerImpl(Configuration conf) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      String confType = conf.get(SERVER_TYPE_CONF_KEY, THREAD_POOL.option);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      for (ImplType t : values()) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        if (confType.equals(t.option)) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>          return t;<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>      throw new AssertionError("Unknown server ImplType.option:" + confType);<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>    static void setServerImpl(CommandLine cmd, Configuration conf) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      ImplType chosenType = null;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      int numChosen = 0;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      for (ImplType t : values()) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        if (cmd.hasOption(t.option)) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>          chosenType = t;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>          ++numChosen;<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>      if (numChosen &lt; 1) {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>        LOG.info("Using default thrift server type");<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        chosenType = DEFAULT;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      } else if (numChosen &gt; 1) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        throw new AssertionError("Exactly one option out of " +<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          Arrays.toString(values()) + " has to be specified");<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      LOG.info("Using thrift server type " + chosenType.option);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      conf.set(SERVER_TYPE_CONF_KEY, chosenType.option);<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 String simpleClassName() {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      return serverClass.getSimpleName();<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>    public static List&lt;String&gt; serversThatCannotSpecifyBindIP() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      List&lt;String&gt; l = new ArrayList&lt;&gt;();<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      for (ImplType t : values()) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        if (!t.canSpecifyBindIP) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>          l.add(t.simpleClassName());<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      return l;<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><a name="line.342"></a>
-<span class="sourceLineNo">343</span>  public ThriftServerRunner(Configuration conf) throws IOException {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    // login the server principal (if using secure Hadoop)<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    UserProvider userProvider = UserProvider.instantiate(conf);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    securityEnabled = userProvider.isHadoopSecurityEnabled()<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        &amp;&amp; userProvider.isHBaseSecurityEnabled();<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    if (securityEnabled) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      host = Strings.domainNamePointerToHostName(DNS.getDefaultHost(<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        conf.get(THRIFT_DNS_INTERFACE_KEY, "default"),<a name="line.350"></a>
-<span class="sourceLineNo">351</span>        conf.get(THRIFT_DNS_NAMESERVER_KEY, "default")));<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      userProvider.login(THRIFT_KEYTAB_FILE_KEY, THRIFT_KERBEROS_PRINCIPAL_KEY, host);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    }<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    this.serviceUGI = userProvider.getCurrent().getUGI();<a name="line.354"></a>
-<span class="sourceLineNo">355</span><a name="line.355"></a>
-<span class="sourceLineNo">356</span>    this.conf = HBaseConfiguration.create(conf);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    this.listenPort = conf.getInt(PORT_CONF_KEY, DEFAULT_LISTEN_PORT);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    this.metrics = new ThriftMetrics(conf, ThriftMetrics.ThriftServerType.ONE);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    this.pauseMonitor = new JvmPauseMonitor(conf, this.metrics.getSource());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    this.hbaseHandler = new HBaseHandler(conf, userProvider);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    this.hbaseHandler.initMetrics(metrics);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    this.handler = HbaseHandlerMetricsProxy.newInstance(hbaseHandler, metrics, conf);<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    boolean httpEnabled = conf.getBoolean(USE_HTTP_CONF_KEY, false);<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    doAsEnabled = conf.getBoolean(THRIFT_SUPPORT_PROXYUSER_KEY, false);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    if (doAsEnabled &amp;&amp; !httpEnabled) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      LOG.warn("Fail to enable the doAs feature. " + USE_HTTP_CONF_KEY + " is not configured");<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>    String strQop = conf.get(THRIFT_QOP_KEY);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    if (strQop != null) {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      this.qop = SaslUtil.getQop(strQop);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    }<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    if (qop != null) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      if (qop != QualityOfProtection.AUTHENTICATION &amp;&amp;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>          qop != QualityOfProtection.INTEGRITY &amp;&amp;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>          qop != QualityOfProtection.PRIVACY) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>        throw new IOException(String.format("Invalid %s: It must be one of %s, %s, or %s.",<a name="line.378"></a>
-<span class="sourceLineNo">379</span>                              THRIFT_QOP_KEY,<a name="line.379"></a>
-<span class="sourceLineNo">380</span>                              QualityOfProtection.AUTHENTICATION.name(),<a name="line.380"></a>
-<span class="sourceLineNo">381</span>                              QualityOfProtection.INTEGRITY.name(),<a name="line.381"></a>
-<span class="sourceLineNo">382</span>                              QualityOfProtection.PRIVACY.name()));<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      }<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      checkHttpSecurity(qop, conf);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      if (!securityEnabled) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        throw new IOException("Thrift server must run in secure mode to support authentication");<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><a name="line.390"></a>
-<span class="sourceLineNo">391</span>  private void checkHttpSecurity(QualityOfProtection qop, Configuration conf) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    if (qop == QualityOfProtection.PRIVACY &amp;&amp;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        conf.getBoolean(USE_HTTP_CONF_KEY, false) &amp;&amp;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        !conf.getBoolean(THRIFT_SSL_ENABLED_KEY, false)) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      throw new IllegalArgumentException("Thrift HTTP Server's QoP is privacy, but " +<a name="line.395"></a>
-<span class="sourceLineNo">396</span>          THRIFT_SSL_ENABLED_KEY + " is false");<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 name="line.400"></a>
-<span class="sourceLineNo">401</span>   * Runs the Thrift server<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  @Override<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  public void run() {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    serviceUGI.doAs(new PrivilegedAction&lt;Object&gt;() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      @Override<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      public Object run() {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        try {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>          pauseMonitor.start();<a name="line.409"></a>
-<span class="sourceLineNo">410</span>          if (conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>            setupHTTPServer();<a name="line.411"></a>
-<span class="sourceLineNo">412</span>            httpServer.start();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>            httpServer.join();<a name="line.413"></a>
-<span class="sourceLineNo">414</span>          } else {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>            setupServer();<a name="line.415"></a>
-<span class="sourceLineNo">416</span>            tserver.serve();<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        } catch (Exception e) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>          LOG.error(HBaseMarkers.FATAL, "Cannot run ThriftServer", e);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>          // Crash the process if the ThriftServer is not running<a name="line.420"></a>
-<span class="sourceLineNo">421</span>          System.exit(-1);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        }<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        return null;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    });<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><a name="line.428"></a>
-<span class="sourceLineNo">429</span>  public void shutdown() {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    if (pauseMonitor != null) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      pauseMonitor.stop();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    }<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    if (tserver != null) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      tserver.stop();<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      tserver = null;<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    }<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    if (httpServer != null) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      try {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        httpServer.stop();<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        httpServer = null;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      } catch (Exception e) {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        LOG.error("Problem encountered in shutting down HTTP server", e);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      }<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      httpServer = null;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>  private void setupHTTPServer() throws IOException {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    TProcessor processor = new Hbase.Processor&lt;&gt;(handler);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    TServlet thriftHttpServlet = new ThriftHttpServlet(processor, protocolFactory, serviceUGI,<a name="line.451"></a>
-<span class="sourceLineNo">452</span>        conf, hbaseHandler, securityEnabled, doAsEnabled);<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // Set the default max thread number to 100 to limit<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    // the number of concurrent requests so that Thrfit HTTP server doesn't OOM easily.<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    // Jetty set the default max thread number to 250, if we don't set it.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    //<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    // Our default min thread number 2 is the same as that used by Jetty.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    int minThreads = conf.getInt(HTTP_MIN_THREADS_KEY, 2);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    int maxThreads = conf.getInt(HTTP_MAX_THREADS_KEY, 100);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    QueuedThreadPool threadPool = new QueuedThreadPool(maxThreads);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    threadPool.setMinThreads(minThreads);<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    httpServer = new Server(threadPool);<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>    // Context handler<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    ServletContextHandler ctxHandler = new ServletContextHandler(httpServer, "/",<a name="line.466"></a>
-<span class="sourceLineNo">467</span>            ServletContextHandler.SESSIONS);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    ctxHandler.addServlet(new ServletHolder(thriftHttpServlet), "/*");<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    HttpServerUtil.constrainHttpMethods(ctxHandler,<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      conf.getBoolean(THRIFT_HTTP_ALLOW_OPTIONS_METHOD, THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT));<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>    // set up Jetty and run the embedded server<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    HttpConfiguration httpConfig = new HttpConfiguration();<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    httpConfig.setSecureScheme("https");<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    httpConfig.setSecurePort(listenPort);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    httpConfig.setHeaderCacheSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    httpConfig.setRequestHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    httpConfig.setResponseHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    httpConfig.setSendServerVersion(false);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    httpConfig.setSendDateHeader(false);<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>    ServerConnector serverConnector;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    if(conf.getBoolean(THRIFT_SSL_ENABLED_KEY, false)) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      HttpConfiguration httpsConfig = new HttpConfiguration(httpConfig);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      httpsConfig.addCustomizer(new SecureRequestCustomizer());<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>      SslContextFactory sslCtxFactory = new SslContextFactory();<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      String keystore = conf.get(THRIFT_SSL_KEYSTORE_STORE_KEY);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      String password = HBaseConfiguration.getPassword(conf,<a name="line.489"></a>
-<span class="sourceLineNo">490</span>          THRIFT_SSL_KEYSTORE_PASSWORD_KEY, null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      String keyPassword = HBaseConfiguration.getPassword(conf,<a name="line.491"></a>
-<span class="sourceLineNo">492</span>          THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY, password);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      sslCtxFactory.setKeyStorePath(keystore);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      sslCtxFactory.setKeyStorePassword(password);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      sslCtxFactory.setKeyManagerPassword(keyPassword);<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>      String[] excludeCiphers = conf.getStrings(<a name="line.497"></a>
-<span class="sourceLineNo">498</span>          THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      if (excludeCiphers.length != 0) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        sslCtxFactory.setExcludeCipherSuites(excludeCiphers);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      }<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      String[] includeCiphers = conf.getStrings(<a name="line.502"></a>
-<span class="sourceLineNo">503</span>          THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      if (includeCiphers.length != 0) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        sslCtxFactory.setIncludeCipherSuites(includeCiphers);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      }<a name="line.506"></a>
-<span class="sourceLineNo">507</span><a name="line.507"></a>
-<span class="sourceLineNo">508</span>      // Disable SSLv3 by default due to "Poodle" Vulnerability - CVE-2014-3566<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      String[] excludeProtocols = conf.getStrings(<a name="line.509"></a>
-<span class="sourceLineNo">510</span>          THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY, "SSLv3");<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      if (excludeProtocols.length != 0) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        sslCtxFactory.setExcludeProtocols(excludeProtocols);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      String[] includeProtocols = conf.getStrings(<a name="line.514"></a>
-<span class="sourceLineNo">515</span>          THRIFT_SSL_INCLUDE_PROTOCOLS_KEY, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      if (includeProtocols.length != 0) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>        sslCtxFactory.setIncludeProtocols(includeProtocols);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      }<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>      serverConnector = new ServerConnector(httpServer,<a name="line.520"></a>
-<span class="sourceLineNo">521</span>          new SslConnectionFactory(sslCtxFactory, HttpVersion.HTTP_1_1.toString()),<a name="line.521"></a>
-<span class="sourceLineNo">522</span>          new HttpConnectionFactory(httpsConfig));<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    } else {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      serverConnector = new ServerConnector(httpServer, new HttpConnectionFactory(httpConfig));<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    serverConnector.setPort(listenPort);<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    serverConnector.setHost(getBindAddress(conf).getHostAddress());<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    httpServer.addConnector(serverConnector);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    httpServer.setStopAtShutdown(true);<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>    if (doAsEnabled) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      ProxyUsers.refreshSuperUserGroupsConfiguration(conf);<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>    LOG.info("Starting Thrift HTTP Server on {}", Integer.toString(listenPort));<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>   * Setting up the thrift TServer<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  private void setupServer() throws Exception {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    // Construct correct ProtocolFactory<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    TProtocolFactory protocolFactory = getProtocolFactory();<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    final TProcessor p = new Hbase.Processor&lt;&gt;(handler);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    ImplType implType = ImplType.getServerImpl(conf);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    TProcessor processor = p;<a name="line.547"></a>
-<span class="sourceLineNo">548</span><a name="line.548"></a>
-<span class="sourceLineNo">549</span>    // Construct correct TransportFactory<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    TTransportFactory transportFactory;<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    if (conf.getBoolean(FRAMED_CONF_KEY, false) || implType.isAlwaysFramed) {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      if (qop != null) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        throw new RuntimeException("Thrift server authentication"<a name="line.553"></a>
-<span class="sourceLineNo">554</span>          + " doesn't work with framed transport yet");<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      transportFactory = new TFramedTransport.Factory(<a name="line.556"></a>
-<span class="sourceLineNo">557</span>          conf.getInt(MAX_FRAME_SIZE_CONF_KEY, 2)  * 1024 * 1024);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      LOG.debug("Using framed transport");<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    } else if (qop == null) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      transportFactory = new TTransportFactory();<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    } else {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      // Extract the name from the principal<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      String thriftKerberosPrincipal = conf.get(THRIFT_KERBEROS_PRINCIPAL_KEY);<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      if (thriftKerberosPrincipal == null) {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>        throw new IllegalArgumentException(THRIFT_KERBEROS_PRINCIPAL_KEY + " cannot be null");<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      }<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      String name = SecurityUtil.getUserFromPrincipal(thriftKerberosPrincipal);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      Map&lt;String, String&gt; saslProperties = SaslUtil.initSaslProperties(qop.name());<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      TSaslServerTransport.Factory saslFactory = new TSaslServerTransport.Factory();<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      saslFactory.addServerDefinition("GSSAPI", name, host, saslProperties,<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        new SaslGssCallbackHandler() {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>          @Override<a name="line.572"></a>
-<span class="sourceLineNo">573</span>          public void handle(Callback[] callbacks)<a name="line.573"></a>
-<span class="sourceLineNo">574</span>              throws UnsupportedCallbackException {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>            AuthorizeCallback ac = null;<a name="line.575"></a>
-<span class="sourceLineNo">576</span>            for (Callback callback : callbacks) {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>              if (callback instanceof AuthorizeCallback) {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>                ac = (AuthorizeCallback) callback;<a name="line.578"></a>
-<span class="sourceLineNo">579</span>              } else {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>                throw new UnsupportedCallbackException(callback,<a name="line.580"></a>
-<span class="sourceLineNo">581</span>                    "Unrecognized SASL GSSAPI Callback");<a name="line.581"></a>
-<span class="sourceLineNo">582</span>              }<a name="line.582"></a>
-<span class="sourceLineNo">583</span>            }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>            if (ac != null) {<a name="line.584"></a>
-<span class="sourceLineNo">585</span>              String authid = ac.getAuthenticationID();<a name="line.585"></a>
-<span class="sourceLineNo">586</span>              String authzid = ac.getAuthorizationID();<a name="line.586"></a>
-<span class="sourceLineNo">587</span>              if (!authid.equals(authzid)) {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>                ac.setAuthorized(false);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>              } else {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>                ac.setAuthorized(true);<a name="line.590"></a>
-<span class="sourceLineNo">591</span>                String userName = SecurityUtil.getUserFromPrincipal(authzid);<a name="line.591"></a>
-<span class="sourceLineNo">592</span>                LOG.info("Effective user: {}", userName);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>                ac.setAuthorizedID(userName);<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>          }<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        });<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      transportFactory = saslFactory;<a name="line.598"></a>
-<span class="sourceLineNo">599</span><a name="line.599"></a>
-<span class="sourceLineNo">600</span>      // Create a processor wrapper, to get the caller<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      processor = (inProt, outProt) -&gt; {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>        TSaslServerTransport saslServerTransport =<a name="line.602"></a>
-<span class="sourceLineNo">603</span>          (TSaslServerTransport)inProt.getTransport();<a name="line.603"></a>
-<span class="sourceLineNo">604</span>        SaslServer saslServer = saslServerTransport.getSaslServer();<a name="line.604"></a>
-<span class="sourceLineNo">605</span>        String principal = saslServer.getAuthorizationID();<a name="line.605"></a>
-<span class="sourceLineNo">606</span>        hbaseHandler.setEffectiveUser(principal);<a name="line.606"></a>
-<span class="sourceLineNo">607</span>        return p.process(inProt, outProt);<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      };<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    }<a name="line.609"></a>
-<span class="sourceLineNo">610</span><a name="line.610"></a>
-<span class="sourceLineNo">611</span>    if (conf.get(BIND_CONF_KEY) != null &amp;&amp; !implType.canSpecifyBindIP) {<a name="line.611"></a>
-<span class="sourceLineNo">612</span>      LOG.error("Server types {} don't support IP address binding at the moment. See " +<a name="line.612"></a>
-<span class="sourceLineNo">613</span>          "https://issues.apache.org/jira/browse/HBASE-2155 for details.",<a name="line.613"></a>
-<span class="sourceLineNo">614</span>          Joiner.on(", ").join(ImplType.serversThatCannotSpecifyBindIP()));<a name="line.614"></a>
-<span class="sourceLineNo">615</span>      throw new RuntimeException("-" + BIND_CONF_KEY + " not supported with " + implType);<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>
-<span class="sourceLineNo">618</span>    // Thrift's implementation uses '0' as a placeholder for 'use the default.'<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    int backlog = conf.getInt(BACKLOG_CONF_KEY, 0);<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>    if (implType == ImplType.HS_HA || implType == ImplType.NONBLOCKING ||<a name="line.621"></a>
-<span class="sourceLineNo">622</span>        implType == ImplType.THREADED_SELECTOR) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      InetAddress listenAddress = getBindAddress(conf);<a name="line.623"></a>
-<span class="sourceLineNo">624</span>      TNonblockingServerTransport serverTransport = new TNonblockingServerSocket(<a name="line.624"></a>
-<span class="sourceLineNo">625</span>          new InetSocketAddress(listenAddress, listenPort));<a name="line.625"></a>
-<span class="sourceLineNo">626</span><a name="line.626"></a>
-<span class="sourceLineNo">627</span>      if (implType == ImplType.NONBLOCKING) {<a name="line.627"></a>
-<span class="sourceLineNo">628</span>        TNonblockingServer.Args serverArgs =<a name="line.628"></a>
-<span class="sourceLineNo">629</span>            new TNonblockingServer.Args(serverTransport);<a name="line.629"></a>
-<span class="sourceLineNo">630</span>        serverArgs.processor(processor)<a name="line.630"></a>
-<span class="sourceLineNo">631</span>                  .transportFactory(transportFactory)<a name="line.631"></a>
-<span class="sourceLineNo">632</span>                  .protocolFactory(protocolFactory);<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        tserver = new TNonblockingServer(serverArgs);<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      } else if (implType == ImplType.HS_HA) {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>        THsHaServer.Args serverArgs = new THsHaServer.Args(serverTransport);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>        CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.636"></a>
-<span class="sourceLineNo">637</span>        ExecutorService executorService = createExecutor(<a name="line.637"></a>
-<span class="sourceLineNo">638</span>            callQueue, serverArgs.getMaxWorkerThreads(), serverArgs.getMaxWorkerThreads());<a name="line.638"></a>
-<span class="sourceLineNo">639</span>        serverArgs.executorService(executorService).processor(processor)<a name="line.639"></a>
-<span class="sourceLineNo">640</span>                .transportFactory(transportFactory).protocolFactory(protocolFactory);<a name="line.640"></a>
-<span class="sourceLineNo">641</span>        tserver = new THsHaServer(serverArgs);<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      } else { // THREADED_SELECTOR<a name="line.642"></a>
-<span class="sourceLineNo">643</span>        TThreadedSelectorServer.Args serverArgs =<a name="line.643"></a>
-<span class="sourceLineNo">644</span>            new HThreadedSelectorServerArgs(serverTransport, conf);<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        ExecutorService executorService = createExecutor(<a name="line.646"></a>
-<span class="sourceLineNo">647</span>            callQueue, serverArgs.getWorkerThreads(), serverArgs.getWorkerThreads());<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        serverArgs.executorService(executorService).processor(processor)<a name="line.648"></a>
-<span class="sourceLineNo">649</span>                .transportFactory(transportFactory).protocolFactory(protocolFactory);<a name="line.649"></a>
-<span class="sourceLineNo">650</span>        tserver = new TThreadedSelectorServer(serverArgs);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      }<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      LOG.info("starting HBase {} server on {}", implType.simpleClassName(),<a name="line.652"></a>
-<span class="sourceLineNo">653</span>          Integer.toString(listenPort));<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    } else if (implType == ImplType.THREAD_POOL) {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      // Thread pool server. Get the IP address to bind to.<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      InetAddress listenAddress = getBindAddress(conf);<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      int readTimeout = conf.getInt(THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY,<a name="line.657"></a>
-<span class="sourceLineNo">658</span>          THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT);<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      TServerTransport serverTransport = new TServerSocket(<a name="line.659"></a>
-<span class="sourceLineNo">660</span>          new TServerSocket.ServerSocketTransportArgs().<a name="line.660"></a>
-<span class="sourceLineNo">661</span>              bindAddr(new InetSocketAddress(listenAddress, listenPort)).backlog(backlog).<a name="line.661"></a>
-<span class="sourceLineNo">662</span>              clientTimeout(readTimeout));<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>      TBoundedThreadPoolServer.Args serverArgs =<a name="line.664"></a>
-<span class="sourceLineNo">665</span>          new TBoundedThreadPoolServer.Args(serverTransport, conf);<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      serverArgs.processor(processor).transportFactory(transportFactory)<a name="line.666"></a>
-<span class="sourceLineNo">667</span>              .protocolFactory(protocolFactory);<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      LOG.info("starting " + ImplType.THREAD_POOL.simpleClassName() + " on "<a name="line.668"></a>
-<span class="sourceLineNo">669</span>          + listenAddress + ":" + Integer.toString(listenPort)<a name="line.669"></a>
-<span class="sourceLineNo">670</span>          + " with readTimeout " + readTimeout + "ms; " + serverArgs);<a name="line.670"></a>
-<span class="sourceLineNo">671</span>      this.tserver = new TBoundedThreadPoolServer(serverArgs, metrics);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    } else {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      throw new AssertionError("Unsupported Thrift server implementation: " +<a name="line.673"></a>
-<span class="sourceLineNo">674</span>          implType.simpleClassName());<a name="line.674"></a>
-<span class="sourceLineNo">675</span>    }<a name="line.675"></a>
-<span class="sourceLineNo">676</span><a name="line.676"></a>
-<span class="sourceLineNo">677</span>    // A sanity check that we instantiated the right type of server.<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    if (tserver.getClass() != implType.serverClass) {<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      throw new AssertionError("Expected to create Thrift server class " +<a name="line.679"></a>
-<span class="sourceLineNo">680</span>          implType.serverClass.getName() + " but got " +<a name="line.680"></a>
-<span class="sourceLineNo">681</span>          tserver.getClass().getName());<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    }<a name="line.682"></a>
-<span class="sourceLineNo">683</span><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>    registerFilters(conf);<a name="line.686"></a>
-<span class="sourceLineNo">687</span>  }<a name="line.687"></a>
-<span class="sourceLineNo">688</span><a name="line.688"></a>
-<span class="sourceLineNo">689</span>  private TProtocolFactory getProtocolFactory() {<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    TProtocolFactory protocolFactory;<a name="line.690"></a>
-<span class="sourceLineNo">691</span><a name="line.691"></a>
-<span class="sourceLineNo">692</span>    if (conf.getBoolean(COMPACT_CONF_KEY, false)) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>      LOG.debug("Using compact protocol");<a name="line.693"></a>
-<span class="sourceLineNo">694</span>      protocolFactory = new TCompactProtocol.Factory();<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    } else {<a name="line.695"></a>
-<span class="sourceLineNo">696</span>      LOG.debug("Using binary protocol");<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      protocolFactory = new TBinaryProtocol.Factory();<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    }<a name="line.698"></a>
-<span class="sourceLineNo">699</span><a name="line.699"></a>
-<span class="sourceLineNo">700</span>    return protocolFactory;<a name="line.700"></a>
-<span class="sourceLineNo">701</span>  }<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>  ExecutorService createExecutor(BlockingQueue&lt;Runnable&gt; callQueue,<a name="line.703"></a>
-<span class="sourceLineNo">704</span>                                 int minWorkers, int maxWorkers) {<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    ThreadFactoryBuilder tfb = new ThreadFactoryBuilder();<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    tfb.setDaemon(true);<a name="line.706"></a>
-<span class="sourceLineNo">707</span>    tfb.setNameFormat("thrift-worker-%d");<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    ThreadPoolExecutor threadPool = new THBaseThreadPoolExecutor(minWorkers, maxWorkers,<a name="line.708"></a>
-<span class="sourceLineNo">709</span>            Long.MAX_VALUE, TimeUnit.SECONDS, callQueue, tfb.build(), metrics);<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    threadPool.allowCoreThreadTimeOut(true);<a name="line.710"></a>
-<span class="sourceLineNo">711</span>    return threadPool;<a name="line.711"></a>
-<span class="sourceLineNo">712</span>  }<a name="line.712"></a>
-<span class="sourceLineNo">713</span><a name="line.713"></a>
-<span class="sourceLineNo">714</span>  private InetAddress getBindAddress(Configuration conf)<a name="line.714"></a>
-<span class="sourceLineNo">715</span>      throws UnknownHostException {<a name="line.715"></a>
-<span class="sourceLineNo">716</span>    String bindAddressStr = conf.get(BIND_CONF_KEY, DEFAULT_BIND_ADDR);<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    return InetAddress.getByName(bindAddressStr);<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
-<span class="sourceLineNo">719</span><a name="line.719"></a>
-<span class="sourceLineNo">720</span>  protected static class ResultScannerWrapper {<a name="line.720"></a>
-<span class="sourceLineNo">721</span><a name="line.721"></a>
-<span class="sourceLineNo">722</span>    private final ResultScanner scanner;<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    private final boolean sortColumns;<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    public ResultScannerWrapper(ResultScanner resultScanner,<a name="line.724"></a>
-<span class="sourceLineNo">725</span>                                boolean sortResultColumns) {<a name="line.725"></a>
-<span class="sourceLineNo">726</span>      scanner = resultScanner;<a name="line.726"></a>
-<span class="sourceLineNo">727</span>      sortColumns = sortResultColumns;<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>    public ResultScanner getScanner() {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      return scanner;<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>    public boolean isColumnSorted() {<a name="line.734"></a>
-<span class="sourceLineNo">735</span>      return sortColumns;<a name="line.735"></a>
-<span class="sourceLineNo">736</span>    }<a name="line.736"></a>
-<span class="sourceLineNo">737</span>  }<a name="line.737"></a>
-<span class="sourceLineNo">738</span><a name="line.738"></a>
-<span class="sourceLineNo">739</span>  /**<a name="line.739"></a>
-<span class="sourceLineNo">740</span>   * The HBaseHandler is a glue object that connects Thrift RPC calls to the<a name="line.740"></a>
-<span class="sourceLineNo">741</span>   * HBase client API primarily defined in the Admin and Table objects.<a name="line.741"></a>
-<span class="sourceLineNo">742</span>   */<a name="line.742"></a>
-<span class="sourceLineNo">743</span>  public static class HBaseHandler implements Hbase.Iface {<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    protected Configuration conf;<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    protected static final Logger LOG = LoggerFactory.getLogger(HBaseHandler.class);<a name="line.745"></a>
-<span class="sourceLineNo">746</span><a name="line.746"></a>
-<span class="sourceLineNo">747</span>    // nextScannerId and scannerMap are used to manage scanner state<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    protected int nextScannerId = 0;<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    protected HashMap&lt;Integer, ResultScannerWrapper&gt; scannerMap;<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    private ThriftMetrics metrics = null;<a name="line.750"></a>
-<span class="sourceLineNo">751</span><a name="line.751"></a>
-<span class="sourceLineNo">752</span>    private final ConnectionCache connectionCache;<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    IncrementCoalescer coalescer;<a name="line.753"></a>
-<span class="sourceLineNo">754</span><a name="line.754"></a>
-<span class="sourceLineNo">755</span>    static final String CLEANUP_INTERVAL = "hbase.thrift.connection.cleanup-interval";<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    static final String MAX_IDLETIME = "hbase.thrift.connection.max-idletime";<a name="line.756"></a>
-<span class="sourceLineNo">757</span><a name="line.757"></a>
-<span class="sourceLineNo">758</span>    /**<a name="line.758"></a>
-<span class="sourceLineNo">759</span>     * Returns a list of all the column families for a given Table.<a name="line.759"></a>
-<span class="sourceLineNo">760</span>     *<a name="line.760"></a>
-<span class="sourceLineNo">761</span>     * @param table<a name="line.761"></a>
-<span class="sourceLineNo">762</span>     * @throws IOException<a name="line.762"></a>
-<span class="sourceLineNo">763</span>     */<a name="line.763"></a>
-<span class="sourceLineNo">764</span>    byte[][] getAllColumns(Table table) throws IOException {<a name="line.764"></a>
-<span class="sourceLineNo">765</span>      HColumnDescriptor[] cds = table.getTableDescriptor().getColumnFamilies();<a name="line.765"></a>
-<span class="sourceLineNo">766</span>      byte[][] columns = new byte[cds.length][];<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      for (int i = 0; i &lt; cds.length; i++) {<a name="line.767"></a>
-<span class="sourceLineNo">768</span>        columns[i] = Bytes.add(cds[i].getName(),<a name="line.768"></a>
-<span class="sourceLineNo">769</span>            KeyValue.COLUMN_FAMILY_DELIM_ARRAY);<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      }<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      return columns;<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    }<a name="line.772"></a>
-<span class="sourceLineNo">773</span><a name="line.773"></a>
-<span class="sourceLineNo">774</span>    /**<a name="line.774"></a>
-<span class="sourceLineNo">775</span>     * Creates and returns a Table instance from a given table name.<a name="line.775"></a>
-<span class="sourceLineNo">776</span>     *<a name="line.776"></a>
-<span class="sourceLineNo">777</span>     * @param tableName<a name="line.777"></a>
-<span class="sourceLineNo">778</span>     *          name of table<a name="line.778"></a>
-<span class="sourceLineNo">779</span>     * @return Table object<a name="line.779"></a>
-<span class="sourceLineNo">780</span>     * @throws IOException if getting the table fails<a name="line.780"></a>
-<span class="sourceLineNo">781</span>     */<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    public Table getTable(final byte[] tableName) throws IOException {<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      String table = Bytes.toString(tableName);<a name="line.783"></a>
-<span class="sourceLineNo">784</span>      return connectionCache.getTable(table);<a name="line.784"></a>
-<span class="sourceLineNo">785</span>    }<a name="line.785"></a>
-<span class="sourceLineNo">786</span><a name="line.786"></a>
-<span class="sourceLineNo">787</span>    public Table getTable(final ByteBuffer tableName) throws IOException {<a name="line.787"></a>
-<span class="sourceLineNo">788</span>      return getTable(getBytes(tableName));<a name="line.788"></a>
-<span class="sourceLineNo">789</span>    }<a name="line.789"></a>
-<span class="sourceLineNo">790</span><a name="line.790"></a>
-<span class="sourceLineNo">791</span>    /**<a name="line.791"></a>
-<span class="sourceLineNo">792</span>     * Assigns a unique ID to the scanner and adds the mapping to an internal<a name="line.792"></a>
-<span class="sourceLineNo">793</span>     * hash-map.<a name="line.793"></a>
-<span class="sourceLineNo">794</span>     *<a name="line.794"></a>
-<span class="sourceLineNo">795</span>     * @param scanner the {@link ResultScanner} to add<a name="line.795"></a>
-<span class="sourceLineNo">796</span>     * @return integer scanner id<a name="line.796"></a>
-<span class="sourceLineNo">797</span>     */<a name="line.797"></a>
-<span class="sourceLineNo">798</span>    protected synchronized int addScanner(ResultScanner scanner, boolean sortColumns) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>      int id = nextScannerId++;<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      ResultScannerWrapper resultScannerWrapper = new ResultScannerWrapper(scanner, sortColumns);<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      scannerMap.put(id, resultScannerWrapper);<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      return id;<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    }<a name="line.803"></a>
-<span class="sourceLineNo">804</span><a name="line.804"></a>
-<span class="sourceLineNo">805</span>    /**<a name="line.805"></a>
-<span class="sourceLineNo">806</span>     * Returns the scanner associated with the specified ID.<a name="line.806"></a>
-<span class="sourceLineNo">807</span>     *<a name="line.807"></a>
-<span class="sourceLineNo">808</span>     * @param id the ID of the scanner to get<a name="line.808"></a>
-<span class="sourceLineNo">809</span>     * @return a Scanner, or null if ID was invalid.<a name="line.809"></a>
-<span class="sourceLineNo">810</span>     */<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    protected synchronized ResultScannerWrapper getScanner(int id) {<a name="line.811"></a>
-<span class="sourceLineNo">812</span>      return scannerMap.get(id);<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    }<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>     * Removes the scanner associated with the specified ID from the internal<a name="line.816"></a>
-<span class="sourceLineNo">817</span>     * id-&amp;gt;scanner hash-map.<a name="line.817"></a>
-<span class="sourceLineNo">818</span>     *<a name="line.818"></a>
-<span class="sourceLineNo">819</span>     * @param id the ID of the scanner to remove<a name="line.819"></a>
-<span class="sourceLineNo">820</span>     * @return a Scanner, or null if ID was invalid.<a name="line.820"></a>
-<span class="sourceLineNo">821</span>     */<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    protected synchronized ResultScannerWrapper removeScanner(int id) {<a name="line.822"></a>
-<span class="sourceLineNo">823</span>      return scannerMap.remove(id);<a name="line.823"></a>
-<span class="sourceLineNo">824</span>    }<a name="line.824"></a>
-<span class="sourceLineNo">825</span><a name="line.825"></a>
-<span class="sourceLineNo">826</span>    protected HBaseHandler(final Configuration c,<a name="line.826"></a>
-<span class="sourceLineNo">827</span>        final UserProvider userProvider) throws IOException {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      this.conf = c;<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      scannerMap = new HashMap&lt;&gt;();<a name="line.829"></a>
-<span class="sourceLineNo">830</span>      this.coalescer = new IncrementCoalescer(this);<a name="line.830"></a>
-<span class="sourceLineNo">831</span><a name="line.831"></a>
-<span class="sourceLineNo">832</span>      int cleanInterval = conf.getInt(CLEANUP_INTERVAL, 10 * 1000);<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      int maxIdleTime = conf.getInt(MAX_IDLETIME, 10 * 60 * 1000);<a name="line.833"></a>
-<span class="sourceLineNo">834</span>      connectionCache = new ConnectionCache(<a name="line.834"></a>
-<span class="sourceLineNo">835</span>        conf, userProvider, cleanInterval, maxIdleTime);<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span><a name="line.837"></a>
-<span class="sourceLineNo">838</span>    /**<a name="line.838"></a>
-<span class="sourceLineNo">839</span>     * Obtain HBaseAdmin. Creates the instance if it is not already created.<a name="line.839"></a>
-<span class="sourceLineNo">840</span>     */<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    private Admin getAdmin() throws IOException {<a name="line.841"></a>
-<span class="sourceLineNo">842</span>      return connectionCache.getAdmin();<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    }<a name="line.843"></a>
-<span class="sourceLineNo">844</span><a name="line.844"></a>
-<span class="sourceLineNo">845</span>    void setEffectiveUser(String effectiveUser) {<a name="line.845"></a>
-<span class="sourceLineNo">846</span>      connectionCache.setEffectiveUser(effectiveUser);<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>    @Override<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    public void enableTable(ByteBuffer tableName) throws IOError {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      try{<a name="line.851"></a>
-<span class="sourceLineNo">852</span>        getAdmin().enableTable(getTableName(tableName));<a name="line.852"></a>
-<span class="sourceLineNo">853</span>      } catch (IOException e) {<a name="line.853"></a>
-<span class="sourceLineNo">854</span>        LOG.warn(e.getMessage(), e);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>        throw getIOError(e);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      }<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    }<a name="line.857"></a>
-<span class="sourceLineNo">858</span><a name="line.858"></a>
-<span class="sourceLineNo">859</span>    @Override<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    public void disableTable(ByteBuffer tableName) throws IOError{<a name="line.860"></a>
-<span class="sourceLineNo">861</span>      try{<a name="line.861"></a>
-<span class="sourceLineNo">862</span>        getAdmin().disableTable(getTableName(tableName));<a name="line.862"></a>
-<span class="sourceLineNo">863</span>      } catch (IOException e) {<a name="line.863"></a>
-<span class="sourceLineNo">864</span>        LOG.warn(e.getMessage(), e);<a name="line.864"></a>
-<span class="sourceLineNo">865</span>        throw getIOError(e);<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><a name="line.868"></a>
-<span class="sourceLineNo">869</span>    @Override<a name="line.869"></a>
-<span class="sourceLineNo">870</span>    public boolean isTableEnabled(ByteBuffer tableName) throws IOError {<a name="line.870"></a>
-<span class="sourceLineNo">871</span>      try {<a name="line.871"></a>
-<span class="sourceLineNo">872</span>   

<TRUNCATED>

[02/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 60f13e3..ec94f7a 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html
@@ -25,36 +25,36 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.thrift;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import static org.junit.Assert.assertArrayEquals;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.junit.Assert.assertEquals;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.junit.Assert.assertFalse;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertTrue;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.junit.Assert.fail;<a name="line.24"></a>
-<span class="sourceLineNo">025</span><a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.io.IOException;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.nio.ByteBuffer;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.ArrayList;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.Collection;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.HashMap;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.List;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.Map;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.conf.Configuration;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.CompatibilityFactory;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.HConstants;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.HRegionInfo;<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.TableName;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Put;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.Table;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.filter.ParseFilter;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.test.MetricsAssertHelper;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler;<a name="line.49"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.thrift.Constants.COALESCE_INC_KEY;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.junit.Assert.assertArrayEquals;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.junit.Assert.assertEquals;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertFalse;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.junit.Assert.assertTrue;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.junit.Assert.fail;<a name="line.25"></a>
+<span class="sourceLineNo">026</span><a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.io.IOException;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.nio.ByteBuffer;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.ArrayList;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.Collection;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.HashMap;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.List;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.Map;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.conf.Configuration;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.CompatibilityFactory;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<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.HRegionInfo;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.TableName;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.Put;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Table;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.filter.ParseFilter;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.test.MetricsAssertHelper;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.49"></a>
 <span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.thrift.generated.BatchMutation;<a name="line.50"></a>
 <span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.thrift.generated.ColumnDescriptor;<a name="line.51"></a>
 <span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.thrift.generated.Hbase;<a name="line.52"></a>
@@ -79,7 +79,7 @@
 <span class="sourceLineNo">071</span>import org.slf4j.LoggerFactory;<a name="line.71"></a>
 <span class="sourceLineNo">072</span><a name="line.72"></a>
 <span class="sourceLineNo">073</span>/**<a name="line.73"></a>
-<span class="sourceLineNo">074</span> * Unit testing for ThriftServerRunner.HBaseHandler, a part of the<a name="line.74"></a>
+<span class="sourceLineNo">074</span> * Unit testing for ThriftServerRunner.HBaseServiceHandler, a part of the<a name="line.74"></a>
 <span class="sourceLineNo">075</span> * org.apache.hadoop.hbase.thrift package.<a name="line.75"></a>
 <span class="sourceLineNo">076</span> */<a name="line.76"></a>
 <span class="sourceLineNo">077</span>@Category({ClientTests.class, LargeTests.class})<a name="line.77"></a>
@@ -121,7 +121,7 @@
 <span class="sourceLineNo">113</span><a name="line.113"></a>
 <span class="sourceLineNo">114</span>  @BeforeClass<a name="line.114"></a>
 <span class="sourceLineNo">115</span>  public static void beforeClass() throws Exception {<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    UTIL.getConfiguration().setBoolean(ThriftServerRunner.COALESCE_INC_KEY, true);<a name="line.116"></a>
+<span class="sourceLineNo">116</span>    UTIL.getConfiguration().setBoolean(COALESCE_INC_KEY, true);<a name="line.116"></a>
 <span class="sourceLineNo">117</span>    UTIL.getConfiguration().setBoolean("hbase.table.sanity.checks", false);<a name="line.117"></a>
 <span class="sourceLineNo">118</span>    UTIL.getConfiguration().setInt("hbase.client.retries.number", 3);<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    UTIL.startMiniCluster();<a name="line.119"></a>
@@ -160,8 +160,8 @@
 <span class="sourceLineNo">152</span>   * IllegalArgument exception.<a name="line.152"></a>
 <span class="sourceLineNo">153</span>   */<a name="line.153"></a>
 <span class="sourceLineNo">154</span>  public void doTestTableCreateDrop() throws Exception {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.156"></a>
+<span class="sourceLineNo">155</span>    ThriftHBaseServiceHandler handler =<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      new ThriftHBaseServiceHandler(UTIL.getConfiguration(),<a name="line.156"></a>
 <span class="sourceLineNo">157</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.157"></a>
 <span class="sourceLineNo">158</span>    doTestTableCreateDrop(handler);<a name="line.158"></a>
 <span class="sourceLineNo">159</span>  }<a name="line.159"></a>
@@ -171,7 +171,7 @@
 <span class="sourceLineNo">163</span>    dropTestTables(handler);<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>  public static final class MySlowHBaseHandler extends ThriftServerRunner.HBaseHandler<a name="line.166"></a>
+<span class="sourceLineNo">166</span>  public static final class MySlowHBaseHandler extends ThriftHBaseServiceHandler<a name="line.166"></a>
 <span class="sourceLineNo">167</span>      implements Hbase.Iface {<a name="line.167"></a>
 <span class="sourceLineNo">168</span><a name="line.168"></a>
 <span class="sourceLineNo">169</span>    protected MySlowHBaseHandler(Configuration c)<a name="line.169"></a>
@@ -238,7 +238,7 @@
 <span class="sourceLineNo">230</span>  private static Hbase.Iface getHandlerForMetricsTest(ThriftMetrics metrics, Configuration conf)<a name="line.230"></a>
 <span class="sourceLineNo">231</span>      throws Exception {<a name="line.231"></a>
 <span class="sourceLineNo">232</span>    Hbase.Iface handler = new MySlowHBaseHandler(conf);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    return HbaseHandlerMetricsProxy.newInstance(handler, metrics, conf);<a name="line.233"></a>
+<span class="sourceLineNo">233</span>    return HbaseHandlerMetricsProxy.newInstance((ThriftHBaseServiceHandler)handler, metrics, conf);<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>  private static ThriftMetrics getMetrics(Configuration conf) throws Exception {<a name="line.236"></a>
@@ -278,15 +278,15 @@
 <span class="sourceLineNo">270</span>  }<a name="line.270"></a>
 <span class="sourceLineNo">271</span><a name="line.271"></a>
 <span class="sourceLineNo">272</span>  public void doTestIncrements() throws Exception {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.274"></a>
+<span class="sourceLineNo">273</span>    ThriftHBaseServiceHandler handler =<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      new ThriftHBaseServiceHandler(UTIL.getConfiguration(),<a name="line.274"></a>
 <span class="sourceLineNo">275</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.275"></a>
 <span class="sourceLineNo">276</span>    createTestTables(handler);<a name="line.276"></a>
 <span class="sourceLineNo">277</span>    doTestIncrements(handler);<a name="line.277"></a>
 <span class="sourceLineNo">278</span>    dropTestTables(handler);<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>  public static void doTestIncrements(HBaseHandler handler) throws Exception {<a name="line.281"></a>
+<span class="sourceLineNo">281</span>  public static void doTestIncrements(ThriftHBaseServiceHandler handler) throws Exception {<a name="line.281"></a>
 <span class="sourceLineNo">282</span>    List&lt;Mutation&gt; mutations = new ArrayList&lt;&gt;(1);<a name="line.282"></a>
 <span class="sourceLineNo">283</span>    mutations.add(new Mutation(false, columnAAname, valueEname, true));<a name="line.283"></a>
 <span class="sourceLineNo">284</span>    mutations.add(new Mutation(false, columnAname, valueEname, true));<a name="line.284"></a>
@@ -326,8 +326,8 @@
 <span class="sourceLineNo">318</span>   * versions.<a name="line.318"></a>
 <span class="sourceLineNo">319</span>   */<a name="line.319"></a>
 <span class="sourceLineNo">320</span>  public void doTestTableMutations() throws Exception {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.322"></a>
+<span class="sourceLineNo">321</span>    ThriftHBaseServiceHandler handler =<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      new ThriftHBaseServiceHandler(UTIL.getConfiguration(),<a name="line.322"></a>
 <span class="sourceLineNo">323</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.323"></a>
 <span class="sourceLineNo">324</span>    doTestTableMutations(handler);<a name="line.324"></a>
 <span class="sourceLineNo">325</span>  }<a name="line.325"></a>
@@ -403,8 +403,8 @@
 <span class="sourceLineNo">395</span>   */<a name="line.395"></a>
 <span class="sourceLineNo">396</span>  public void doTestTableTimestampsAndColumns() throws Exception {<a name="line.396"></a>
 <span class="sourceLineNo">397</span>    // Setup<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.399"></a>
+<span class="sourceLineNo">398</span>    ThriftHBaseServiceHandler handler =<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      new ThriftHBaseServiceHandler(UTIL.getConfiguration(),<a name="line.399"></a>
 <span class="sourceLineNo">400</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.400"></a>
 <span class="sourceLineNo">401</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.401"></a>
 <span class="sourceLineNo">402</span><a name="line.402"></a>
@@ -481,8 +481,8 @@
 <span class="sourceLineNo">473</span>   */<a name="line.473"></a>
 <span class="sourceLineNo">474</span>  public void doTestTableScanners() throws Exception {<a name="line.474"></a>
 <span class="sourceLineNo">475</span>    // Setup<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.477"></a>
+<span class="sourceLineNo">476</span>    ThriftHBaseServiceHandler handler =<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      new ThriftHBaseServiceHandler(UTIL.getConfiguration(),<a name="line.477"></a>
 <span class="sourceLineNo">478</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.478"></a>
 <span class="sourceLineNo">479</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.479"></a>
 <span class="sourceLineNo">480</span><a name="line.480"></a>
@@ -600,8 +600,8 @@
 <span class="sourceLineNo">592</span>   * Tests for GetTableRegions<a name="line.592"></a>
 <span class="sourceLineNo">593</span>   */<a name="line.593"></a>
 <span class="sourceLineNo">594</span>  public void doTestGetTableRegions() throws Exception {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.596"></a>
+<span class="sourceLineNo">595</span>    ThriftHBaseServiceHandler handler =<a name="line.595"></a>
+<span class="sourceLineNo">596</span>      new ThriftHBaseServiceHandler(UTIL.getConfiguration(),<a name="line.596"></a>
 <span class="sourceLineNo">597</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.597"></a>
 <span class="sourceLineNo">598</span>    doTestGetTableRegions(handler);<a name="line.598"></a>
 <span class="sourceLineNo">599</span>  }<a name="line.599"></a>
@@ -628,7 +628,7 @@
 <span class="sourceLineNo">620</span><a name="line.620"></a>
 <span class="sourceLineNo">621</span>    conf.set("hbase.thrift.filters", "MyFilter:filterclass");<a name="line.621"></a>
 <span class="sourceLineNo">622</span><a name="line.622"></a>
-<span class="sourceLineNo">623</span>    ThriftServerRunner.registerFilters(conf);<a name="line.623"></a>
+<span class="sourceLineNo">623</span>    ThriftServer.registerFilters(conf);<a name="line.623"></a>
 <span class="sourceLineNo">624</span><a name="line.624"></a>
 <span class="sourceLineNo">625</span>    Map&lt;String, String&gt; registeredFilters = ParseFilter.getAllFilters();<a name="line.625"></a>
 <span class="sourceLineNo">626</span><a name="line.626"></a>
@@ -636,8 +636,8 @@
 <span class="sourceLineNo">628</span>  }<a name="line.628"></a>
 <span class="sourceLineNo">629</span><a name="line.629"></a>
 <span class="sourceLineNo">630</span>  public void doTestGetRegionInfo() throws Exception {<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.632"></a>
+<span class="sourceLineNo">631</span>    ThriftHBaseServiceHandler handler =<a name="line.631"></a>
+<span class="sourceLineNo">632</span>      new ThriftHBaseServiceHandler(UTIL.getConfiguration(),<a name="line.632"></a>
 <span class="sourceLineNo">633</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.633"></a>
 <span class="sourceLineNo">634</span>    doTestGetRegionInfo(handler);<a name="line.634"></a>
 <span class="sourceLineNo">635</span>  }<a name="line.635"></a>
@@ -663,8 +663,8 @@
 <span class="sourceLineNo">655</span>   * Appends the value to a cell and checks that the cell value is updated properly.<a name="line.655"></a>
 <span class="sourceLineNo">656</span>   */<a name="line.656"></a>
 <span class="sourceLineNo">657</span>  public static void doTestAppend() throws Exception {<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.659"></a>
+<span class="sourceLineNo">658</span>    ThriftHBaseServiceHandler handler =<a name="line.658"></a>
+<span class="sourceLineNo">659</span>      new ThriftHBaseServiceHandler(UTIL.getConfiguration(),<a name="line.659"></a>
 <span class="sourceLineNo">660</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.660"></a>
 <span class="sourceLineNo">661</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.661"></a>
 <span class="sourceLineNo">662</span>    try {<a name="line.662"></a>
@@ -695,8 +695,8 @@
 <span class="sourceLineNo">687</span>   * the checkAndPut succeeds.<a name="line.687"></a>
 <span class="sourceLineNo">688</span>   */<a name="line.688"></a>
 <span class="sourceLineNo">689</span>  public static void doTestCheckAndPut() throws Exception {<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    ThriftServerRunner.HBaseHandler handler =<a name="line.690"></a>
-<span class="sourceLineNo">691</span>      new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.691"></a>
+<span class="sourceLineNo">690</span>    ThriftHBaseServiceHandler handler =<a name="line.690"></a>
+<span class="sourceLineNo">691</span>      new ThriftHBaseServiceHandler(UTIL.getConfiguration(),<a name="line.691"></a>
 <span class="sourceLineNo">692</span>        UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.692"></a>
 <span class="sourceLineNo">693</span>    handler.createTable(tableAname, getColumnDescriptors());<a name="line.693"></a>
 <span class="sourceLineNo">694</span>    try {<a name="line.694"></a>
@@ -737,8 +737,8 @@
 <span class="sourceLineNo">729</span><a name="line.729"></a>
 <span class="sourceLineNo">730</span>    Configuration conf = UTIL.getConfiguration();<a name="line.730"></a>
 <span class="sourceLineNo">731</span>    ThriftMetrics metrics = getMetrics(conf);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    ThriftServerRunner.HBaseHandler hbaseHandler =<a name="line.732"></a>
-<span class="sourceLineNo">733</span>        new ThriftServerRunner.HBaseHandler(UTIL.getConfiguration(),<a name="line.733"></a>
+<span class="sourceLineNo">732</span>    ThriftHBaseServiceHandler hbaseHandler =<a name="line.732"></a>
+<span class="sourceLineNo">733</span>        new ThriftHBaseServiceHandler(UTIL.getConfiguration(),<a name="line.733"></a>
 <span class="sourceLineNo">734</span>            UserProvider.instantiate(UTIL.getConfiguration()));<a name="line.734"></a>
 <span class="sourceLineNo">735</span>    Hbase.Iface handler = HbaseHandlerMetricsProxy.newInstance(hbaseHandler, metrics, conf);<a name="line.735"></a>
 <span class="sourceLineNo">736</span><a name="line.736"></a>
@@ -871,10 +871,10 @@
 <span class="sourceLineNo">863</span>   * the scanner.<a name="line.863"></a>
 <span class="sourceLineNo">864</span>   *<a name="line.864"></a>
 <span class="sourceLineNo">865</span>   * @param scannerId the scanner to close<a name="line.865"></a>
-<span class="sourceLineNo">866</span>   * @param handler the HBaseHandler interfacing to HBase<a name="line.866"></a>
+<span class="sourceLineNo">866</span>   * @param handler the HBaseServiceHandler interfacing to HBase<a name="line.866"></a>
 <span class="sourceLineNo">867</span>   */<a name="line.867"></a>
 <span class="sourceLineNo">868</span>  private void closeScanner(<a name="line.868"></a>
-<span class="sourceLineNo">869</span>      int scannerId, ThriftServerRunner.HBaseHandler handler) throws Exception {<a name="line.869"></a>
+<span class="sourceLineNo">869</span>      int scannerId, ThriftHBaseServiceHandler handler) throws Exception {<a name="line.869"></a>
 <span class="sourceLineNo">870</span>    handler.scannerGet(scannerId);<a name="line.870"></a>
 <span class="sourceLineNo">871</span>    handler.scannerClose(scannerId);<a name="line.871"></a>
 <span class="sourceLineNo">872</span>  }<a name="line.872"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 54b2f1c..a414914 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html
@@ -25,241 +25,251 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.thrift;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import static org.junit.Assert.assertEquals;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.junit.Assert.assertTrue;<a name="line.21"></a>
-<span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.net.InetAddress;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.ArrayList;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.util.Collection;<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 org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.thrift.ThriftServerRunner.ImplType;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.thrift.generated.Hbase;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.thrift.protocol.TBinaryProtocol;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.thrift.protocol.TCompactProtocol;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.thrift.protocol.TProtocol;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.thrift.server.TServer;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.thrift.transport.TFramedTransport;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.thrift.transport.TSocket;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.thrift.transport.TTransport;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.junit.AfterClass;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.junit.BeforeClass;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.junit.ClassRule;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.junit.Test;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.junit.experimental.categories.Category;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.junit.runner.RunWith;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.junit.runners.Parameterized;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.junit.runners.Parameterized.Parameters;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.slf4j.Logger;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.slf4j.LoggerFactory;<a name="line.52"></a>
-<span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hbase.thirdparty.com.google.common.base.Joiner;<a name="line.54"></a>
-<span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>/**<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * Start the HBase Thrift server on a random port through the command-line<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * interface and talk to it from client side.<a name="line.58"></a>
-<span class="sourceLineNo">059</span> */<a name="line.59"></a>
-<span class="sourceLineNo">060</span>@Category({ClientTests.class, LargeTests.class})<a name="line.60"></a>
-<span class="sourceLineNo">061</span>@RunWith(Parameterized.class)<a name="line.61"></a>
-<span class="sourceLineNo">062</span>public class TestThriftServerCmdLine {<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>  @ClassRule<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      HBaseClassTestRule.forClass(TestThriftServerCmdLine.class);<a name="line.66"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.thrift.Constants.BIND_OPTION;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.thrift.Constants.COMPACT_OPTION;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.thrift.Constants.FRAMED_OPTION;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.thrift.Constants.INFOPORT_OPTION;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.apache.hadoop.hbase.thrift.Constants.PORT_OPTION;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.junit.Assert.assertEquals;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import static org.junit.Assert.assertTrue;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.net.InetAddress;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.ArrayList;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.Collection;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.List;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.thrift.generated.Hbase;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.thrift.protocol.TBinaryProtocol;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.thrift.protocol.TCompactProtocol;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.thrift.protocol.TProtocol;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.thrift.server.TServer;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.thrift.transport.TFramedTransport;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.thrift.transport.TSocket;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.thrift.transport.TTransport;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.junit.AfterClass;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.junit.BeforeClass;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.junit.ClassRule;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.junit.Test;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.junit.experimental.categories.Category;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.junit.runner.RunWith;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.junit.runners.Parameterized;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.junit.runners.Parameterized.Parameters;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.slf4j.Logger;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.slf4j.LoggerFactory;<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hbase.thirdparty.com.google.common.base.Joiner;<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> * Start the HBase Thrift server on a random port through the command-line<a name="line.61"></a>
+<span class="sourceLineNo">062</span> * interface and talk to it from client side.<a name="line.62"></a>
+<span class="sourceLineNo">063</span> */<a name="line.63"></a>
+<span class="sourceLineNo">064</span>@Category({ClientTests.class, LargeTests.class})<a name="line.64"></a>
+<span class="sourceLineNo">065</span>@RunWith(Parameterized.class)<a name="line.65"></a>
+<span class="sourceLineNo">066</span>public class TestThriftServerCmdLine {<a name="line.66"></a>
 <span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private static final Logger LOG =<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      LoggerFactory.getLogger(TestThriftServerCmdLine.class);<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private final ImplType implType;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private boolean specifyFramed;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private boolean specifyBindIP;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private boolean specifyCompact;<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private static final HBaseTestingUtility TEST_UTIL =<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      new HBaseTestingUtility();<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>  private Thread cmdLineThread;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  private volatile Exception cmdLineException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>  private Exception clientSideException;<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>  private ThriftServer thriftServer;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  private int port;<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>  @Parameters<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  public static Collection&lt;Object[]&gt; getParameters() {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    Collection&lt;Object[]&gt; parameters = new ArrayList&lt;&gt;();<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    for (ImplType implType : ImplType.values()) {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      for (boolean specifyFramed : new boolean[] {false, true}) {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>        for (boolean specifyBindIP : new boolean[] {false, true}) {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>          if (specifyBindIP &amp;&amp; !implType.canSpecifyBindIP) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>            continue;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>          }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>          for (boolean specifyCompact : new boolean[] {false, true}) {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>            parameters.add(new Object[] {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>              implType, specifyFramed, specifyBindIP, specifyCompact<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>      }<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    }<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    return parameters;<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>  public TestThriftServerCmdLine(ImplType implType, boolean specifyFramed,<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      boolean specifyBindIP, boolean specifyCompact) {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    this.implType = implType;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    this.specifyFramed = specifyFramed;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    this.specifyBindIP = specifyBindIP;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    this.specifyCompact = specifyCompact;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    LOG.debug(getParametersString());<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>  private String getParametersString() {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    return "implType=" + implType + ", " +<a name="line.117"></a>
-<span class="sourceLineNo">118</span>        "specifyFramed=" + specifyFramed + ", " +<a name="line.118"></a>
-<span class="sourceLineNo">119</span>        "specifyBindIP=" + specifyBindIP + ", " +<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        "specifyCompact=" + specifyCompact;<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>  @BeforeClass<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public static void setUpBeforeClass() throws Exception {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    TEST_UTIL.getConfiguration().setBoolean("hbase.table.sanity.checks", false);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    TEST_UTIL.startMiniCluster();<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    //ensure that server time increments every time we do an operation, otherwise<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    //successive puts having the same timestamp will override each other<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    EnvironmentEdgeManagerTestHelper.injectEdge(new IncrementingEnvironmentEdge());<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>  @AfterClass<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  public static void tearDownAfterClass() throws Exception {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    EnvironmentEdgeManager.reset();<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>  private void startCmdLineThread(final String[] args) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    LOG.info("Starting HBase Thrift server with command line: " + Joiner.on(" ").join(args));<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>    cmdLineException = null;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    cmdLineThread = new Thread(new Runnable() {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      @Override<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      public void run() {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>        try {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>          thriftServer.doMain(args);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        } catch (Exception e) {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>          cmdLineException = e;<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>    cmdLineThread.setName(ThriftServer.class.getSimpleName() +<a name="line.152"></a>
-<span class="sourceLineNo">153</span>        "-cmdline");<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    cmdLineThread.start();<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>
-<span class="sourceLineNo">157</span>  @Test<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  public void testRunThriftServer() throws Exception {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    List&lt;String&gt; args = new ArrayList&lt;&gt;();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    if (implType != null) {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      String serverTypeOption = implType.toString();<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      assertTrue(serverTypeOption.startsWith("-"));<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      args.add(serverTypeOption);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    port = HBaseTestingUtility.randomFreePort();<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    args.add("-" + ThriftServer.PORT_OPTION);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    args.add(String.valueOf(port));<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    args.add("-" + ThriftServer.INFOPORT_OPTION);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    int infoPort = HBaseTestingUtility.randomFreePort();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    args.add(String.valueOf(infoPort));<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>    if (specifyFramed) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      args.add("-" + ThriftServer.FRAMED_OPTION);<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    }<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    if (specifyBindIP) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      args.add("-" + ThriftServer.BIND_OPTION);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      args.add(InetAddress.getLocalHost().getHostName());<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    if (specifyCompact) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      args.add("-" + ThriftServer.COMPACT_OPTION);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    args.add("start");<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>    thriftServer = new ThriftServer(TEST_UTIL.getConfiguration());<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    startCmdLineThread(args.toArray(new String[args.size()]));<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>    // wait up to 10s for the server to start<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    for (int i = 0; i &lt; 100<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        &amp;&amp; (thriftServer.serverRunner == null || thriftServer.serverRunner.tserver == null); i++) {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      Thread.sleep(100);<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    }<a name="line.191"></a>
+<span class="sourceLineNo">068</span>  @ClassRule<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      HBaseClassTestRule.forClass(TestThriftServerCmdLine.class);<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private static final Logger LOG =<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      LoggerFactory.getLogger(TestThriftServerCmdLine.class);<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>  protected final ImplType implType;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  protected boolean specifyFramed;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  protected boolean specifyBindIP;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  protected boolean specifyCompact;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>  protected static final HBaseTestingUtility TEST_UTIL =<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      new HBaseTestingUtility();<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>  private Thread cmdLineThread;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  private volatile Exception cmdLineException;<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private Exception clientSideException;<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private volatile ThriftServer thriftServer;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  protected int port;<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>  @Parameters<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  public static Collection&lt;Object[]&gt; getParameters() {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    Collection&lt;Object[]&gt; parameters = new ArrayList&lt;&gt;();<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    for (ImplType implType : ImplType.values()) {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      for (boolean specifyFramed : new boolean[] {false, true}) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>        for (boolean specifyBindIP : new boolean[] {false, true}) {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>          if (specifyBindIP &amp;&amp; !implType.canSpecifyBindIP) {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>            continue;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>          }<a name="line.99"></a>
+<span class="sourceLineNo">100</span>          for (boolean specifyCompact : new boolean[] {false, true}) {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>            parameters.add(new Object[] {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>              implType, specifyFramed, specifyBindIP, specifyCompact<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>        }<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>    return parameters;<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>  public TestThriftServerCmdLine(ImplType implType, boolean specifyFramed,<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      boolean specifyBindIP, boolean specifyCompact) {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    this.implType = implType;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    this.specifyFramed = specifyFramed;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    this.specifyBindIP = specifyBindIP;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    this.specifyCompact = specifyCompact;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    LOG.debug(getParametersString());<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>  private String getParametersString() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    return "implType=" + implType + ", " +<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        "specifyFramed=" + specifyFramed + ", " +<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        "specifyBindIP=" + specifyBindIP + ", " +<a name="line.123"></a>
+<span class="sourceLineNo">124</span>        "specifyCompact=" + specifyCompact;<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>  @BeforeClass<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  public static void setUpBeforeClass() throws Exception {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    TEST_UTIL.getConfiguration().setBoolean("hbase.table.sanity.checks", false);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    TEST_UTIL.startMiniCluster();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    //ensure that server time increments every time we do an operation, otherwise<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    //successive puts having the same timestamp will override each other<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    EnvironmentEdgeManagerTestHelper.injectEdge(new IncrementingEnvironmentEdge());<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>  @AfterClass<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  public static void tearDownAfterClass() throws Exception {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    EnvironmentEdgeManager.reset();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
+<span class="sourceLineNo">141</span><a name="line.141"></a>
+<span class="sourceLineNo">142</span>  private void startCmdLineThread(final String[] args) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    LOG.info("Starting HBase Thrift server with command line: " + Joiner.on(" ").join(args));<a name="line.143"></a>
+<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">145</span>    cmdLineException = null;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    cmdLineThread = new Thread(new Runnable() {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      @Override<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      public void run() {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        try {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>          thriftServer.run(args);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        } catch (Exception e) {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>          LOG.error("Error when start thrift server", e);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>          cmdLineException = e;<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>    });<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    cmdLineThread.setName(ThriftServer.class.getSimpleName() +<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        "-cmdline");<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    cmdLineThread.start();<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>  protected ThriftServer createThriftServer() {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    return new ThriftServer(TEST_UTIL.getConfiguration());<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>  @Test<a name="line.166"></a>
+<span class="sourceLineNo">167</span>  public void testRunThriftServer() throws Exception {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    List&lt;String&gt; args = new ArrayList&lt;&gt;();<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    if (implType != null) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      String serverTypeOption = implType.toString();<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      assertTrue(serverTypeOption.startsWith("-"));<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      args.add(serverTypeOption);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    }<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    port = HBaseTestingUtility.randomFreePort();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    args.add("-" + PORT_OPTION);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    args.add(String.valueOf(port));<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    args.add("-" + INFOPORT_OPTION);<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    int infoPort = HBaseTestingUtility.randomFreePort();<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    args.add(String.valueOf(infoPort));<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>    if (specifyFramed) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      args.add("-" + FRAMED_OPTION);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    }<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    if (specifyBindIP) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      args.add("-" + BIND_OPTION);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      args.add(InetAddress.getLocalHost().getHostName());<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    if (specifyCompact) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      args.add("-" + COMPACT_OPTION);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    args.add("start");<a name="line.191"></a>
 <span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>    Class&lt;? extends TServer&gt; expectedClass = implType != null ?<a name="line.193"></a>
-<span class="sourceLineNo">194</span>        implType.serverClass : TBoundedThreadPoolServer.class;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    assertEquals(expectedClass,<a name="line.195"></a>
-<span class="sourceLineNo">196</span>                 thriftServer.serverRunner.tserver.getClass());<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>    try {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      talkToThriftServer();<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    } catch (Exception ex) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      clientSideException = ex;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    } finally {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      stopCmdLineThread();<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>    if (clientSideException != null) {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      LOG.error("Thrift client threw an exception. Parameters:" +<a name="line.207"></a>
-<span class="sourceLineNo">208</span>          getParametersString(), clientSideException);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      throw new Exception(clientSideException);<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>  private static volatile boolean tableCreated = false;<a name="line.213"></a>
+<span class="sourceLineNo">193</span>    thriftServer = createThriftServer();<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    startCmdLineThread(args.toArray(new String[args.size()]));<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // wait up to 10s for the server to start<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    for (int i = 0; i &lt; 100<a name="line.197"></a>
+<span class="sourceLineNo">198</span>        &amp;&amp; (thriftServer.tserver == null); i++) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      Thread.sleep(100);<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>    Class&lt;? extends TServer&gt; expectedClass = implType != null ?<a name="line.202"></a>
+<span class="sourceLineNo">203</span>        implType.serverClass : TBoundedThreadPoolServer.class;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    assertEquals(expectedClass,<a name="line.204"></a>
+<span class="sourceLineNo">205</span>                 thriftServer.tserver.getClass());<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>    try {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      talkToThriftServer();<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    } catch (Exception ex) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      clientSideException = ex;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    } finally {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      stopCmdLineThread();<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>  private void talkToThriftServer() throws Exception {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    TSocket sock = new TSocket(InetAddress.getLocalHost().getHostName(),<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        port);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    TTransport transport = sock;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    if (specifyFramed || implType.isAlwaysFramed) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      transport = new TFramedTransport(transport);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    }<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>    sock.open();<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    try {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      TProtocol prot;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      if (specifyCompact) {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>        prot = new TCompactProtocol(transport);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      } else {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>        prot = new TBinaryProtocol(transport);<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      }<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      Hbase.Client client = new Hbase.Client(prot);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      if (!tableCreated){<a name="line.232"></a>
-<span class="sourceLineNo">233</span>        TestThriftServer.createTestTables(client);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        tableCreated = true;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      }<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      TestThriftServer.checkTableList(client);<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>    } finally {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      sock.close();<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><a name="line.242"></a>
-<span class="sourceLineNo">243</span>  private void stopCmdLineThread() throws Exception {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    LOG.debug("Stopping " + implType.simpleClassName() + " Thrift server");<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    thriftServer.stop();<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    cmdLineThread.join();<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    if (cmdLineException != null) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      LOG.error("Command-line invocation of HBase Thrift server threw an " +<a name="line.248"></a>
-<span class="sourceLineNo">249</span>          "exception", cmdLineException);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      throw new Exception(cmdLineException);<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>}<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">215</span>    if (clientSideException != null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      LOG.error("Thrift client threw an exception. Parameters:" +<a name="line.216"></a>
+<span class="sourceLineNo">217</span>          getParametersString(), clientSideException);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      throw new Exception(clientSideException);<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>  protected static volatile boolean tableCreated = false;<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>  protected void talkToThriftServer() throws Exception {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    TSocket sock = new TSocket(InetAddress.getLocalHost().getHostName(),<a name="line.225"></a>
+<span class="sourceLineNo">226</span>        port);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    TTransport transport = sock;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    if (specifyFramed || implType.isAlwaysFramed) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      transport = new TFramedTransport(transport);<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>    sock.open();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    try {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      TProtocol prot;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      if (specifyCompact) {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        prot = new TCompactProtocol(transport);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      } else {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        prot = new TBinaryProtocol(transport);<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>      Hbase.Client client = new Hbase.Client(prot);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      if (!tableCreated){<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        TestThriftServer.createTestTables(client);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        tableCreated = true;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      }<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      TestThriftServer.checkTableList(client);<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>    } finally {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      sock.close();<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><a name="line.252"></a>
+<span class="sourceLineNo">253</span>  private void stopCmdLineThread() throws Exception {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    LOG.debug("Stopping " + implType.simpleClassName() + " Thrift server");<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    thriftServer.stop();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    cmdLineThread.join();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    if (cmdLineException != null) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      LOG.error("Command-line invocation of HBase Thrift server threw an " +<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          "exception", cmdLineException);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      throw new Exception(cmdLineException);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    }<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><a name="line.264"></a>
 
 
 


[47/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 0d98b02..9bedc3e 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -1378,7 +1378,7 @@
 <dd>
 <div class="block">Add an attribute to the table descriptor</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#addAttributes-org.apache.hadoop.hbase.client.OperationWithAttributes-java.util.Map-">addAttributes(OperationWithAttributes, Map&lt;ByteBuffer, ByteBuffer&gt;)</a></span> - Static 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>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#addAttributes-org.apache.hadoop.hbase.client.OperationWithAttributes-java.util.Map-">addAttributes(OperationWithAttributes, Map&lt;ByteBuffer, ByteBuffer&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>
 <div class="block">Adds all the attributes into the Operation object</div>
 </dd>
@@ -2093,6 +2093,12 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/snapshot/SnapshotInfo.html#addOptions--">addOptions()</a></span> - Method in class org.apache.hadoop.hbase.snapshot.<a href="org/apache/hadoop/hbase/snapshot/SnapshotInfo.html" title="class in org.apache.hadoop.hbase.snapshot">SnapshotInfo</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServer.html#addOptions-org.apache.hbase.thirdparty.org.apache.commons.cli.Options-">addOptions(Options)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></dt>
+<dd>
+<div class="block">Add options to command lines</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html#addOptions-org.apache.hbase.thirdparty.org.apache.commons.cli.Options-">addOptions(Options)</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/tool/coprocessor/CoprocessorValidator.html#addOptions--">addOptions()</a></span> - Method in class org.apache.hadoop.hbase.tool.coprocessor.<a href="org/apache/hadoop/hbase/tool/coprocessor/CoprocessorValidator.html" title="class in org.apache.hadoop.hbase.tool.coprocessor">CoprocessorValidator</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tool/DataBlockEncodingValidator.html#addOptions--">addOptions()</a></span> - Method in class org.apache.hadoop.hbase.tool.<a href="org/apache/hadoop/hbase/tool/DataBlockEncodingValidator.html" title="class in org.apache.hadoop.hbase.tool">DataBlockEncodingValidator</a></dt>
@@ -2438,7 +2444,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannersCloseCallBack.html#addScanner-org.apache.hadoop.hbase.regionserver.RegionScanner-">addScanner(RegionScanner)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannersCloseCallBack.html" title="class in org.apache.hadoop.hbase.regionserver">RSRpcServices.RegionScannersCloseCallBack</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#addScanner-org.apache.hadoop.hbase.client.ResultScanner-boolean-">addScanner(ResultScanner, boolean)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#addScanner-org.apache.hadoop.hbase.client.ResultScanner-boolean-">addScanner(ResultScanner, boolean)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>
 <div class="block">Assigns a unique ID to the scanner and adds the mapping to an internal
  hash-map.</div>
@@ -3247,7 +3253,7 @@
 <div class="block">Validates the input request parameters, parses columns from CellSetModel,
  and invokes Append on HTable.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#append-org.apache.hadoop.hbase.thrift.generated.TAppend-">append(TAppend)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#append-org.apache.hadoop.hbase.thrift.generated.TAppend-">append(TAppend)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#append-java.nio.ByteBuffer-org.apache.hadoop.hbase.thrift2.generated.TAppend-">append(ByteBuffer, TAppend)</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
@@ -4396,9 +4402,9 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/HTableMultiplexer.AtomicAverageCounter.html#AtomicAverageCounter--">AtomicAverageCounter()</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/HTableMultiplexer.AtomicAverageCounter.html" title="class in org.apache.hadoop.hbase.client">HTableMultiplexer.AtomicAverageCounter</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#atomicIncrement-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-long-">atomicIncrement(ByteBuffer, ByteBuffer, ByteBuffer, long)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#atomicIncrement-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-long-">atomicIncrement(ByteBuffer, ByteBuffer, ByteBuffer, long)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#atomicIncrement-java.nio.ByteBuffer-java.nio.ByteBuffer-byte:A-byte:A-long-">atomicIncrement(ByteBuffer, ByteBuffer, byte[], byte[], long)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#atomicIncrement-java.nio.ByteBuffer-java.nio.ByteBuffer-byte:A-byte:A-long-">atomicIncrement(ByteBuffer, ByteBuffer, byte[], byte[], long)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/util/AtomicUtils.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">AtomicUtils</span></a> - Class in <a href="org/apache/hadoop/hbase/util/package-summary.html">org.apache.hadoop.hbase.util</a></dt>
 <dd>
@@ -4897,9 +4903,9 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/util/LRUDictionary.html#backingStore">backingStore</a></span> - Variable in class org.apache.hadoop.hbase.io.util.<a href="org/apache/hadoop/hbase/io/util/LRUDictionary.html" title="class in org.apache.hadoop.hbase.io.util">LRUDictionary</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#BACKLOG_CONF_KEY">BACKLOG_CONF_KEY</a></span> - Static variable 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>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/Constants.html#BACKLOG_CONF_DEAFULT">BACKLOG_CONF_DEAFULT</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift">Constants</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html#BACKLOG_CONF_KEY">BACKLOG_CONF_KEY</a></span> - Static variable 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>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/Constants.html#BACKLOG_CONF_KEY">BACKLOG_CONF_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift">Constants</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/backoff/ClientBackoffPolicy.html#BACKOFF_POLICY_CLASS">BACKOFF_POLICY_CLASS</a></span> - Static variable in interface org.apache.hadoop.hbase.client.backoff.<a href="org/apache/hadoop/hbase/client/backoff/ClientBackoffPolicy.html" title="interface in org.apache.hadoop.hbase.client.backoff">ClientBackoffPolicy</a></dt>
 <dd>&nbsp;</dd>
@@ -6064,9 +6070,9 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/http/HttpServer.html#BIND_ADDRESS">BIND_ADDRESS</a></span> - Static variable in class org.apache.hadoop.hbase.http.<a href="org/apache/hadoop/hbase/http/HttpServer.html" title="class in org.apache.hadoop.hbase.http">HttpServer</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#BIND_CONF_KEY">BIND_CONF_KEY</a></span> - Static variable 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>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/Constants.html#BIND_CONF_KEY">BIND_CONF_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift">Constants</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServer.html#BIND_OPTION">BIND_OPTION</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/Constants.html#BIND_OPTION">BIND_OPTION</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift">Constants</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/http/HttpServer.Builder.html#bindAddress">bindAddress</a></span> - Variable in class org.apache.hadoop.hbase.http.<a href="org/apache/hadoop/hbase/http/HttpServer.Builder.html" title="class in org.apache.hadoop.hbase.http">HttpServer.Builder</a></dt>
 <dd>
@@ -6076,8 +6082,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/RpcServer.html#bindAddress">bindAddress</a></span> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/RpcServer.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html#bindToPort-java.lang.String-int-">bindToPort(String, int)</a></span> - Static 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/metrics/impl/FastLongHistogram.html#bins">bins</a></span> - Variable in class org.apache.hadoop.hbase.metrics.impl.<a href="org/apache/hadoop/hbase/metrics/impl/FastLongHistogram.html" title="class in org.apache.hadoop.hbase.metrics.impl">FastLongHistogram</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/metrics/impl/FastLongHistogram.Bins.html#Bins-int-">Bins(int)</a></span> - Constructor for class org.apache.hadoop.hbase.metrics.impl.<a href="org/apache/hadoop/hbase/metrics/impl/FastLongHistogram.Bins.html" title="class in org.apache.hadoop.hbase.metrics.impl">FastLongHistogram.Bins</a></dt>
@@ -9314,7 +9318,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html#canSchedule-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.HRegionLocation-">canSchedule(MasterProcedureEnv, HRegionLocation)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ReopenTableRegionsProcedure</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#canSpecifyBindIP">canSpecifyBindIP</a></span> - Variable in enum org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ImplType.html#canSpecifyBindIP">canSpecifyBindIP</a></span> - Variable in enum org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HStore.html#canSplit--">canSplit()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a></dt>
 <dd>&nbsp;</dd>
@@ -9437,7 +9441,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#catalogJanitorSwitch-boolean-">catalogJanitorSwitch(boolean)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html#cause">cause</a></span> - Variable in exception org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.IOErrorWithCause</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html#cause">cause</a></span> - Variable in exception org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.IOErrorWithCause</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html#cause">cause</a></span> - Variable in exception org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler.TIOErrorWithCause</a></dt>
 <dd>&nbsp;</dd>
@@ -10453,7 +10457,7 @@
 <div class="block">Validates the input request parameters, parses columns from CellSetModel,
  and invokes checkAndPut on HTable.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#checkAndPut-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-org.apache.hadoop.hbase.thrift.generated.Mutation-java.util.Map-">checkAndPut(ByteBuffer, ByteBuffer, ByteBuffer, ByteBuffer, Mutation, Map&lt;ByteBuffer, ByteBuffer&gt;)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#checkAndPut-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-org.apache.hadoop.hbase.thrift.generated.Mutation-java.util.Map-">checkAndPut(ByteBuffer, ByteBuffer, ByteBuffer, ByteBuffer, Mutation, Map&lt;ByteBuffer, ByteBuffer&gt;)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#checkAndPut-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-org.apache.hadoop.hbase.thrift2.generated.TPut-">checkAndPut(ByteBuffer, ByteBuffer, ByteBuffer, ByteBuffer, ByteBuffer, TPut)</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
@@ -10783,7 +10787,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/HFile.html#checkHFileVersion-org.apache.hadoop.conf.Configuration-">checkHFileVersion(Configuration)</a></span> - Static method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFile.html" title="class in org.apache.hadoop.hbase.io.hfile">HFile</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#checkHttpSecurity-org.apache.hadoop.hbase.security.SaslUtil.QualityOfProtection-org.apache.hadoop.conf.Configuration-">checkHttpSecurity(SaslUtil.QualityOfProtection, 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>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServer.html#checkHttpSecurity-org.apache.hadoop.hbase.security.SaslUtil.QualityOfProtection-org.apache.hadoop.conf.Configuration-">checkHttpSecurity(SaslUtil.QualityOfProtection, Configuration)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#checkIfBaseNodeAvailable--">checkIfBaseNodeAvailable()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKNodeTracker</a></dt>
 <dd>
@@ -11882,9 +11886,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/RESTServlet.html#CLEANUP_INTERVAL">CLEANUP_INTERVAL</a></span> - Static variable in class org.apache.hadoop.hbase.rest.<a href="org/apache/hadoop/hbase/rest/RESTServlet.html" title="class in org.apache.hadoop.hbase.rest">RESTServlet</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#CLEANUP_INTERVAL">CLEANUP_INTERVAL</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#CLEANUP_INTERVAL">CLEANUP_INTERVAL</a></span> - Static variable in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#CLEANUP_INTERVAL">CLEANUP_INTERVAL</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#cleanupAfterRollbackOneStep-org.apache.hadoop.hbase.procedure2.Procedure-">cleanupAfterRollbackOneStep(Procedure&lt;TEnvironment&gt;)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor</a></dt>
 <dd>&nbsp;</dd>
@@ -13526,7 +13528,7 @@
 <div class="block">Close the Table and related objects that were initialized via
  <a href="org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#initializeTable-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-"><code>TableInputFormatBase.initializeTable(Connection, TableName)</code></a>.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#closeTable-org.apache.hadoop.hbase.client.Table-">closeTable(Table)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#closeTable-org.apache.hadoop.hbase.client.Table-">closeTable(Table)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#closeTable-org.apache.hadoop.hbase.client.Table-">closeTable(Table)</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
@@ -13819,9 +13821,9 @@
 <div class="block">Returns the adjusted trichotomous value according to the ordering imposed by this
  <code>Order</code>.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#COALESCE_INC_KEY">COALESCE_INC_KEY</a></span> - Static variable 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>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/Constants.html#COALESCE_INC_KEY">COALESCE_INC_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift">Constants</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#coalescer">coalescer</a></span> - Variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#coalescer">coalescer</a></span> - Variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/Cell.Type.html#code">code</a></span> - Variable in enum org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/Cell.Type.html" title="enum in org.apache.hadoop.hbase">Cell.Type</a></dt>
 <dd>&nbsp;</dd>
@@ -14387,13 +14389,15 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StripeStoreEngine.StripeCompaction.html#compact-org.apache.hadoop.hbase.regionserver.throttle.ThroughputController-org.apache.hadoop.hbase.security.User-">compact(ThroughputController, User)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StripeStoreEngine.StripeCompaction.html" title="class in org.apache.hadoop.hbase.regionserver">StripeStoreEngine.StripeCompaction</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#compact-java.nio.ByteBuffer-">compact(ByteBuffer)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#compact-java.nio.ByteBuffer-">compact(ByteBuffer)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/compaction/MajorCompactor.Compact.html#Compact-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.util.compaction.MajorCompactionRequest-">Compact(ServerName, MajorCompactionRequest)</a></span> - Constructor for class org.apache.hadoop.hbase.util.compaction.<a href="org/apache/hadoop/hbase/util/compaction/MajorCompactor.Compact.html" title="class in org.apache.hadoop.hbase.util.compaction">MajorCompactor.Compact</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#COMPACT_CONF_KEY">COMPACT_CONF_KEY</a></span> - Static variable 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>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/Constants.html#COMPACT_CONF_DEFAULT">COMPACT_CONF_DEFAULT</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift">Constants</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/Constants.html#COMPACT_CONF_KEY">COMPACT_CONF_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift">Constants</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServer.html#COMPACT_OPTION">COMPACT_OPTION</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/Constants.html#COMPACT_OPTION">COMPACT_OPTION</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift">Constants</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/compaction/MajorCompactor.html#compactAllRegions--">compactAllRegions()</a></span> - Method in class org.apache.hadoop.hbase.util.compaction.<a href="org/apache/hadoop/hbase/util/compaction/MajorCompactor.html" title="class in org.apache.hadoop.hbase.util.compaction">MajorCompactor</a></dt>
 <dd>&nbsp;</dd>
@@ -16699,11 +16703,9 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/snapshot/SnapshotManifestV2.ManifestBuilder.html#conf">conf</a></span> - Variable in class org.apache.hadoop.hbase.snapshot.<a href="org/apache/hadoop/hbase/snapshot/SnapshotManifestV2.ManifestBuilder.html" title="class in org.apache.hadoop.hbase.snapshot">SnapshotManifestV2.ManifestBuilder</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServer.html#conf">conf</a></span> - Variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#conf">conf</a></span> - Variable 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>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#conf">conf</a></span> - Variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#conf">conf</a></span> - Variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServer.html#conf">conf</a></span> - Variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmplImpl.html#conf">conf</a></span> - Variable in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">BlockCacheViewTmplImpl</a></dt>
 <dd>&nbsp;</dd>
@@ -17214,9 +17216,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/RESTServlet.html#connectionCache">connectionCache</a></span> - Variable in class org.apache.hadoop.hbase.rest.<a href="org/apache/hadoop/hbase/rest/RESTServlet.html" title="class in org.apache.hadoop.hbase.rest">RESTServlet</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#connectionCache">connectionCache</a></span> - Variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#connectionCache">connectionCache</a></span> - Variable in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#connectionCache">connectionCache</a></span> - Variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/util/ConnectionCache.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">ConnectionCache</span></a> - Class in <a href="org/apache/hadoop/hbase/util/package-summary.html">org.apache.hadoop.hbase.util</a></dt>
 <dd>
@@ -17376,6 +17376,12 @@
 <dd>
 <div class="block">Common constants for org.apache.hadoop.hbase.rest</div>
 </dd>
+<dt><a href="org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Constants</span></a> - Class in <a href="org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a></dt>
+<dd>
+<div class="block">Thrift related constants</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/Constants.html#Constants--">Constants()</a></span> - Constructor for class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift">Constants</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/regionserver/ConstantSizeRegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ConstantSizeRegionSplitPolicy</span></a> - Class in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
 <dd>
 <div class="block">A <a href="org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver"><code>RegionSplitPolicy</code></a> implementation which splits a region
@@ -19986,9 +19992,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/snapshot/SnapshotManifest.html#createExecutor-org.apache.hadoop.conf.Configuration-java.lang.String-">createExecutor(Configuration, String)</a></span> - Static method in class org.apache.hadoop.hbase.snapshot.<a href="org/apache/hadoop/hbase/snapshot/SnapshotManifest.html" title="class in org.apache.hadoop.hbase.snapshot">SnapshotManifest</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#createExecutor-java.util.concurrent.BlockingQueue-int-int-">createExecutor(BlockingQueue&lt;Runnable&gt;, int, int)</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#createExecutor-int-int-org.apache.hadoop.hbase.thrift.ThriftMetrics-">createExecutor(int, int, ThriftMetrics)</a></span> - Static 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>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServer.html#createExecutor-java.util.concurrent.BlockingQueue-int-int-">createExecutor(BlockingQueue&lt;Runnable&gt;, int, int)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tool/LoadIncrementalHFiles.html#createExecutorService--">createExecutorService()</a></span> - Method in class org.apache.hadoop.hbase.tool.<a href="org/apache/hadoop/hbase/tool/LoadIncrementalHFiles.html" title="class in org.apache.hadoop.hbase.tool">LoadIncrementalHFiles</a></dt>
 <dd>&nbsp;</dd>
@@ -20241,6 +20245,10 @@
 <dd>
 <div class="block">Create a key by concatenating multiple column values.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServer.html#createHandler-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.UserProvider-">createHandler(Configuration, UserProvider)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html#createHandler-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.UserProvider-">createHandler(Configuration, UserProvider)</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/HBaseFsckRepair.html#createHDFSRegionDir-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.TableDescriptor-">createHDFSRegionDir(Configuration, RegionInfo, TableDescriptor)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/HBaseFsckRepair.html" title="class in org.apache.hadoop.hbase.util">HBaseFsckRepair</a></dt>
 <dd>
 <div class="block">Creates, flushes, and closes a new region.</div>
@@ -20615,7 +20623,7 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/BlockCacheFactory.html#createOnHeapCache-org.apache.hadoop.conf.Configuration-">createOnHeapCache(Configuration)</a></span> - Static method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/BlockCacheFactory.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheFactory</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#createOptionGroup--">createOptionGroup()</a></span> - Static method in enum org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ImplType.html#createOptionGroup--">createOptionGroup()</a></span> - Static method in enum org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/NamespacesInstanceResource.html#createOrUpdate-org.apache.hadoop.hbase.rest.model.NamespacesInstanceModel-javax.ws.rs.core.UriInfo-org.apache.hadoop.hbase.client.Admin-boolean-">createOrUpdate(NamespacesInstanceModel, UriInfo, Admin, boolean)</a></span> - Method in class org.apache.hadoop.hbase.rest.<a href="org/apache/hadoop/hbase/rest/NamespacesInstanceResource.html" title="class in org.apache.hadoop.hbase.rest">NamespacesInstanceResource</a></dt>
 <dd>&nbsp;</dd>
@@ -20683,6 +20691,10 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/HMaster.html#createProcedureExecutor--">createProcedureExecutor()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServer.html#createProcessor--">createProcessor()</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html#createProcessor--">createProcessor()</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/rest/model/CellModel.html#createProtobufOutput--">createProtobufOutput()</a></span> - Method in class org.apache.hadoop.hbase.rest.model.<a href="org/apache/hadoop/hbase/rest/model/CellModel.html" title="class in org.apache.hadoop.hbase.rest.model">CellModel</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/model/CellSetModel.html#createProtobufOutput--">createProtobufOutput()</a></span> - Method in class org.apache.hadoop.hbase.rest.model.<a href="org/apache/hadoop/hbase/rest/model/CellSetModel.html" title="class in org.apache.hadoop.hbase.rest.model">CellSetModel</a></dt>
@@ -21369,7 +21381,7 @@
 <dd>
 <div class="block">Creates a new table.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#createTable-java.nio.ByteBuffer-java.util.List-">createTable(ByteBuffer, List&lt;ColumnDescriptor&gt;)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#createTable-java.nio.ByteBuffer-java.util.List-">createTable(ByteBuffer, List&lt;ColumnDescriptor&gt;)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#createTable-org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor-java.util.List-">createTable(TTableDescriptor, List&lt;ByteBuffer&gt;)</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
@@ -23044,7 +23056,7 @@
 <div class="block">Instantiate a new byte[] with exact length, which is at least 24 bytes +
  length.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#DEFAULT">DEFAULT</a></span> - Static variable in enum org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ImplType.html#DEFAULT">DEFAULT</a></span> - Static variable in enum org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_ABORT_ON_ERROR">DEFAULT_ABORT_ON_ERROR</a></span> - Static variable in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost</a></dt>
 <dd>&nbsp;</dd>
@@ -23104,9 +23116,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/CompletedProcedureCleaner.html#DEFAULT_BATCH_SIZE">DEFAULT_BATCH_SIZE</a></span> - Static variable in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/CompletedProcedureCleaner.html" title="class in org.apache.hadoop.hbase.procedure2">CompletedProcedureCleaner</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServer.html#DEFAULT_BIND_ADDR">DEFAULT_BIND_ADDR</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#DEFAULT_BIND_ADDR">DEFAULT_BIND_ADDR</a></span> - Static variable 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>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/Constants.html#DEFAULT_BIND_ADDR">DEFAULT_BIND_ADDR</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift">Constants</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HStore.html#DEFAULT_BLOCK_STORAGE_POLICY">DEFAULT_BLOCK_STORAGE_POLICY</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a></dt>
 <dd>&nbsp;</dd>
@@ -23556,7 +23566,7 @@
 <div class="block">The default number for the max number of threads used for opening and
  closing stores or store files in parallel</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#DEFAULT_HTTP_MAX_HEADER_SIZE">DEFAULT_HTTP_MAX_HEADER_SIZE</a></span> - Static variable 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>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/Constants.html#DEFAULT_HTTP_MAX_HEADER_SIZE">DEFAULT_HTTP_MAX_HEADER_SIZE</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift">Constants</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ColumnFamilyDescriptorBuilder.html#DEFAULT_IN_MEMORY">DEFAULT_IN_MEMORY</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ColumnFamilyDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">ColumnFamilyDescriptorBuilder</a></dt>
 <dd>
@@ -23604,11 +23614,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/Constants.html#DEFAULT_LISTEN_PORT">DEFAULT_LISTEN_PORT</a></span> - Static variable in interface org.apache.hadoop.hbase.rest.<a href="org/apache/hadoop/hbase/rest/Constants.html" title="interface in org.apache.hadoop.hbase.rest">Constants</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServer.html#DEFAULT_LISTEN_PORT">DEFAULT_LISTEN_PORT</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#DEFAULT_LISTEN_PORT">DEFAULT_LISTEN_PORT</a></span> - Static variable 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#DEFAULT_LISTEN_PORT">DEFAULT_LISTEN_PORT</a></span> - Static variable 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>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/Constants.html#DEFAULT_LISTEN_PORT">DEFAULT_LISTEN_PORT</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift">Constants</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#DEFAULT_LOAD_FACTOR">DEFAULT_LOAD_FACTOR</a></span> - Static variable in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/LruBlockCache.html" title="class in org.apache.hadoop.hbase.io.hfile">LruBlockCache</a></dt>
 <dd>&nbsp;</dd>
@@ -24054,6 +24060,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/ScannerContext.ProgressFields.html#DEFAULT_SIZE">DEFAULT_SIZE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/ScannerContext.ProgressFields.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext.ProgressFields</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR">DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR</a></span> - Static variable in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/ServerCommandLine.html#DEFAULT_SKIP_WORDS">DEFAULT_SKIP_WORDS</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/ServerCommandLine.html" title="class in org.apache.hadoop.hbase.util">ServerCommandLine</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/HBaseFsck.html#DEFAULT_SLEEP_BEFORE_RERUN">DEFAULT_SLEEP_BEFORE_RERUN</a></span> - Static variable 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>
@@ -24733,13 +24741,13 @@
 <dd>
 <div class="block">A simple version of batch delete.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#deleteAll-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.Map-">deleteAll(ByteBuffer, ByteBuffer, ByteBuffer, Map&lt;ByteBuffer, ByteBuffer&gt;)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#deleteAll-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.Map-">deleteAll(ByteBuffer, ByteBuffer, ByteBuffer, Map&lt;ByteBuffer, ByteBuffer&gt;)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#deleteAllRow-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.Map-">deleteAllRow(ByteBuffer, ByteBuffer, Map&lt;ByteBuffer, ByteBuffer&gt;)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#deleteAllRow-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.Map-">deleteAllRow(ByteBuffer, ByteBuffer, Map&lt;ByteBuffer, ByteBuffer&gt;)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#deleteAllRowTs-java.nio.ByteBuffer-java.nio.ByteBuffer-long-java.util.Map-">deleteAllRowTs(ByteBuffer, ByteBuffer, long, Map&lt;ByteBuffer, ByteBuffer&gt;)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#deleteAllRowTs-java.nio.ByteBuffer-java.nio.ByteBuffer-long-java.util.Map-">deleteAllRowTs(ByteBuffer, ByteBuffer, long, Map&lt;ByteBuffer, ByteBuffer&gt;)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#deleteAllTs-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-long-java.util.Map-">deleteAllTs(ByteBuffer, ByteBuffer, ByteBuffer, long, Map&lt;ByteBuffer, ByteBuffer&gt;)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#deleteAllTs-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-long-java.util.Map-">deleteAllTs(ByteBuffer, ByteBuffer, ByteBuffer, long, Map&lt;ByteBuffer, ByteBuffer&gt;)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html#deleteAssignmentState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.TableName-">deleteAssignmentState(MasterProcedureEnv, TableName)</a></span> - Static method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">DeleteTableProcedure</a></dt>
 <dd>&nbsp;</dd>
@@ -25330,7 +25338,7 @@
 <dd>
 <div class="block">Deletes a table.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#deleteTable-java.nio.ByteBuffer-">deleteTable(ByteBuffer)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#deleteTable-java.nio.ByteBuffer-">deleteTable(ByteBuffer)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#deleteTable-org.apache.hadoop.hbase.thrift2.generated.TTableName-">deleteTable(TTableName)</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
@@ -26210,7 +26218,7 @@
 <dd>
 <div class="block">Disable an existing table</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#disableTable-java.nio.ByteBuffer-">disableTable(ByteBuffer)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#disableTable-java.nio.ByteBuffer-">disableTable(ByteBuffer)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#disableTable-org.apache.hadoop.hbase.thrift2.generated.TTableName-">disableTable(TTableName)</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
@@ -26467,7 +26475,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html#doAsEnabled">doAsEnabled</a></span> - Variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHttpServlet.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHttpServlet</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#doAsEnabled">doAsEnabled</a></span> - Variable 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>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServer.html#doAsEnabled">doAsEnabled</a></span> - Variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.html#doAssignRegion-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">doAssignRegion(RegionInfo, ServerName)</a></span> - Method in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.html" title="class in org.apache.hadoop.hbase.master.balancer">BaseLoadBalancer.Cluster</a></dt>
 <dd>&nbsp;</dd>
@@ -26673,10 +26681,6 @@
 <dd>
 <div class="block">Get the logical value indicating whether on-demand CF loading should be allowed.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServer.html#doMain-java.lang.String:A-">doMain(String[])</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></dt>
-<dd>
-<div class="block">Start up or shuts down the Thrift server, depending on the arguments.</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/ServerCommandLine.html#doMain-java.lang.String:A-">doMain(String[])</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/ServerCommandLine.html" title="class in org.apache.hadoop.hbase.util">ServerCommandLine</a></dt>
 <dd>
 <div class="block">Parse and run the given command line.</div>
@@ -27728,7 +27732,7 @@
 <dd>
 <div class="block">Enable an existing table</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#enableTable-java.nio.ByteBuffer-">enableTable(ByteBuffer)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#enableTable-java.nio.ByteBuffer-">enableTable(ByteBuffer)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#enableTable-org.apache.hadoop.hbase.thrift2.generated.TTableName-">enableTable(TTableName)</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
@@ -29008,7 +29012,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#equals-java.lang.Object-">equals(Object)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html" title="class in org.apache.hadoop.hbase.thrift">IncrementCoalescer.FullyQualifiedRow</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html#equals-java.lang.Object-">equals(Object)</a></span> - Method in exception org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.IOErrorWithCause</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html#equals-java.lang.Object-">equals(Object)</a></span> - Method in exception org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.IOErrorWithCause</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html#equals-java.lang.Object-">equals(Object)</a></span> - Method in exception org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler.TIOErrorWithCause</a></dt>
 <dd>&nbsp;</dd>
@@ -33598,9 +33602,11 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/NettyRpcFrameDecoder.html#FRAME_LENGTH_FIELD_LENGTH">FRAME_LENGTH_FIELD_LENGTH</a></span> - Static variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/NettyRpcFrameDecoder.html" title="class in org.apache.hadoop.hbase.ipc">NettyRpcFrameDecoder</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#FRAMED_CONF_KEY">FRAMED_CONF_KEY</a></span> - Static variable 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>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/Constants.html#FRAMED_CONF_DEFAULT">FRAMED_CONF_DEFAULT</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift">Constants</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServer.html#FRAMED_OPTION">FRAMED_OPTION</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/Constants.html#FRAMED_CONF_KEY">FRAMED_CONF_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift">Constants</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/Constants.html#FRAMED_OPTION">FRAMED_OPTION</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift">Constants</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/bucket/BucketAllocator.Bucket.html#free-long-">free(long)</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.bucket.<a href="org/apache/hadoop/hbase/io/hfile/bucket/BucketAllocator.Bucket.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketAllocator.Bucket</a></dt>
 <dd>&nbsp;</dd>
@@ -34700,9 +34706,9 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TableDescriptors.html#get-org.apache.hadoop.hbase.TableName-">get(TableName)</a></span> - Method in interface org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TableDescriptors.html" title="interface in org.apache.hadoop.hbase">TableDescriptors</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#get-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.Map-">get(ByteBuffer, ByteBuffer, ByteBuffer, Map&lt;ByteBuffer, ByteBuffer&gt;)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#get-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.Map-">get(ByteBuffer, ByteBuffer, ByteBuffer, Map&lt;ByteBuffer, ByteBuffer&gt;)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#get-java.nio.ByteBuffer-java.nio.ByteBuffer-byte:A-byte:A-java.util.Map-">get(ByteBuffer, ByteBuffer, byte[], byte[], Map&lt;ByteBuffer, ByteBuffer&gt;)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#get-java.nio.ByteBuffer-java.nio.ByteBuffer-byte:A-byte:A-java.util.Map-">get(ByteBuffer, ByteBuffer, byte[], byte[], Map&lt;ByteBuffer, ByteBuffer&gt;)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>
 <div class="block">Note: this internal interface is slightly different from public APIs in regard to handling
  of the qualifier.</div>
@@ -35150,7 +35156,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/SharedConnection.html#getAdmin--">getAdmin()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/SharedConnection.html" title="class in org.apache.hadoop.hbase">SharedConnection</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getAdmin--">getAdmin()</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#getAdmin--">getAdmin()</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a></dt>
 <dd>
 <div class="block">Obtain HBaseAdmin.</div>
 </dd>
@@ -35240,7 +35246,7 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/CoprocessorClassLoader.html#getAllCached--">getAllCached()</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/CoprocessorClassLoader.html" title="class in org.apache.hadoop.hbase.util">CoprocessorClassLoader</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getAllColumns-org.apache.hadoop.hbase.client.Table-">getAllColumns(Table)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getAllColumns-org.apache.hadoop.hbase.client.Table-">getAllColumns(Table)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>
 <div class="block">Returns a list of all the column families for a given Table.</div>
 </dd>
@@ -35905,9 +35911,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/ScannerInstanceResource.html#getBinary-javax.ws.rs.core.UriInfo-">getBinary(UriInfo)</a></span> - Method in class org.apache.hadoop.hbase.rest.<a href="org/apache/hadoop/hbase/rest/ScannerInstanceResource.html" title="class in org.apache.hadoop.hbase.rest">ScannerInstanceResource</a></dt>
 <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.hbase.thirdparty.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>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServer.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/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/store/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/BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">BitSetNode</a></dt>
 <dd>&nbsp;</dd>
@@ -36544,7 +36548,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/RetriesExhaustedWithDetailsException.html#getCause-int-">getCause(int)</a></span> - Method in exception org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/RetriesExhaustedWithDetailsException.html" title="class in org.apache.hadoop.hbase.client">RetriesExhaustedWithDetailsException</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html#getCause--">getCause()</a></span> - Method in exception org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.IOErrorWithCause</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html#getCause--">getCause()</a></span> - Method in exception org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.IOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.IOErrorWithCause</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html#getCause--">getCause()</a></span> - Method in exception org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler.TIOErrorWithCause</a></dt>
 <dd>&nbsp;</dd>
@@ -37106,7 +37110,7 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/ImportTsv.TsvParser.ParsedLine.html#getColumnCount--">getColumnCount()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/ImportTsv.TsvParser.ParsedLine.html" title="class in org.apache.hadoop.hbase.mapreduce">ImportTsv.TsvParser.ParsedLine</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#getColumnDescriptors-java.nio.ByteBuffer-">getColumnDescriptors(ByteBuffer)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getColumnDescriptors-java.nio.ByteBuffer-">getColumnDescriptors(ByteBuffer)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TableDescriptor.html#getColumnFamilies--">getColumnFamilies()</a></span> - Method in interface org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a></dt>
 <dd>
@@ -38912,7 +38916,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/monitoring/MonitoredTaskImpl.html#getDescription--">getDescription()</a></span> - Method in class org.apache.hadoop.hbase.monitoring.<a href="org/apache/hadoop/hbase/monitoring/MonitoredTaskImpl.html" title="class in org.apache.hadoop.hbase.monitoring">MonitoredTaskImpl</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#getDescription--">getDescription()</a></span> - Method in enum org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ImplType.html#getDescription--">getDescription()</a></span> - Method in enum org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/RegionInfoDisplay.html#getDescriptiveNameFromRegionStateForDisplay-org.apache.hadoop.hbase.master.RegionState-org.apache.hadoop.conf.Configuration-">getDescriptiveNameFromRegionStateForDisplay(RegionState, Configuration)</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/RegionInfoDisplay.html" title="class in org.apache.hadoop.hbase.client">RegionInfoDisplay</a></dt>
 <dd>
@@ -40970,8 +40974,6 @@
 <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>
@@ -41309,7 +41311,7 @@
 <dd>
 <div class="block">Get the IOEngine from the IO engine name</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#getIOError-java.lang.Throwable-">getIOError(Throwable)</a></span> - Static 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>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#getIOError-java.lang.Throwable-">getIOError(Throwable)</a></span> - Static method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/bucket/BucketCacheStats.html#getIOHitsPerSecond--">getIOHitsPerSecond()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.bucket.<a href="org/apache/hadoop/hbase/io/hfile/bucket/BucketCacheStats.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCacheStats</a></dt>
 <dd>&nbsp;</dd>
@@ -42072,8 +42074,6 @@
 <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.hbase.thirdparty.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>
@@ -45483,7 +45483,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/visibility/ExpressionParser.html#getOperator-byte-">getOperator(byte)</a></span> - Static method in class org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/ExpressionParser.html" title="class in org.apache.hadoop.hbase.security.visibility">ExpressionParser</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#getOption--">getOption()</a></span> - Method in enum org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ImplType.html#getOption--">getOption()</a></span> - Method in enum org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/AbstractHBaseTool.html#getOptionAsDouble-org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine-java.lang.String-double-">getOptionAsDouble(CommandLine, String, double)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/AbstractHBaseTool.html" title="class in org.apache.hadoop.hbase.util">AbstractHBaseTool</a></dt>
 <dd>&nbsp;</dd>
@@ -45491,8 +45491,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/AbstractHBaseTool.html#getOptionAsLong-org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine-java.lang.String-int-">getOptionAsLong(CommandLine, String, int)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/AbstractHBaseTool.html" title="class in org.apache.hadoop.hbase.util">AbstractHBaseTool</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftServer.html#getOptions--">getOptions()</a></span> - Static 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/master/balancer/BaseLoadBalancer.Cluster.html#getOrComputeLocality-int-int-org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer.Cluster.LocalityType-">getOrComputeLocality(int, int, BaseLoadBalancer.Cluster.LocalityType)</a></span> - Method in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.html" title="class in org.apache.hadoop.hbase.master.balancer">BaseLoadBalancer.Cluster</a></dt>
 <dd>
 <div class="block">Looks up locality from cache of localities.</div>
@@ -46542,7 +46540,7 @@
 <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>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServer.html#getProtocolFactory--">getProtocolFactory()</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServer.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServer</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>
@@ -47156,8 +47154,6 @@
 </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.hbase.thirdparty.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--">getRe

<TRUNCATED>

[20/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html
new file mode 100644
index 0000000..5b5b199
--- /dev/null
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html
@@ -0,0 +1,1419 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> *<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
+<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
+<span class="sourceLineNo">012</span> *<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
+<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
+<span class="sourceLineNo">018</span> */<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>package org.apache.hadoop.hbase.thrift;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.thrift.Constants.COALESCE_INC_KEY;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.util.Bytes.getBytes;<a name="line.23"></a>
+<span class="sourceLineNo">024</span><a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.IOException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.nio.ByteBuffer;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.ArrayList;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.Collections;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.HashMap;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.List;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.Map;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.TreeMap;<a name="line.32"></a>
+<span class="sourceLineNo">033</span><a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.conf.Configuration;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.Cell;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.CellBuilder;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.CellBuilderFactory;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.HConstants;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.ServerName;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.TableName;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.client.Append;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.client.Get;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.client.OperationWithAttributes;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.client.Put;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.Result;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.client.Table;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.filter.ParseFilter;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.filter.PrefixFilter;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.filter.WhileMatchFilter;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.thrift.generated.AlreadyExists;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.thrift.generated.BatchMutation;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.thrift.generated.ColumnDescriptor;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.thrift.generated.Hbase;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.thrift.generated.IOError;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.thrift.generated.IllegalArgument;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.thrift.generated.Mutation;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.thrift.generated.TAppend;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.thrift.generated.TCell;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.thrift.generated.TIncrement;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.thrift.generated.TRegionInfo;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.thrift.generated.TRowResult;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.thrift.generated.TScan;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.thrift.TException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.slf4j.Logger;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.slf4j.LoggerFactory;<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<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> * The HBaseServiceHandler is a glue object that connects Thrift RPC calls to the<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * HBase client API primarily defined in the Admin and Table objects.<a name="line.90"></a>
+<span class="sourceLineNo">091</span> */<a name="line.91"></a>
+<span class="sourceLineNo">092</span>@InterfaceAudience.Private<a name="line.92"></a>
+<span class="sourceLineNo">093</span>@SuppressWarnings("deprecation")<a name="line.93"></a>
+<span class="sourceLineNo">094</span>public class ThriftHBaseServiceHandler extends HBaseServiceHandler implements Hbase.Iface {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private static final Logger LOG = LoggerFactory.getLogger(ThriftHBaseServiceHandler.class);<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  public static final int HREGION_VERSION = 1;<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>  // nextScannerId and scannerMap are used to manage scanner state<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  private int nextScannerId = 0;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  private HashMap&lt;Integer, ResultScannerWrapper&gt; scannerMap;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  IncrementCoalescer coalescer;<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>   * Returns a list of all the column families for a given Table.<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   *<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @param table table<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @throws IOException<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   */<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  byte[][] getAllColumns(Table table) throws IOException {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    HColumnDescriptor[] cds = table.getTableDescriptor().getColumnFamilies();<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    byte[][] columns = new byte[cds.length][];<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    for (int i = 0; i &lt; cds.length; i++) {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      columns[i] = Bytes.add(cds[i].getName(),<a name="line.114"></a>
+<span class="sourceLineNo">115</span>          KeyValue.COLUMN_FAMILY_DELIM_ARRAY);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    }<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    return columns;<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>  /**<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * Assigns a unique ID to the scanner and adds the mapping to an internal<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   * hash-map.<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   *<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   * @param scanner the {@link ResultScanner} to add<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   * @return integer scanner id<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  protected synchronized int addScanner(ResultScanner scanner, boolean sortColumns) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    int id = nextScannerId++;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    ResultScannerWrapper resultScannerWrapper =<a name="line.130"></a>
+<span class="sourceLineNo">131</span>        new ResultScannerWrapper(scanner, sortColumns);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    scannerMap.put(id, resultScannerWrapper);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    return id;<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>   * Returns the scanner associated with the specified ID.<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   *<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * @param id the ID of the scanner to get<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   * @return a Scanner, or null if ID was invalid.<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   */<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  private synchronized ResultScannerWrapper getScanner(int id) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    return scannerMap.get(id);<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>   * Removes the scanner associated with the specified ID from the internal<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * id-&amp;gt;scanner hash-map.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   *<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   * @param id the ID of the scanner to remove<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * @return a Scanner, or null if ID was invalid.<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private synchronized ResultScannerWrapper removeScanner(int id) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    return scannerMap.remove(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>
+<span class="sourceLineNo">157</span>  protected ThriftHBaseServiceHandler(final Configuration c,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      final UserProvider userProvider) throws IOException {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    super(c, userProvider);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    scannerMap = new HashMap&lt;&gt;();<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    this.coalescer = new IncrementCoalescer(this);<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><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  @Override<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  public void enableTable(ByteBuffer tableName) throws IOError {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    try{<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      getAdmin().enableTable(getTableName(tableName));<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    } catch (IOException e) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      LOG.warn(e.getMessage(), e);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      throw getIOError(e);<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>  @Override<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  public void disableTable(ByteBuffer tableName) throws IOError{<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    try{<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      getAdmin().disableTable(getTableName(tableName));<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    } catch (IOException e) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      LOG.warn(e.getMessage(), e);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      throw getIOError(e);<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><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @Override<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public boolean isTableEnabled(ByteBuffer tableName) throws IOError {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    try {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      return this.connectionCache.getAdmin().isTableEnabled(getTableName(tableName));<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    } catch (IOException e) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      LOG.warn(e.getMessage(), e);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      throw getIOError(e);<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><a name="line.194"></a>
+<span class="sourceLineNo">195</span>  // ThriftServerRunner.compact should be deprecated and replaced with methods specific to<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  // table and region.<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  @Override<a name="line.197"></a>
+<span class="sourceLineNo">198</span>  public void compact(ByteBuffer tableNameOrRegionName) throws IOError {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    try {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      try {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        getAdmin().compactRegion(getBytes(tableNameOrRegionName));<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      } catch (IllegalArgumentException e) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>        // Invalid region, try table<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        getAdmin().compact(TableName.valueOf(getBytes(tableNameOrRegionName)));<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      }<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    } catch (IOException e) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      LOG.warn(e.getMessage(), e);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      throw getIOError(e);<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><a name="line.211"></a>
+<span class="sourceLineNo">212</span>  // ThriftServerRunner.majorCompact should be deprecated and replaced with methods specific<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  // to table and region.<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  @Override<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  public void majorCompact(ByteBuffer tableNameOrRegionName) throws IOError {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    try {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      try {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        getAdmin().compactRegion(getBytes(tableNameOrRegionName));<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      } catch (IllegalArgumentException e) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        // Invalid region, try table<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        getAdmin().compact(TableName.valueOf(getBytes(tableNameOrRegionName)));<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    } catch (IOException e) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      LOG.warn(e.getMessage(), e);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      throw getIOError(e);<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>  @Override<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  public List&lt;ByteBuffer&gt; getTableNames() throws IOError {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    try {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      TableName[] tableNames = this.getAdmin().listTableNames();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      ArrayList&lt;ByteBuffer&gt; list = new ArrayList&lt;&gt;(tableNames.length);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      for (TableName tableName : tableNames) {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        list.add(ByteBuffer.wrap(tableName.getName()));<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      }<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      return list;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    } catch (IOException e) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      LOG.warn(e.getMessage(), e);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      throw getIOError(e);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    }<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  }<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>   * @return the list of regions in the given table, or an empty list if the table does not exist<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 List&lt;TRegionInfo&gt; getTableRegions(ByteBuffer tableName) throws IOError {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    try (RegionLocator locator = connectionCache.getRegionLocator(getBytes(tableName))) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      List&lt;HRegionLocation&gt; regionLocations = locator.getAllRegionLocations();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      List&lt;TRegionInfo&gt; results = new ArrayList&lt;&gt;(regionLocations.size());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      for (HRegionLocation regionLocation : regionLocations) {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        RegionInfo info = regionLocation.getRegionInfo();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        ServerName serverName = regionLocation.getServerName();<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        TRegionInfo region = new TRegionInfo();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        region.serverName = ByteBuffer.wrap(<a name="line.256"></a>
+<span class="sourceLineNo">257</span>            Bytes.toBytes(serverName.getHostname()));<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        region.port = serverName.getPort();<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        region.startKey = ByteBuffer.wrap(info.getStartKey());<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        region.endKey = ByteBuffer.wrap(info.getEndKey());<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        region.id = info.getRegionId();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        region.name = ByteBuffer.wrap(info.getRegionName());<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        region.version = HREGION_VERSION; // HRegion now not versioned, PB encoding used<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        results.add(region);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      return results;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    } catch (TableNotFoundException e) {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      // Return empty list for non-existing table<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      return Collections.emptyList();<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    } catch (IOException e){<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      LOG.warn(e.getMessage(), e);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      throw getIOError(e);<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>  @Override<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  public List&lt;TCell&gt; get(<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      ByteBuffer tableName, ByteBuffer row, ByteBuffer column,<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      throws IOError {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    byte [][] famAndQf = CellUtil.parseColumn(getBytes(column));<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    if (famAndQf.length == 1) {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      return get(tableName, row, famAndQf[0], null, attributes);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    if (famAndQf.length == 2) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      return get(tableName, row, famAndQf[0], famAndQf[1], attributes);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    }<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    throw new IllegalArgumentException("Invalid familyAndQualifier provided.");<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>   * Note: this internal interface is slightly different from public APIs in regard to handling<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   * of the qualifier. Here we differ from the public Java API in that null != byte[0]. Rather,<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   * we respect qual == null as a request for the entire column family. The caller (<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   * {@link #get(ByteBuffer, ByteBuffer, ByteBuffer, Map)}) interface IS consistent in that the<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   * column is parse like normal.<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   */<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  protected List&lt;TCell&gt; get(ByteBuffer tableName,<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      ByteBuffer row,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      byte[] family,<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      byte[] qualifier,<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    Table table = null;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    try {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      table = getTable(tableName);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      Get get = new Get(getBytes(row));<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      addAttributes(get, attributes);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      if (qualifier == null) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        get.addFamily(family);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      } else {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        get.addColumn(family, qualifier);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      }<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      Result result = table.get(get);<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      return ThriftUtilities.cellFromHBase(result.rawCells());<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    } catch (IOException e) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      LOG.warn(e.getMessage(), e);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      throw getIOError(e);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    } finally {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      closeTable(table);<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>  @Override<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  public List&lt;TCell&gt; getVer(ByteBuffer tableName, ByteBuffer row, ByteBuffer column,<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      int numVersions, Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    byte [][] famAndQf = CellUtil.parseColumn(getBytes(column));<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    if(famAndQf.length == 1) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      return getVer(tableName, row, famAndQf[0], null, numVersions, attributes);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    }<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    if (famAndQf.length == 2) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      return getVer(tableName, row, famAndQf[0], famAndQf[1], numVersions, attributes);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    throw new IllegalArgumentException("Invalid familyAndQualifier provided.");<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><a name="line.336"></a>
+<span class="sourceLineNo">337</span>  /**<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * Note: this public interface is slightly different from public Java APIs in regard to<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * handling of the qualifier. Here we differ from the public Java API in that null != byte[0].<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * Rather, we respect qual == null as a request for the entire column family. If you want to<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * access the entire column family, use<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * {@link #getVer(ByteBuffer, ByteBuffer, ByteBuffer, int, Map)} with a {@code column} value<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   * that lacks a {@code ':'}.<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   */<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  public List&lt;TCell&gt; getVer(ByteBuffer tableName, ByteBuffer row, byte[] family,<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      byte[] qualifier, int numVersions, Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>    Table table = null;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    try {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      table = getTable(tableName);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      Get get = new Get(getBytes(row));<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      addAttributes(get, attributes);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      if (null == qualifier) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        get.addFamily(family);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      } else {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        get.addColumn(family, qualifier);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      }<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      get.setMaxVersions(numVersions);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      Result result = table.get(get);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      return ThriftUtilities.cellFromHBase(result.rawCells());<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    } catch (IOException e) {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      LOG.warn(e.getMessage(), e);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      throw getIOError(e);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    } finally{<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      closeTable(table);<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>  @Override<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  public List&lt;TCell&gt; getVerTs(ByteBuffer tableName, ByteBuffer row, ByteBuffer column,<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      long timestamp, int numVersions, Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    byte [][] famAndQf = CellUtil.parseColumn(getBytes(column));<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    if (famAndQf.length == 1) {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      return getVerTs(tableName, row, famAndQf[0], null, timestamp, numVersions, attributes);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    }<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    if (famAndQf.length == 2) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      return getVerTs(tableName, row, famAndQf[0], famAndQf[1], timestamp, numVersions,<a name="line.377"></a>
+<span class="sourceLineNo">378</span>          attributes);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    }<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    throw new IllegalArgumentException("Invalid familyAndQualifier provided.");<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  }<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>   * Note: this internal interface is slightly different from public APIs in regard to handling<a name="line.384"></a>
+<span class="sourceLineNo">385</span>   * of the qualifier. Here we differ from the public Java API in that null != byte[0]. Rather,<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * we respect qual == null as a request for the entire column family. The caller (<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * {@link #getVerTs(ByteBuffer, ByteBuffer, ByteBuffer, long, int, Map)}) interface IS<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * consistent in that the column is parse like normal.<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   */<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  protected List&lt;TCell&gt; getVerTs(ByteBuffer tableName, ByteBuffer row, byte[] family,<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      byte[] qualifier, long timestamp, int numVersions, Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      throws IOError {<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span>    Table table = null;<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    try {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      table = getTable(tableName);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      Get get = new Get(getBytes(row));<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      addAttributes(get, attributes);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      if (null == qualifier) {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        get.addFamily(family);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      } else {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        get.addColumn(family, qualifier);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      get.setTimeRange(0, timestamp);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      get.setMaxVersions(numVersions);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      Result result = table.get(get);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      return ThriftUtilities.cellFromHBase(result.rawCells());<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    } catch (IOException e) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      LOG.warn(e.getMessage(), e);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      throw getIOError(e);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    } finally{<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      closeTable(table);<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>  @Override<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  public List&lt;TRowResult&gt; getRow(ByteBuffer tableName, ByteBuffer row,<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    return getRowWithColumnsTs(tableName, row, null,<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        HConstants.LATEST_TIMESTAMP,<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        attributes);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  }<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>  @Override<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  public List&lt;TRowResult&gt; getRowWithColumns(ByteBuffer tableName,<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      ByteBuffer row,<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      List&lt;ByteBuffer&gt; columns,<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    return getRowWithColumnsTs(tableName, row, columns,<a name="line.429"></a>
+<span class="sourceLineNo">430</span>        HConstants.LATEST_TIMESTAMP,<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        attributes);<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>  @Override<a name="line.434"></a>
+<span class="sourceLineNo">435</span>  public List&lt;TRowResult&gt; getRowTs(ByteBuffer tableName, ByteBuffer row,<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      long timestamp, Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    return getRowWithColumnsTs(tableName, row, null,<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        timestamp, attributes);<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>  @Override<a name="line.441"></a>
+<span class="sourceLineNo">442</span>  public List&lt;TRowResult&gt; getRowWithColumnsTs(<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      ByteBuffer tableName, ByteBuffer row, List&lt;ByteBuffer&gt; columns,<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      long timestamp, Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.444"></a>
+<span class="sourceLineNo">445</span><a name="line.445"></a>
+<span class="sourceLineNo">446</span>    Table table = null;<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    try {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      table = getTable(tableName);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      if (columns == null) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>        Get get = new Get(getBytes(row));<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        addAttributes(get, attributes);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>        get.setTimeRange(0, timestamp);<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        Result result = table.get(get);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        return ThriftUtilities.rowResultFromHBase(result);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      Get get = new Get(getBytes(row));<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      addAttributes(get, attributes);<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      for(ByteBuffer column : columns) {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>        byte [][] famAndQf = CellUtil.parseColumn(getBytes(column));<a name="line.459"></a>
+<span class="sourceLineNo">460</span>        if (famAndQf.length == 1) {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>          get.addFamily(famAndQf[0]);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>        } else {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>          get.addColumn(famAndQf[0], famAndQf[1]);<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>      get.setTimeRange(0, timestamp);<a name="line.466"></a>
+<span class="sourceLineNo">467</span>      Result result = table.get(get);<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      return ThriftUtilities.rowResultFromHBase(result);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    } catch (IOException e) {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      LOG.warn(e.getMessage(), e);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      throw getIOError(e);<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    } finally{<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      closeTable(table);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
+<span class="sourceLineNo">475</span>  }<a name="line.475"></a>
+<span class="sourceLineNo">476</span><a name="line.476"></a>
+<span class="sourceLineNo">477</span>  @Override<a name="line.477"></a>
+<span class="sourceLineNo">478</span>  public List&lt;TRowResult&gt; getRows(ByteBuffer tableName,<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      List&lt;ByteBuffer&gt; rows,<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.480"></a>
+<span class="sourceLineNo">481</span>      throws IOError {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    return getRowsWithColumnsTs(tableName, rows, null,<a name="line.482"></a>
+<span class="sourceLineNo">483</span>        HConstants.LATEST_TIMESTAMP,<a name="line.483"></a>
+<span class="sourceLineNo">484</span>        attributes);<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>  @Override<a name="line.487"></a>
+<span class="sourceLineNo">488</span>  public List&lt;TRowResult&gt; getRowsWithColumns(ByteBuffer tableName,<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      List&lt;ByteBuffer&gt; rows,<a name="line.489"></a>
+<span class="sourceLineNo">490</span>      List&lt;ByteBuffer&gt; columns,<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    return getRowsWithColumnsTs(tableName, rows, columns,<a name="line.492"></a>
+<span class="sourceLineNo">493</span>        HConstants.LATEST_TIMESTAMP,<a name="line.493"></a>
+<span class="sourceLineNo">494</span>        attributes);<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>  @Override<a name="line.497"></a>
+<span class="sourceLineNo">498</span>  public List&lt;TRowResult&gt; getRowsTs(ByteBuffer tableName,<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      List&lt;ByteBuffer&gt; rows,<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      long timestamp,<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    return getRowsWithColumnsTs(tableName, rows, null,<a name="line.502"></a>
+<span class="sourceLineNo">503</span>        timestamp, attributes);<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>  @Override<a name="line.506"></a>
+<span class="sourceLineNo">507</span>  public List&lt;TRowResult&gt; getRowsWithColumnsTs(ByteBuffer tableName,<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      List&lt;ByteBuffer&gt; rows,<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      List&lt;ByteBuffer&gt; columns, long timestamp,<a name="line.509"></a>
+<span class="sourceLineNo">510</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.510"></a>
+<span class="sourceLineNo">511</span><a name="line.511"></a>
+<span class="sourceLineNo">512</span>    Table table= null;<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    try {<a name="line.513"></a>
+<span class="sourceLineNo">514</span>      List&lt;Get&gt; gets = new ArrayList&lt;&gt;(rows.size());<a name="line.514"></a>
+<span class="sourceLineNo">515</span>      table = getTable(tableName);<a name="line.515"></a>
+<span class="sourceLineNo">516</span>      if (metrics != null) {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>        metrics.incNumRowKeysInBatchGet(rows.size());<a name="line.517"></a>
+<span class="sourceLineNo">518</span>      }<a name="line.518"></a>
+<span class="sourceLineNo">519</span>      for (ByteBuffer row : rows) {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>        Get get = new Get(getBytes(row));<a name="line.520"></a>
+<span class="sourceLineNo">521</span>        addAttributes(get, attributes);<a name="line.521"></a>
+<span class="sourceLineNo">522</span>        if (columns != null) {<a name="line.522"></a>
+<span class="sourceLineNo">523</span><a name="line.523"></a>
+<span class="sourceLineNo">524</span>          for(ByteBuffer column : columns) {<a name="line.524"></a>
+<span class="sourceLineNo">525</span>            byte [][] famAndQf = CellUtil.parseColumn(getBytes(column));<a name="line.525"></a>
+<span class="sourceLineNo">526</span>            if (famAndQf.length == 1) {<a name="line.526"></a>
+<span class="sourceLineNo">527</span>              get.addFamily(famAndQf[0]);<a name="line.527"></a>
+<span class="sourceLineNo">528</span>            } else {<a name="line.528"></a>
+<span class="sourceLineNo">529</span>              get.addColumn(famAndQf[0], famAndQf[1]);<a name="line.529"></a>
+<span class="sourceLineNo">530</span>            }<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>        get.setTimeRange(0, timestamp);<a name="line.533"></a>
+<span class="sourceLineNo">534</span>        gets.add(get);<a name="line.534"></a>
+<span class="sourceLineNo">535</span>      }<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      Result[] result = table.get(gets);<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      return ThriftUtilities.rowResultFromHBase(result);<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    } catch (IOException e) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>      LOG.warn(e.getMessage(), e);<a name="line.539"></a>
+<span class="sourceLineNo">540</span>      throw getIOError(e);<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    } finally{<a name="line.541"></a>
+<span class="sourceLineNo">542</span>      closeTable(table);<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><a name="line.545"></a>
+<span class="sourceLineNo">546</span>  @Override<a name="line.546"></a>
+<span class="sourceLineNo">547</span>  public void deleteAll(<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      ByteBuffer tableName, ByteBuffer row, ByteBuffer column,<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      throws IOError {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    deleteAllTs(tableName, row, column, HConstants.LATEST_TIMESTAMP,<a name="line.551"></a>
+<span class="sourceLineNo">552</span>        attributes);<a name="line.552"></a>
+<span class="sourceLineNo">553</span>  }<a name="line.553"></a>
+<span class="sourceLineNo">554</span><a name="line.554"></a>
+<span class="sourceLineNo">555</span>  @Override<a name="line.555"></a>
+<span class="sourceLineNo">556</span>  public void deleteAllTs(ByteBuffer tableName,<a name="line.556"></a>
+<span class="sourceLineNo">557</span>      ByteBuffer row,<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      ByteBuffer column,<a name="line.558"></a>
+<span class="sourceLineNo">559</span>      long timestamp, Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    Table table = null;<a name="line.560"></a>
+<span class="sourceLineNo">561</span>    try {<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      table = getTable(tableName);<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      Delete delete  = new Delete(getBytes(row));<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      addAttributes(delete, attributes);<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      byte [][] famAndQf = CellUtil.parseColumn(getBytes(column));<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      if (famAndQf.length == 1) {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>        delete.addFamily(famAndQf[0], timestamp);<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      } else {<a name="line.568"></a>
+<span class="sourceLineNo">569</span>        delete.addColumns(famAndQf[0], famAndQf[1], timestamp);<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      }<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      table.delete(delete);<a name="line.571"></a>
+<span class="sourceLineNo">572</span><a name="line.572"></a>
+<span class="sourceLineNo">573</span>    } catch (IOException e) {<a name="line.573"></a>
+<span class="sourceLineNo">574</span>      LOG.warn(e.getMessage(), e);<a name="line.574"></a>
+<span class="sourceLineNo">575</span>      throw getIOError(e);<a name="line.575"></a>
+<span class="sourceLineNo">576</span>    } finally {<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      closeTable(table);<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>  @Override<a name="line.581"></a>
+<span class="sourceLineNo">582</span>  public void deleteAllRow(<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      ByteBuffer tableName, ByteBuffer row,<a name="line.583"></a>
+<span class="sourceLineNo">584</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>    deleteAllRowTs(tableName, row, HConstants.LATEST_TIMESTAMP, attributes);<a name="line.585"></a>
+<span class="sourceLineNo">586</span>  }<a name="line.586"></a>
+<span class="sourceLineNo">587</span><a name="line.587"></a>
+<span class="sourceLineNo">588</span>  @Override<a name="line.588"></a>
+<span class="sourceLineNo">589</span>  public void deleteAllRowTs(<a name="line.589"></a>
+<span class="sourceLineNo">590</span>      ByteBuffer tableName, ByteBuffer row, long timestamp,<a name="line.590"></a>
+<span class="sourceLineNo">591</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes) throws IOError {<a name="line.591"></a>
+<span class="sourceLineNo">592</span>    Table table = null;<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    try {<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      table = getTable(tableName);<a name="line.594"></a>
+<span class="sourceLineNo">595</span>      Delete delete  = new Delete(getBytes(row), timestamp);<a name="line.595"></a>
+<span class="sourceLineNo">596</span>      addAttributes(delete, attributes);<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      table.delete(delete);<a name="line.597"></a>
+<span class="sourceLineNo">598</span>    } catch (IOException e) {<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      LOG.warn(e.getMessage(), e);<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      throw getIOError(e);<a name="line.600"></a>
+<span class="sourceLineNo">601</span>    } finally {<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      closeTable(table);<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    }<a name="line.603"></a>
+<span class="sourceLineNo">604</span>  }<a name="line.604"></a>
+<span class="sourceLineNo">605</span><a name="line.605"></a>
+<span class="sourceLineNo">606</span>  @Override<a name="line.606"></a>
+<span class="sourceLineNo">607</span>  public void createTable(ByteBuffer in_tableName,<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      List&lt;ColumnDescriptor&gt; columnFamilies) throws IOError, IllegalArgument, AlreadyExists {<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    TableName tableName = getTableName(in_tableName);<a name="line.609"></a>
+<span class="sourceLineNo">610</span>    try {<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      if (getAdmin().tableExists(tableName)) {<a name="line.611"></a>
+<span class="sourceLineNo">612</span>        throw new AlreadyExists("table name already in use");<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      }<a name="line.613"></a>
+<span class="sourceLineNo">614</span>      HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      for (ColumnDescriptor col : columnFamilies) {<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        HColumnDescriptor colDesc = ThriftUtilities.colDescFromThrift(col);<a name="line.616"></a>
+<span class="sourceLineNo">617</span>        desc.addFamily(colDesc);<a name="line.617"></a>
+<span class="sourceLineNo">618</span>      }<a name="line.618"></a>
+<span class="sourceLineNo">619</span>      getAdmin().createTable(desc);<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    } catch (IOException e) {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>      LOG.warn(e.getMessage(), e);<a name="line.621"></a>
+<span class="sourceLineNo">622</span>      throw getIOError(e);<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    } catch (IllegalArgumentException e) {<a name="line.623"></a>
+<span class="sourceLineNo">624</span>      LOG.warn(e.getMessage(), e);<a name="line.624"></a>
+<span class="sourceLineNo">625</span>      throw new IllegalArgument(Throwables.getStackTraceAsString(e));<a name="line.625"></a>
+<span class="sourceLineNo">626</span>    }<a name="line.626"></a>
+<span class="sourceLineNo">627</span>  }<a name="line.627"></a>
+<span class="sourceLineNo">628</span><a name="line.628"></a>
+<span class="sourceLineNo">629</span>  private static TableName getTableName(ByteBuffer buffer) {<a name="line.629"></a>
+<span class="sourceLineNo">630</span>    return TableName.valueOf(getBytes(buffer));<a name="line.630"></a>
+<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
+<span class="sourceLineNo">632</span><a name="line.632"></a>
+<span class="sourceLineNo">633</span>  @Override<a name="line.633"></a>
+<span class="sourceLineNo">634</span>  public void deleteTable(ByteBuffer in_tableName) throws IOError {<a name="line.634"></a>
+<span class="sourceLineNo">635</span>    TableName tableName = getTableName(in_tableName);<a name="line.635"></a>
+<span class="sourceLineNo">636</span>    if (LOG.isDebugEnabled()) {<a name="line.636"></a>
+<span class="sourceLineNo">637</span>      LOG.debug("deleteTable: table={}", tableName);<a name="line.637"></a>
+<span class="sourceLineNo">638</span>    }<a name="line.638"></a>
+<span class="sourceLineNo">639</span>    try {<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      if (!getAdmin().tableExists(tableName)) {<a name="line.640"></a>
+<span class="sourceLineNo">641</span>        throw new IOException("table does not exist");<a name="line.641"></a>
+<span class="sourceLineNo">642</span>      }<a name="line.642"></a>
+<span class="sourceLineNo">643</span>      getAdmin().deleteTable(tableName);<a name="line.643"></a>
+<span class="sourceLineNo">644</span>    } catch (IOException e) {<a name="line.644"></a>
+<span class="sourceLineNo">645</span>      LOG.warn(e.getMessage(), e);<a name="line.645"></a>
+<span class="sourceLineNo">646</span>      throw getIOError(e);<a name="line.646"></a>
+<span class="sourceLineNo">647</span>    }<a name="line.647"></a>
+<span class="sourceLineNo">648</span>  }<a name="line.648"></a>
+<span class="sourceLineNo">649</span><a name="line.649"></a>
+<span class="sourceLineNo">650</span>  @Override<a name="line.650"></a>
+<span class="sourceLineNo">651</span>  public void mutateRow(ByteBuffer tableName, ByteBuffer row,<a name="line.651"></a>
+<span class="sourceLineNo">652</span>      List&lt;Mutation&gt; mutations, Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.652"></a>
+<span class="sourceLineNo">653</span>      throws IOError, IllegalArgument {<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    mutateRowTs(tableName, row, mutations, HConstants.LATEST_TIMESTAMP, attributes);<a name="line.654"></a>
+<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
+<span class="sourceLineNo">656</span><a name="line.656"></a>
+<span class="sourceLineNo">657</span>  @Override<a name="line.657"></a>
+<span class="sourceLineNo">658</span>  public void mutateRowTs(ByteBuffer tableName, ByteBuffer row,<a name="line.658"></a>
+<span class="sourceLineNo">659</span>      List&lt;Mutation&gt; mutations, long timestamp,<a name="line.659"></a>
+<span class="sourceLineNo">660</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.660"></a>
+<span class="sourceLineNo">661</span>      throws IOError, IllegalArgument {<a name="line.661"></a>
+<span class="sourceLineNo">662</span>    Table table = null;<a name="line.662"></a>
+<span class="sourceLineNo">663</span>    try {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>      table = getTable(tableName);<a name="line.664"></a>
+<span class="sourceLineNo">665</span>      Put put = new Put(getBytes(row), timestamp);<a name="line.665"></a>
+<span class="sourceLineNo">666</span>      addAttributes(put, attributes);<a name="line.666"></a>
+<span class="sourceLineNo">667</span><a name="line.667"></a>
+<span class="sourceLineNo">668</span>      Delete delete = new Delete(getBytes(row));<a name="line.668"></a>
+<span class="sourceLineNo">669</span>      addAttributes(delete, attributes);<a name="line.669"></a>
+<span class="sourceLineNo">670</span>      if (metrics != null) {<a name="line.670"></a>
+<span class="sourceLineNo">671</span>        metrics.incNumRowKeysInBatchMutate(mutations.size());<a name="line.671"></a>
+<span class="sourceLineNo">672</span>      }<a name="line.672"></a>
+<span class="sourceLineNo">673</span><a name="line.673"></a>
+<span class="sourceLineNo">674</span>      // I apologize for all this mess :)<a name="line.674"></a>
+<span class="sourceLineNo">675</span>      CellBuilder builder = CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY);<a name="line.675"></a>
+<span class="sourceLineNo">676</span>      for (Mutation m : mutations) {<a name="line.676"></a>
+<span class="sourceLineNo">677</span>        byte[][] famAndQf = CellUtil.parseColumn(getBytes(m.column));<a name="line.677"></a>
+<span class="sourceLineNo">678</span>        if (m.isDelete) {<a name="line.678"></a>
+<span class="sourceLineNo">679</span>          if (famAndQf.length == 1) {<a name="line.679"></a>
+<span class="sourceLineNo">680</span>            delete.addFamily(famAndQf[0], timestamp);<a name="line.680"></a>
+<span class="sourceLineNo">681</span>          } else {<a name="line.681"></a>
+<span class="sourceLineNo">682</span>            delete.addColumns(famAndQf[0], famAndQf[1], timestamp);<a name="line.682"></a>
+<span class="sourceLineNo">683</span>          }<a name="line.683"></a>
+<span class="sourceLineNo">684</span>          delete.setDurability(m.writeToWAL ? Durability.SYNC_WAL : Durability.SKIP_WAL);<a name="line.684"></a>
+<span class="sourceLineNo">685</span>        } else {<a name="line.685"></a>
+<span class="sourceLineNo">686</span>          if(famAndQf.length == 1) {<a name="line.686"></a>
+<span class="sourceLineNo">687</span>            LOG.warn("No column qualifier specified. Delete is the only mutation supported "<a name="line.687"></a>
+<span class="sourceLineNo">688</span>                + "over the whole column family.");<a name="line.688"></a>
+<span class="sourceLineNo">689</span>          } else {<a name="line.689"></a>
+<span class="sourceLineNo">690</span>            put.add(builder.clear()<a name="line.690"></a>
+<span class="sourceLineNo">691</span>                .setRow(put.getRow())<a name="line.691"></a>
+<span class="sourceLineNo">692</span>                .setFamily(famAndQf[0])<a name="line.692"></a>
+<span class="sourceLineNo">693</span>                .setQualifier(famAndQf[1])<a name="line.693"></a>
+<span class="sourceLineNo">694</span>                .setTimestamp(put.getTimestamp())<a name="line.694"></a>
+<span class="sourceLineNo">695</span>                .setType(Cell.Type.Put)<a name="line.695"></a>
+<span class="sourceLineNo">696</span>                .setValue(m.value != null ? getBytes(m.value)<a name="line.696"></a>
+<span class="sourceLineNo">697</span>                    : HConstants.EMPTY_BYTE_ARRAY)<a name="line.697"></a>
+<span class="sourceLineNo">698</span>                .build());<a name="line.698"></a>
+<span class="sourceLineNo">699</span>          }<a name="line.699"></a>
+<span class="sourceLineNo">700</span>          put.setDurability(m.writeToWAL ? Durability.SYNC_WAL : Durability.SKIP_WAL);<a name="line.700"></a>
+<span class="sourceLineNo">701</span>        }<a name="line.701"></a>
+<span class="sourceLineNo">702</span>      }<a name="line.702"></a>
+<span class="sourceLineNo">703</span>      if (!delete.isEmpty()) {<a name="line.703"></a>
+<span class="sourceLineNo">704</span>        table.delete(delete);<a name="line.704"></a>
+<span class="sourceLineNo">705</span>      }<a name="line.705"></a>
+<span class="sourceLineNo">706</span>      if (!put.isEmpty()) {<a name="line.706"></a>
+<span class="sourceLineNo">707</span>        table.put(put);<a name="line.707"></a>
+<span class="sourceLineNo">708</span>      }<a name="line.708"></a>
+<span class="sourceLineNo">709</span>    } catch (IOException e) {<a name="line.709"></a>
+<span class="sourceLineNo">710</span>      LOG.warn(e.getMessage(), e);<a name="line.710"></a>
+<span class="sourceLineNo">711</span>      throw getIOError(e);<a name="line.711"></a>
+<span class="sourceLineNo">712</span>    } catch (IllegalArgumentException e) {<a name="line.712"></a>
+<span class="sourceLineNo">713</span>      LOG.warn(e.getMessage(), e);<a name="line.713"></a>
+<span class="sourceLineNo">714</span>      throw new IllegalArgument(Throwables.getStackTraceAsString(e));<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    } finally{<a name="line.715"></a>
+<span class="sourceLineNo">716</span>      closeTable(table);<a name="line.716"></a>
+<span class="sourceLineNo">717</span>    }<a name="line.717"></a>
+<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
+<span class="sourceLineNo">719</span><a name="line.719"></a>
+<span class="sourceLineNo">720</span>  @Override<a name="line.720"></a>
+<span class="sourceLineNo">721</span>  public void mutateRows(ByteBuffer tableName, List&lt;BatchMutation&gt; rowBatches,<a name="line.721"></a>
+<span class="sourceLineNo">722</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.722"></a>
+<span class="sourceLineNo">723</span>      throws IOError, IllegalArgument, TException {<a name="line.723"></a>
+<span class="sourceLineNo">724</span>    mutateRowsTs(tableName, rowBatches, HConstants.LATEST_TIMESTAMP, attributes);<a name="line.724"></a>
+<span class="sourceLineNo">725</span>  }<a name="line.725"></a>
+<span class="sourceLineNo">726</span><a name="line.726"></a>
+<span class="sourceLineNo">727</span>  @Override<a name="line.727"></a>
+<span class="sourceLineNo">728</span>  public void mutateRowsTs(<a name="line.728"></a>
+<span class="sourceLineNo">729</span>      ByteBuffer tableName, List&lt;BatchMutation&gt; rowBatches, long timestamp,<a name="line.729"></a>
+<span class="sourceLineNo">730</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.730"></a>
+<span class="sourceLineNo">731</span>      throws IOError, IllegalArgument, TException {<a name="line.731"></a>
+<span class="sourceLineNo">732</span>    List&lt;Put&gt; puts = new ArrayList&lt;&gt;();<a name="line.732"></a>
+<span class="sourceLineNo">733</span>    List&lt;Delete&gt; deletes = new ArrayList&lt;&gt;();<a name="line.733"></a>
+<span class="sourceLineNo">734</span>    CellBuilder builder = CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY);<a name="line.734"></a>
+<span class="sourceLineNo">735</span>    for (BatchMutation batch : rowBatches) {<a name="line.735"></a>
+<span class="sourceLineNo">736</span>      byte[] row = getBytes(batch.row);<a name="line.736"></a>
+<span class="sourceLineNo">737</span>      List&lt;Mutation&gt; mutations = batch.mutations;<a name="line.737"></a>
+<span class="sourceLineNo">738</span>      Delete delete = new Delete(row);<a name="line.738"></a>
+<span class="sourceLineNo">739</span>      addAttributes(delete, attributes);<a name="line.739"></a>
+<span class="sourceLineNo">740</span>      Put put = new Put(row, timestamp);<a name="line.740"></a>
+<span class="sourceLineNo">741</span>      addAttributes(put, attributes);<a name="line.741"></a>
+<span class="sourceLineNo">742</span>      for (Mutation m : mutations) {<a name="line.742"></a>
+<span class="sourceLineNo">743</span>        byte[][] famAndQf = CellUtil.parseColumn(getBytes(m.column));<a name="line.743"></a>
+<span class="sourceLineNo">744</span>        if (m.isDelete) {<a name="line.744"></a>
+<span class="sourceLineNo">745</span>          // no qualifier, family only.<a name="line.745"></a>
+<span class="sourceLineNo">746</span>          if (famAndQf.length == 1) {<a name="line.746"></a>
+<span class="sourceLineNo">747</span>            delete.addFamily(famAndQf[0], timestamp);<a name="line.747"></a>
+<span class="sourceLineNo">748</span>          } else {<a name="line.748"></a>
+<span class="sourceLineNo">749</span>            delete.addColumns(famAndQf[0], famAndQf[1], timestamp);<a name="line.749"></a>
+<span class="sourceLineNo">750</span>          }<a name="line.750"></a>
+<span class="sourceLineNo">751</span>          delete.setDurability(m.writeToWAL ? Durability.SYNC_WAL<a name="line.751"></a>
+<span class="sourceLineNo">752</span>              : Durability.SKIP_WAL);<a name="line.752"></a>
+<span class="sourceLineNo">753</span>        } else {<a name="line.753"></a>
+<span class="sourceLineNo">754</span>          if (famAndQf.length == 1) {<a name="line.754"></a>
+<span class="sourceLineNo">755</span>            LOG.warn("No column qualifier specified. Delete is the only mutation supported "<a name="line.755"></a>
+<span class="sourceLineNo">756</span>                + "over the whole column family.");<a name="line.756"></a>
+<span class="sourceLineNo">757</span>          }<a name="line.757"></a>
+<span class="sourceLineNo">758</span>          if (famAndQf.length == 2) {<a name="line.758"></a>
+<span class="sourceLineNo">759</span>            try {<a name="line.759"></a>
+<span class="sourceLineNo">760</span>              put.add(builder.clear()<a name="line.760"></a>
+<span class="sourceLineNo">761</span>                  .setRow(put.getRow())<a name="line.761"></a>
+<span class="sourceLineNo">762</span>                  .setFamily(famAndQf[0])<a name="line.762"></a>
+<span class="sourceLineNo">763</span>                  .setQualifier(famAndQf[1])<a name="line.763"></a>
+<span class="sourceLineNo">764</span>                  .setTimestamp(put.getTimestamp())<a name="line.764"></a>
+<span class="sourceLineNo">765</span>                  .setType(Cell.Type.Put)<a name="line.765"></a>
+<span class="sourceLineNo">766</span>                  .setValue(m.value != null ? getBytes(m.value)<a name="line.766"></a>
+<span class="sourceLineNo">767</span>                      : HConstants.EMPTY_BYTE_ARRAY)<a name="line.767"></a>
+<span class="sourceLineNo">768</span>                  .build());<a name="line.768"></a>
+<span class="sourceLineNo">769</span>            } catch (IOException e) {<a name="line.769"></a>
+<span class="sourceLineNo">770</span>              throw new IllegalArgumentException(e);<a name="line.770"></a>
+<span class="sourceLineNo">771</span>            }<a name="line.771"></a>
+<span class="sourceLineNo">772</span>          } else {<a name="line.772"></a>
+<span class="sourceLineNo">773</span>            throw new IllegalArgumentException("Invalid famAndQf provided.");<a name="line.773"></a>
+<span class="sourceLineNo">774</span>          }<a name="line.774"></a>
+<span class="sourceLineNo">775</span>          put.setDurability(m.writeToWAL ? Durability.SYNC_WAL : Durability.SKIP_WAL);<a name="line.775"></a>
+<span class="sourceLineNo">776</span>        }<a name="line.776"></a>
+<span class="sourceLineNo">777</span>      }<a name="line.777"></a>
+<span class="sourceLineNo">778</span>      if (!delete.isEmpty()) {<a name="line.778"></a>
+<span class="sourceLineNo">779</span>        deletes.add(delete);<a name="line.779"></a>
+<span class="sourceLineNo">780</span>      }<a name="line.780"></a>
+<span class="sourceLineNo">781</span>      if (!put.isEmpty()) {<a name="line.781"></a>
+<span class="sourceLineNo">782</span>        puts.add(put);<a name="line.782"></a>
+<span class="sourceLineNo">783</span>      }<a name="line.783"></a>
+<span class="sourceLineNo">784</span>    }<a name="line.784"></a>
+<span class="sourceLineNo">785</span><a name="line.785"></a>
+<span class="sourceLineNo">786</span>    Table table = null;<a name="line.786"></a>
+<span class="sourceLineNo">787</span>    try {<a name="line.787"></a>
+<span class="sourceLineNo">788</span>      table = getTable(tableName);<a name="line.788"></a>
+<span class="sourceLineNo">789</span>      if (!puts.isEmpty()) {<a name="line.789"></a>
+<span class="sourceLineNo">790</span>        table.put(puts);<a name="line.790"></a>
+<span class="sourceLineNo">791</span>      }<a name="line.791"></a>
+<span class="sourceLineNo">792</span>      if (!deletes.isEmpty()) {<a name="line.792"></a>
+<span class="sourceLineNo">793</span>        table.delete(deletes);<a name="line.793"></a>
+<span class="sourceLineNo">794</span>      }<a name="line.794"></a>
+<span class="sourceLineNo">795</span>    } catch (IOException e) {<a name="line.795"></a>
+<span class="sourceLineNo">796</span>      LOG.warn(e.getMessage(), e);<a name="line.796"></a>
+<span class="sourceLineNo">797</span>      throw getIOError(e);<a name="line.797"></a>
+<span class="sourceLineNo">798</span>    } catch (IllegalArgumentException e) {<a name="line.798"></a>
+<span class="sourceLineNo">799</span>      LOG.warn(e.getMessage(), e);<a name="line.799"></a>
+<span class="sourceLineNo">800</span>      throw new IllegalArgument(Throwables.getStackTraceAsString(e));<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    } finally{<a name="line.801"></a>
+<span class="sourceLineNo">802</span>      closeTable(table);<a name="line.802"></a>
+<span class="sourceLineNo">803</span>    }<a name="line.803"></a>
+<span class="sourceLineNo">804</span>  }<a name="line.804"></a>
+<span class="sourceLineNo">805</span><a name="line.805"></a>
+<span class="sourceLineNo">806</span>  @Override<a name="line.806"></a>
+<span class="sourceLineNo">807</span>  public long atomicIncrement(<a name="line.807"></a>
+<span class="sourceLineNo">808</span>      ByteBuffer tableName, ByteBuffer row, ByteBuffer column, long amount)<a name="line.808"></a>
+<span class="sourceLineNo">809</span>      throws IOError, IllegalArgument, TException {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>    byte [][] famAndQf = CellUtil.parseColumn(getBytes(column));<a name="line.810"></a>
+<span class="sourceLineNo">811</span>    if(famAndQf.length == 1) {<a name="line.811"></a>
+<span class="sourceLineNo">812</span>      return atomicIncrement(tableName, row, famAndQf[0], HConstants.EMPTY_BYTE_ARRAY, amount);<a name="line.812"></a>
+<span class="sourceLineNo">813</span>    }<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    return atomicIncrement(tableName, row, famAndQf[0], famAndQf[1], amount);<a name="line.814"></a>
+<span class="sourceLineNo">815</span>  }<a name="line.815"></a>
+<span class="sourceLineNo">816</span><a name="line.816"></a>
+<span class="sourceLineNo">817</span>  protected long atomicIncrement(ByteBuffer tableName, ByteBuffer row,<a name="line.817"></a>
+<span class="sourceLineNo">818</span>      byte [] family, byte [] qualifier, long amount)<a name="line.818"></a>
+<span class="sourceLineNo">819</span>      throws IOError, IllegalArgument, TException {<a name="line.819"></a>
+<span class="sourceLineNo">820</span>    Table table = null;<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    try {<a name="line.821"></a>
+<span class="sourceLineNo">822</span>      table = getTable(tableName);<a name="line.822"></a>
+<span class="sourceLineNo">823</span>      return table.incrementColumnValue(<a name="line.823"></a>
+<span class="sourceLineNo">824</span>          getBytes(row), family, qualifier, amount);<a name="line.824"></a>
+<span class="sourceLineNo">825</span>    } catch (IOException e) {<a name="line.825"></a>
+<span class="sourceLineNo">826</span>      LOG.warn(e.getMessage(), e);<a name="line.826"></a>
+<span class="sourceLineNo">827</span>      throw getIOError(e);<a name="line.827"></a>
+<span class="sourceLineNo">828</span>    } finally {<a name="line.828"></a>
+<span class="sourceLineNo">829</span>      closeTable(table);<a name="line.829"></a>
+<span class="sourceLineNo">830</span>    }<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">833</span>  @Override<a name="line.833"></a>
+<span class="sourceLineNo">834</span>  public void scannerClose(int id) throws IOError, IllegalArgument {<a name="line.834"></a>
+<span class="sourceLineNo">835</span>    LOG.debug("scannerClose: id={}", id);<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    ResultScannerWrapper resultScannerWrapper = getScanner(id);<a name="line.836"></a>
+<span class="sourceLineNo">837</span>    if (resultScannerWrapper == null) {<a name="line.837"></a>
+<span class="sourceLineNo">838</span>      LOG.warn("scanner ID is invalid");<a name="line.838"></a>
+<span class="sourceLineNo">839</span>      throw new IllegalArgument("scanner ID is invalid");<a name="line.839"></a>
+<span class="sourceLineNo">840</span>    }<a name="line.840"></a>
+<span class="sourceLineNo">841</span>    resultScannerWrapper.getScanner().close();<a name="line.841"></a>
+<span class="sourceLineNo">842</span>    removeScanner(id);<a name="line.842"></a>
+<span class="sourceLineNo">843</span>  }<a name="line.843"></a>
+<span class="sourceLineNo">844</span><a name="line.844"></a>
+<span class="sourceLineNo">845</span>  @Override<a name="line.845"></a>
+<span class="sourceLineNo">846</span>  public List&lt;TRowResult&gt; scannerGetList(int id,int nbRows)<a name="line.846"></a>
+<span class="sourceLineNo">847</span>      throws IllegalArgument, IOError {<a name="line.847"></a>
+<span class="sourceLineNo">848</span>    LOG.debug("scannerGetList: id={}", id);<a name="line.848"></a>
+<span class="sourceLineNo">849</span>    ResultScannerWrapper resultScannerWrapper = getScanner(id);<a name="line.849"></a>
+<span class="sourceLineNo">850</span>    if (null == resultScannerWrapper) {<a name="line.850"></a>
+<span class="sourceLineNo">851</span>      String message = "scanner ID is invalid";<a name="line.851"></a>
+<span class="sourceLineNo">852</span>      LOG.warn(message);<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      throw new IllegalArgument("scanner ID is invalid");<a name="line.853"></a>
+<span class="sourceLineNo">854</span>    }<a name="line.854"></a>
+<span class="sourceLineNo">855</span><a name="line.855"></a>
+<span class="sourceLineNo">856</span>    Result [] results;<a name="line.856"></a>
+<span class="sourceLineNo">857</span>    try {<a name="line.857"></a>
+<span class="sourceLineNo">858</span>      results = resultScannerWrapper.getScanner().next(nbRows);<a name="line.858"></a>
+<span class="sourceLineNo">859</span>      if (null == results) {<a name="line.859"></a>
+<span class="sourceLineNo">860</span>        return new ArrayList&lt;&gt;();<a name="line.860"></a>
+<span class="sourceLineNo">861</span>      }<a name="line.861"></a>
+<span class="sourceLineNo">862</span>    } catch (IOException e) {<a name="line.862"></a>
+<span class="sourceLineNo">863</span>      LOG.warn(e.getMessage(), e);<a name="line.863"></a>
+<span class="sourceLineNo">864</span>      throw getIOError(e);<a name="line.864"></a>
+<span class="sourceLineNo">865</span>    }<a name="line.865"></a>
+<span class="sourceLineNo">866</span>    return ThriftUtilities.rowResultFromHBase(results, resultScannerWrapper.isColumnSorted());<a name="line.866"></a>
+<span class="sourceLineNo">867</span>  }<a name="line.867"></a>
+<span class="sourceLineNo">868</span><a name="line.868"></a>
+<span class="sourceLineNo">869</span>  @Override<a name="line.869"></a>
+<span class="sourceLineNo">870</span>  public List&lt;TRowResult&gt; scannerGet(int id) throws IllegalArgument, IOError {<a name="line.870"></a>
+<span class="sourceLineNo">871</span>    return scannerGetList(id,1);<a name="line.871"></a>
+<span class="sourceLineNo">872</span>  }<a name="line.872"></a>
+<span class="sourceLineNo">873</span><a name="line.873"></a>
+<span class="sourceLineNo">874</span>  @Override<a name="line.874"></a>
+<span class="sourceLineNo">875</span>  public int scannerOpenWithScan(ByteBuffer tableName, TScan tScan,<a name="line.875"></a>
+<span class="sourceLineNo">876</span>      Map&lt;ByteBuffer, ByteBuffer&gt; attributes)<a name="line.876"></a>
+<span class="sourceLineNo">877</span>      throws IOError {<a name="line.877"></a>
+<span class="sourceLineNo">878</span><a name="line.878"></a>
+<span class="sourceLineNo">879</span>    Table table = null;<a name="line.879"></a>
+<span class="sourceLineNo">880</span>    try {<a name="line.880"></a>
+<span class="sourceLineNo">881</span>      table = getTable(tableName);<a name="line.881"></a>
+<span class="sourceLineNo">882</span>      Scan scan = new Scan();<a name="line.882"></a>
+<span class="sourceLineNo">883</span>      addAttributes(scan, attributes);<a name="line.883"></a>
+<span class="sourceLineNo">884</span>      if (tScan.isSetStartRow()) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>        scan.setStartRow(tScan.getStartRow());<a name="line.885"></a>
+<span class="sourceLineNo">886</span>      }<a name="line.886"></a>
+<span class="sourceLineNo">887</span>      if (tScan.isSetStopRow()) {<a name="line.887"></a>
+<span class="sourceLineNo">888</span>        scan.setStopRow(tScan.getStopRow());<a name="line.888"></a>
+<span class="sourceLineNo">889</span>      }<a name="line.889"></a>
+<span class="sourceLineNo">890</span>      if (tScan.isSetTimestamp()) {<a name="line.890"></a>
+<span class="sourceLineNo">891</span>        scan.setTimeRange(0, tScan.getTimestamp());<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      }<a name="line.892"></a>
+<span class="sourceLineNo">893</span>      if (tScan.isSetCaching()) {<a name="line.893"></a>
+<span class="sourceLineNo">894</span>        scan.setCaching(tScan.getCaching());<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      }<a name="line.895"></a>
+<span class="sourceLineNo">896</span>      if (tScan.isSetBatchSize()) {<a name="line.896"></a>
+<span class="sourceLineNo">897</span>        scan.setBatch(tScan.getBatchSize());<a name="line.897"></a>
+<span class="sourceLineNo">898</span>      }<a name="line.898"></a>
+<span class="sourceLineNo">899</span>      if (tScan.isSetColumns() &amp;&amp; !tScan.getColumns().isEmpty()) {<a name="line.899"></a>
+<span class="sourceLineNo">900</span>        for(ByteBuffer column : tScan.getColumns()) {<a name="line.900"></a>
+<span class="sourceLineNo">901</span>          byte [][] famQf = CellUtil.parseColumn(getBytes(column));<a name="line.901"></a>
+<span class="sourceLineNo">902</span>          if(famQf.length == 1) {<a name="line.902"></a>
+<span class="sourceLineNo">903</span>            scan.addFamily(famQf[0]);<a name="line.903"></a>
+<span class="sourceLineNo">904</span>          } else {<a name="line.904"></a>
+<span class="sourceLineNo">905</span>            scan.addColumn(famQf[0], famQf[1]);<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>      }<a name="line.908"></a>
+<span class="sourceLineNo">909</span>      if (tScan.isSetFilterString()) {<a name="line.909"></a>
+<span class="sourceLineNo">910</span>        ParseFilter parseFilter = new ParseFilter();<a name="line.910"></a>
+<span class="sourceLineNo">911</span>        scan.setFilter(<a name="line.911"></a>
+<span class="sourceLineNo">912</span>            parseFilter.parseFilterString(tScan.getFilterString()));<a name="line.912"></a>
+<span class="sourceLineNo">913</span>      }<a name="line.913"></a>
+<span class="sourceLineNo">914</span>      if (tScan.isSetReversed()) {<a name="line.914"></a>
+<span class="sourceLineNo">915</span>        scan.setReversed(tScan.isReversed());<a name="line.915"></a>
+<span class="sourceLineNo">916</span>      }<a name="line.916"></a>
+<span class="sourceLineNo">917</span>      if (tScan.isSetCacheBlocks()) {<a name="line.917"></a>
+<span class="sourceLineNo">918</span>        scan.setCacheBlocks(tScan.isCacheBlocks());<a name="line.918"></a>
+<span class="sourceLineNo">919</span>      }<a name="line.919"></a>
+<span class="sourceLineNo">920</span>      return addScanner(table.getScanner(scan), tScan.sortColumns);<a name="line.920"></a>
+<span class="sourceLineNo">921</span>    } catch (IOException e) {<a name="line.921"></a>
+<span class="sourceLineNo">922</span>  

<TRUNCATED>

[22/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 d7e790d..1648cbc 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
@@ -41,203 +41,203 @@
 <span class="sourceLineNo">033</span>import java.util.concurrent.atomic.LongAdder;<a name="line.33"></a>
 <span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.34"></a>
 <span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.Table;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.thrift.generated.TIncrement;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.metrics2.util.MBeans;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.thrift.TException;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.slf4j.Logger;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.slf4j.LoggerFactory;<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> * This class will coalesce increments from a thift server if<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * hbase.regionserver.thrift.coalesceIncrement is set to true. Turning this<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * config to true will cause the thrift server to queue increments into an<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * instance of this class. The thread pool associated with this class will drain<a name="line.50"></a>
-<span class="sourceLineNo">051</span> * the coalesced increments as the thread is able. This can cause data loss if the<a name="line.51"></a>
-<span class="sourceLineNo">052</span> * thrift server dies or is shut down before everything in the queue is drained.<a name="line.52"></a>
-<span class="sourceLineNo">053</span> *<a name="line.53"></a>
-<span class="sourceLineNo">054</span> */<a name="line.54"></a>
-<span class="sourceLineNo">055</span>@InterfaceAudience.Private<a name="line.55"></a>
-<span class="sourceLineNo">056</span>public class IncrementCoalescer implements IncrementCoalescerMBean {<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>  /**<a name="line.58"></a>
-<span class="sourceLineNo">059</span>   * Used to identify a cell that will be incremented.<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>  static class FullyQualifiedRow {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    private byte[] table;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    private byte[] rowKey;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    private byte[] family;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    private byte[] qualifier;<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>    public FullyQualifiedRow(byte[] table, byte[] rowKey, byte[] fam, byte[] qual) {<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      super();<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      this.table = table;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      this.rowKey = rowKey;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      this.family = fam;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      this.qualifier = qual;<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">076</span>    public byte[] getTable() {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      return table;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>    public void setTable(byte[] table) {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      this.table = table;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public byte[] getRowKey() {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      return rowKey;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>    public void setRowKey(byte[] rowKey) {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      this.rowKey = rowKey;<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>    public byte[] getFamily() {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      return family;<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 void setFamily(byte[] fam) {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      this.family = fam;<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>    public byte[] getQualifier() {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      return qualifier;<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 setQualifier(byte[] qual) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      this.qualifier = qual;<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 int hashCode() {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      final int prime = 31;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      int result = 1;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      result = prime * result + Arrays.hashCode(family);<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      result = prime * result + Arrays.hashCode(qualifier);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      result = prime * result + Arrays.hashCode(rowKey);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      result = prime * result + Arrays.hashCode(table);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      return result;<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>    @Override<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    public boolean equals(Object obj) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      if (this == obj) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>        return true;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      if (obj == null) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        return false;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      if (getClass() != obj.getClass()) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        return false;<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>      FullyQualifiedRow other = (FullyQualifiedRow) obj;<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>      if (!Arrays.equals(family, other.family)) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        return false;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      }<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      if (!Arrays.equals(qualifier, other.qualifier)) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>        return false;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      if (!Arrays.equals(rowKey, other.rowKey)) {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>        return false;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      }<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      if (!Arrays.equals(table, other.table)) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        return false;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      }<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      return true;<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>  static class DaemonThreadFactory implements ThreadFactory {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    static final AtomicInteger poolNumber = new AtomicInteger(1);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    final ThreadGroup group;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    final AtomicInteger threadNumber = new AtomicInteger(1);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    final String namePrefix;<a name="line.154"></a>
-<span class="sourceLineNo">155</span><a name="line.155"></a>
-<span class="sourceLineNo">156</span>    DaemonThreadFactory() {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      SecurityManager s = System.getSecurityManager();<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      group = (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup();<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      namePrefix = "ICV-" + poolNumber.getAndIncrement() + "-thread-";<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 Thread newThread(Runnable r) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      Thread t = new Thread(group, r, namePrefix + threadNumber.getAndIncrement(), 0);<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>      if (!t.isDaemon()) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        t.setDaemon(true);<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      if (t.getPriority() != Thread.NORM_PRIORITY) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        t.setPriority(Thread.NORM_PRIORITY);<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>      return t;<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>  private final LongAdder failedIncrements = new LongAdder();<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  private final LongAdder successfulCoalescings = new LongAdder();<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  private final LongAdder totalIncrements = new LongAdder();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  private final ConcurrentMap&lt;FullyQualifiedRow, Long&gt; countersMap =<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      new ConcurrentHashMap&lt;&gt;(100000, 0.75f, 1500);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  private final ThreadPoolExecutor pool;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  private final HBaseHandler handler;<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  private int maxQueueSize = 500000;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  private static final int CORE_POOL_SIZE = 1;<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>  private static final Logger LOG = LoggerFactory.getLogger(FullyQualifiedRow.class);<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>  @SuppressWarnings("deprecation")<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  public IncrementCoalescer(HBaseHandler hand) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    this.handler = hand;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    LinkedBlockingQueue&lt;Runnable&gt; queue = new LinkedBlockingQueue&lt;&gt;();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    pool =<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        new ThreadPoolExecutor(CORE_POOL_SIZE, CORE_POOL_SIZE, 50, TimeUnit.MILLISECONDS, queue,<a name="line.195"></a>
-<span class="sourceLineNo">196</span>            Threads.newDaemonThreadFactory("IncrementCoalescer"));<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>    MBeans.register("thrift", "Thrift", this);<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>  public boolean queueIncrement(TIncrement inc) throws TException {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    if (!canQueue()) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      failedIncrements.increment();<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      return false;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    return internalQueueTincrement(inc);<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>  public boolean queueIncrements(List&lt;TIncrement&gt; incs) throws TException {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    if (!canQueue()) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      failedIncrements.increment();<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      return false;<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>    for (TIncrement tinc : incs) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      internalQueueTincrement(tinc);<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>    return true;<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>  private boolean internalQueueTincrement(TIncrement inc) throws TException {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    byte[][] famAndQf = CellUtil.parseColumn(inc.getColumn());<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>    if (famAndQf.length != 2) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      return false;<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 internalQueueIncrement(inc.getTable(), inc.getRow(), famAndQf[0], famAndQf[1],<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      inc.getAmmount());<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">036</span>import org.apache.hadoop.hbase.thrift.generated.TIncrement;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.metrics2.util.MBeans;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.thrift.TException;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.yetus.audience.InterfaceAudience;<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">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>/**<a name="line.45"></a>
+<span class="sourceLineNo">046</span> * This class will coalesce increments from a thift server if<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * hbase.regionserver.thrift.coalesceIncrement is set to true. Turning this<a name="line.47"></a>
+<span class="sourceLineNo">048</span> * config to true will cause the thrift server to queue increments into an<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * instance of this class. The thread pool associated with this class will drain<a name="line.49"></a>
+<span class="sourceLineNo">050</span> * the coalesced increments as the thread is able. This can cause data loss if the<a name="line.50"></a>
+<span class="sourceLineNo">051</span> * thrift server dies or is shut down before everything in the queue is drained.<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>@InterfaceAudience.Private<a name="line.54"></a>
+<span class="sourceLineNo">055</span>public class IncrementCoalescer implements IncrementCoalescerMBean {<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>   * Used to identify a cell that will be incremented.<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>  static class FullyQualifiedRow {<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    private byte[] table;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    private byte[] rowKey;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    private byte[] family;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    private byte[] qualifier;<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>    public FullyQualifiedRow(byte[] table, byte[] rowKey, byte[] fam, byte[] qual) {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      super();<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      this.table = table;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      this.rowKey = rowKey;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>      this.family = fam;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      this.qualifier = qual;<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>    public byte[] getTable() {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      return table;<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>    public void setTable(byte[] table) {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      this.table = table;<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 byte[] getRowKey() {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      return rowKey;<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 setRowKey(byte[] rowKey) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      this.rowKey = rowKey;<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 byte[] getFamily() {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      return family;<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 setFamily(byte[] fam) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      this.family = fam;<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>    public byte[] getQualifier() {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      return qualifier;<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>    public void setQualifier(byte[] qual) {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      this.qualifier = qual;<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 int hashCode() {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      final int prime = 31;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      int result = 1;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      result = prime * result + Arrays.hashCode(family);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      result = prime * result + Arrays.hashCode(qualifier);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      result = prime * result + Arrays.hashCode(rowKey);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      result = prime * result + Arrays.hashCode(table);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      return result;<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>    @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) {<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>    @Override<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public Thread newThread(Runnable r) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      Thread t = new Thread(group, r, namePrefix + threadNumber.getAndIncrement(), 0);<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>      if (!t.isDaemon()) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        t.setDaemon(true);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      }<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      if (t.getPriority() != Thread.NORM_PRIORITY) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        t.setPriority(Thread.NORM_PRIORITY);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>      return t;<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>  private final LongAdder failedIncrements = new LongAdder();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  private final LongAdder successfulCoalescings = new LongAdder();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  private final LongAdder totalIncrements = new LongAdder();<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  private final ConcurrentMap&lt;FullyQualifiedRow, Long&gt; countersMap =<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      new ConcurrentHashMap&lt;&gt;(100000, 0.75f, 1500);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  private final ThreadPoolExecutor pool;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  private final ThriftHBaseServiceHandler handler;<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>  private int maxQueueSize = 500000;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>  private static final int CORE_POOL_SIZE = 1;<a name="line.185"></a>
+<span class="sourceLineNo">186</span><a name="line.186"></a>
+<span class="sourceLineNo">187</span>  private static final Logger LOG = LoggerFactory.getLogger(FullyQualifiedRow.class);<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>  @SuppressWarnings("deprecation")<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  public IncrementCoalescer(ThriftHBaseServiceHandler hand) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    this.handler = hand;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    LinkedBlockingQueue&lt;Runnable&gt; queue = new LinkedBlockingQueue&lt;&gt;();<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    pool =<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        new ThreadPoolExecutor(CORE_POOL_SIZE, CORE_POOL_SIZE, 50, TimeUnit.MILLISECONDS, queue,<a name="line.194"></a>
+<span class="sourceLineNo">195</span>            Threads.newDaemonThreadFactory("IncrementCoalescer"));<a name="line.195"></a>
+<span class="sourceLineNo">196</span><a name="line.196"></a>
+<span class="sourceLineNo">197</span>    MBeans.register("thrift", "Thrift", this);<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>  public boolean queueIncrement(TIncrement inc) throws TException {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (!canQueue()) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      failedIncrements.increment();<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      return false;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    return internalQueueTincrement(inc);<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>  public boolean queueIncrements(List&lt;TIncrement&gt; incs) throws TException {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    if (!canQueue()) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      failedIncrements.increment();<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      return false;<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>    for (TIncrement tinc : incs) {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      internalQueueTincrement(tinc);<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>    return true;<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>  private boolean internalQueueTincrement(TIncrement inc) throws TException {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    byte[][] famAndQf = CellUtil.parseColumn(inc.getColumn());<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>    if (famAndQf.length != 2) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      return false;<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>    return internalQueueIncrement(inc.getTable(), inc.getRow(), famAndQf[0], famAndQf[1],<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      inc.getAmmount());<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>  @SuppressWarnings("FutureReturnValueIgnored")<a name="line.232"></a>
 <span class="sourceLineNo">233</span>  private boolean internalQueueIncrement(byte[] tableName, byte[] rowKey, byte[] fam,<a name="line.233"></a>
 <span class="sourceLineNo">234</span>      byte[] qual, long ammount) throws TException {<a name="line.234"></a>
 <span class="sourceLineNo">235</span>    int countersMapSize = countersMap.size();<a name="line.235"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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 d7e790d..1648cbc 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html
@@ -41,203 +41,203 @@
 <span class="sourceLineNo">033</span>import java.util.concurrent.atomic.LongAdder;<a name="line.33"></a>
 <span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.34"></a>
 <span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.Table;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.thrift.generated.TIncrement;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.metrics2.util.MBeans;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.thrift.TException;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.slf4j.Logger;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.slf4j.LoggerFactory;<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> * This class will coalesce increments from a thift server if<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * hbase.regionserver.thrift.coalesceIncrement is set to true. Turning this<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * config to true will cause the thrift server to queue increments into an<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * instance of this class. The thread pool associated with this class will drain<a name="line.50"></a>
-<span class="sourceLineNo">051</span> * the coalesced increments as the thread is able. This can cause data loss if the<a name="line.51"></a>
-<span class="sourceLineNo">052</span> * thrift server dies or is shut down before everything in the queue is drained.<a name="line.52"></a>
-<span class="sourceLineNo">053</span> *<a name="line.53"></a>
-<span class="sourceLineNo">054</span> */<a name="line.54"></a>
-<span class="sourceLineNo">055</span>@InterfaceAudience.Private<a name="line.55"></a>
-<span class="sourceLineNo">056</span>public class IncrementCoalescer implements IncrementCoalescerMBean {<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>  /**<a name="line.58"></a>
-<span class="sourceLineNo">059</span>   * Used to identify a cell that will be incremented.<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>  static class FullyQualifiedRow {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    private byte[] table;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    private byte[] rowKey;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    private byte[] family;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    private byte[] qualifier;<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>    public FullyQualifiedRow(byte[] table, byte[] rowKey, byte[] fam, byte[] qual) {<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      super();<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      this.table = table;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      this.rowKey = rowKey;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      this.family = fam;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      this.qualifier = qual;<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">076</span>    public byte[] getTable() {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      return table;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>    public void setTable(byte[] table) {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      this.table = table;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public byte[] getRowKey() {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      return rowKey;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>    public void setRowKey(byte[] rowKey) {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      this.rowKey = rowKey;<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>    public byte[] getFamily() {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      return family;<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 void setFamily(byte[] fam) {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      this.family = fam;<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>    public byte[] getQualifier() {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      return qualifier;<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 setQualifier(byte[] qual) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      this.qualifier = qual;<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 int hashCode() {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      final int prime = 31;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      int result = 1;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      result = prime * result + Arrays.hashCode(family);<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      result = prime * result + Arrays.hashCode(qualifier);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      result = prime * result + Arrays.hashCode(rowKey);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      result = prime * result + Arrays.hashCode(table);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      return result;<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>    @Override<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    public boolean equals(Object obj) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      if (this == obj) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>        return true;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      if (obj == null) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        return false;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      if (getClass() != obj.getClass()) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        return false;<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>      FullyQualifiedRow other = (FullyQualifiedRow) obj;<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>      if (!Arrays.equals(family, other.family)) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        return false;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      }<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      if (!Arrays.equals(qualifier, other.qualifier)) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>        return false;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      if (!Arrays.equals(rowKey, other.rowKey)) {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>        return false;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      }<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      if (!Arrays.equals(table, other.table)) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        return false;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      }<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      return true;<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>  static class DaemonThreadFactory implements ThreadFactory {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    static final AtomicInteger poolNumber = new AtomicInteger(1);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    final ThreadGroup group;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    final AtomicInteger threadNumber = new AtomicInteger(1);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    final String namePrefix;<a name="line.154"></a>
-<span class="sourceLineNo">155</span><a name="line.155"></a>
-<span class="sourceLineNo">156</span>    DaemonThreadFactory() {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      SecurityManager s = System.getSecurityManager();<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      group = (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup();<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      namePrefix = "ICV-" + poolNumber.getAndIncrement() + "-thread-";<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 Thread newThread(Runnable r) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      Thread t = new Thread(group, r, namePrefix + threadNumber.getAndIncrement(), 0);<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>      if (!t.isDaemon()) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        t.setDaemon(true);<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      if (t.getPriority() != Thread.NORM_PRIORITY) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        t.setPriority(Thread.NORM_PRIORITY);<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>      return t;<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>  private final LongAdder failedIncrements = new LongAdder();<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  private final LongAdder successfulCoalescings = new LongAdder();<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  private final LongAdder totalIncrements = new LongAdder();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  private final ConcurrentMap&lt;FullyQualifiedRow, Long&gt; countersMap =<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      new ConcurrentHashMap&lt;&gt;(100000, 0.75f, 1500);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  private final ThreadPoolExecutor pool;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  private final HBaseHandler handler;<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  private int maxQueueSize = 500000;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  private static final int CORE_POOL_SIZE = 1;<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>  private static final Logger LOG = LoggerFactory.getLogger(FullyQualifiedRow.class);<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>  @SuppressWarnings("deprecation")<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  public IncrementCoalescer(HBaseHandler hand) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    this.handler = hand;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    LinkedBlockingQueue&lt;Runnable&gt; queue = new LinkedBlockingQueue&lt;&gt;();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    pool =<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        new ThreadPoolExecutor(CORE_POOL_SIZE, CORE_POOL_SIZE, 50, TimeUnit.MILLISECONDS, queue,<a name="line.195"></a>
-<span class="sourceLineNo">196</span>            Threads.newDaemonThreadFactory("IncrementCoalescer"));<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>    MBeans.register("thrift", "Thrift", this);<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>  public boolean queueIncrement(TIncrement inc) throws TException {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    if (!canQueue()) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      failedIncrements.increment();<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      return false;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    return internalQueueTincrement(inc);<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>  public boolean queueIncrements(List&lt;TIncrement&gt; incs) throws TException {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    if (!canQueue()) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      failedIncrements.increment();<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      return false;<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>    for (TIncrement tinc : incs) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      internalQueueTincrement(tinc);<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>    return true;<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>  private boolean internalQueueTincrement(TIncrement inc) throws TException {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    byte[][] famAndQf = CellUtil.parseColumn(inc.getColumn());<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>    if (famAndQf.length != 2) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      return false;<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 internalQueueIncrement(inc.getTable(), inc.getRow(), famAndQf[0], famAndQf[1],<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      inc.getAmmount());<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">036</span>import org.apache.hadoop.hbase.thrift.generated.TIncrement;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.metrics2.util.MBeans;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.thrift.TException;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.yetus.audience.InterfaceAudience;<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">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>/**<a name="line.45"></a>
+<span class="sourceLineNo">046</span> * This class will coalesce increments from a thift server if<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * hbase.regionserver.thrift.coalesceIncrement is set to true. Turning this<a name="line.47"></a>
+<span class="sourceLineNo">048</span> * config to true will cause the thrift server to queue increments into an<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * instance of this class. The thread pool associated with this class will drain<a name="line.49"></a>
+<span class="sourceLineNo">050</span> * the coalesced increments as the thread is able. This can cause data loss if the<a name="line.50"></a>
+<span class="sourceLineNo">051</span> * thrift server dies or is shut down before everything in the queue is drained.<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>@InterfaceAudience.Private<a name="line.54"></a>
+<span class="sourceLineNo">055</span>public class IncrementCoalescer implements IncrementCoalescerMBean {<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>   * Used to identify a cell that will be incremented.<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>  static class FullyQualifiedRow {<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    private byte[] table;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    private byte[] rowKey;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    private byte[] family;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    private byte[] qualifier;<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>    public FullyQualifiedRow(byte[] table, byte[] rowKey, byte[] fam, byte[] qual) {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      super();<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      this.table = table;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      this.rowKey = rowKey;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>      this.family = fam;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      this.qualifier = qual;<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>    public byte[] getTable() {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      return table;<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>    public void setTable(byte[] table) {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      this.table = table;<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 byte[] getRowKey() {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      return rowKey;<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 setRowKey(byte[] rowKey) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      this.rowKey = rowKey;<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 byte[] getFamily() {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      return family;<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 setFamily(byte[] fam) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      this.family = fam;<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>    public byte[] getQualifier() {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      return qualifier;<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>    public void setQualifier(byte[] qual) {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      this.qualifier = qual;<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 int hashCode() {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      final int prime = 31;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      int result = 1;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      result = prime * result + Arrays.hashCode(family);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      result = prime * result + Arrays.hashCode(qualifier);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      result = prime * result + Arrays.hashCode(rowKey);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      result = prime * result + Arrays.hashCode(table);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      return result;<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>    @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) {<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>    @Override<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public Thread newThread(Runnable r) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      Thread t = new Thread(group, r, namePrefix + threadNumber.getAndIncrement(), 0);<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>      if (!t.isDaemon()) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        t.setDaemon(true);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      }<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      if (t.getPriority() != Thread.NORM_PRIORITY) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        t.setPriority(Thread.NORM_PRIORITY);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>      return t;<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>  private final LongAdder failedIncrements = new LongAdder();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  private final LongAdder successfulCoalescings = new LongAdder();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  private final LongAdder totalIncrements = new LongAdder();<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  private final ConcurrentMap&lt;FullyQualifiedRow, Long&gt; countersMap =<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      new ConcurrentHashMap&lt;&gt;(100000, 0.75f, 1500);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  private final ThreadPoolExecutor pool;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  private final ThriftHBaseServiceHandler handler;<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>  private int maxQueueSize = 500000;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>  private static final int CORE_POOL_SIZE = 1;<a name="line.185"></a>
+<span class="sourceLineNo">186</span><a name="line.186"></a>
+<span class="sourceLineNo">187</span>  private static final Logger LOG = LoggerFactory.getLogger(FullyQualifiedRow.class);<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>  @SuppressWarnings("deprecation")<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  public IncrementCoalescer(ThriftHBaseServiceHandler hand) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    this.handler = hand;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    LinkedBlockingQueue&lt;Runnable&gt; queue = new LinkedBlockingQueue&lt;&gt;();<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    pool =<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        new ThreadPoolExecutor(CORE_POOL_SIZE, CORE_POOL_SIZE, 50, TimeUnit.MILLISECONDS, queue,<a name="line.194"></a>
+<span class="sourceLineNo">195</span>            Threads.newDaemonThreadFactory("IncrementCoalescer"));<a name="line.195"></a>
+<span class="sourceLineNo">196</span><a name="line.196"></a>
+<span class="sourceLineNo">197</span>    MBeans.register("thrift", "Thrift", this);<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>  public boolean queueIncrement(TIncrement inc) throws TException {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (!canQueue()) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      failedIncrements.increment();<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      return false;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    return internalQueueTincrement(inc);<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>  public boolean queueIncrements(List&lt;TIncrement&gt; incs) throws TException {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    if (!canQueue()) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      failedIncrements.increment();<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      return false;<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>    for (TIncrement tinc : incs) {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      internalQueueTincrement(tinc);<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>    return true;<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>  private boolean internalQueueTincrement(TIncrement inc) throws TException {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    byte[][] famAndQf = CellUtil.parseColumn(inc.getColumn());<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>    if (famAndQf.length != 2) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      return false;<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>    return internalQueueIncrement(inc.getTable(), inc.getRow(), famAndQf[0], famAndQf[1],<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      inc.getAmmount());<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>  @SuppressWarnings("FutureReturnValueIgnored")<a name="line.232"></a>
 <span class="sourceLineNo">233</span>  private boolean internalQueueIncrement(byte[] tableName, byte[] rowKey, byte[] fam,<a name="line.233"></a>
 <span class="sourceLineNo">234</span>      byte[] qual, long ammount) throws TException {<a name="line.234"></a>
 <span class="sourceLineNo">235</span>    int countersMapSize = countersMap.size();<a name="line.235"></a>


[43/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/Constants.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/Constants.html b/devapidocs/org/apache/hadoop/hbase/thrift/Constants.html
new file mode 100644
index 0000000..2b9a917
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/Constants.html
@@ -0,0 +1,1334 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Constants (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Constants (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/Constants.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/CallQueue.Call.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/DemoClient.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/Constants.html" target="_top">Frames</a></li>
+<li><a href="Constants.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#methods.inherited.from.class.java.lang.Object">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li>Method</li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.thrift</div>
+<h2 title="Class Constants" class="title">Class Constants</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.thrift.Constants</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>@InterfaceAudience.Private
+public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/Constants.html#line.26">Constants</a>
+extends <a href="https://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">Thrift related constants</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/Constants.html#BACKLOG_CONF_DEAFULT">BACKLOG_CONF_DEAFULT</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#BACKLOG_CONF_KEY">BACKLOG_CONF_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#BIND_CONF_KEY">BIND_CONF_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#BIND_OPTION">BIND_OPTION</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#COALESCE_INC_KEY">COALESCE_INC_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/Constants.html#COMPACT_CONF_DEFAULT">COMPACT_CONF_DEFAULT</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#COMPACT_CONF_KEY">COMPACT_CONF_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#COMPACT_OPTION">COMPACT_OPTION</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#DEFAULT_BIND_ADDR">DEFAULT_BIND_ADDR</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/Constants.html#DEFAULT_HTTP_MAX_HEADER_SIZE">DEFAULT_HTTP_MAX_HEADER_SIZE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/Constants.html#DEFAULT_LISTEN_PORT">DEFAULT_LISTEN_PORT</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/Constants.html#FRAMED_CONF_DEFAULT">FRAMED_CONF_DEFAULT</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#FRAMED_CONF_KEY">FRAMED_CONF_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#FRAMED_OPTION">FRAMED_OPTION</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#HTTP_MAX_THREADS_KEY">HTTP_MAX_THREADS_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/Constants.html#HTTP_MAX_THREADS_KEY_DEFAULT">HTTP_MAX_THREADS_KEY_DEFAULT</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#HTTP_MIN_THREADS_KEY">HTTP_MIN_THREADS_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/Constants.html#HTTP_MIN_THREADS_KEY_DEFAULT">HTTP_MIN_THREADS_KEY_DEFAULT</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#INFOPORT_OPTION">INFOPORT_OPTION</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#KEEP_ALIVE_SEC_OPTION">KEEP_ALIVE_SEC_OPTION</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/Constants.html#MAX_FRAME_SIZE_CONF_DEFAULT">MAX_FRAME_SIZE_CONF_DEFAULT</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#MAX_FRAME_SIZE_CONF_KEY">MAX_FRAME_SIZE_CONF_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#MAX_QUEUE_SIZE_OPTION">MAX_QUEUE_SIZE_OPTION</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#MAX_WORKERS_OPTION">MAX_WORKERS_OPTION</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#MIN_WORKERS_OPTION">MIN_WORKERS_OPTION</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#PORT_CONF_KEY">PORT_CONF_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#PORT_OPTION">PORT_OPTION</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#READ_TIMEOUT_OPTION">READ_TIMEOUT_OPTION</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#READONLY_OPTION">READONLY_OPTION</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#SELECTOR_NUM_OPTION">SELECTOR_NUM_OPTION</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#SERVER_TYPE_CONF_KEY">SERVER_TYPE_CONF_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_DNS_INTERFACE_KEY">THRIFT_DNS_INTERFACE_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_DNS_NAMESERVER_KEY">THRIFT_DNS_NAMESERVER_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_FILTERS">THRIFT_FILTERS</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_HTTP_ALLOW_OPTIONS_METHOD">THRIFT_HTTP_ALLOW_OPTIONS_METHOD</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/Constants.html#THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT">THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_INFO_SERVER_BINDING_ADDRESS">THRIFT_INFO_SERVER_BINDING_ADDRESS</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_INFO_SERVER_BINDING_ADDRESS_DEFAULT">THRIFT_INFO_SERVER_BINDING_ADDRESS_DEFAULT</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_INFO_SERVER_PORT">THRIFT_INFO_SERVER_PORT</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/Constants.html#THRIFT_INFO_SERVER_PORT_DEFAULT">THRIFT_INFO_SERVER_PORT_DEFAULT</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_KERBEROS_PRINCIPAL_KEY">THRIFT_KERBEROS_PRINCIPAL_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_KEYTAB_FILE_KEY">THRIFT_KEYTAB_FILE_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_QOP_KEY">THRIFT_QOP_KEY</a></span></code>
+<div class="block">Thrift quality of protection configuration key.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_QUEUE_SIZE">THRIFT_QUEUE_SIZE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/Constants.html#THRIFT_QUEUE_SIZE_DEFAULT">THRIFT_QUEUE_SIZE_DEFAULT</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_READONLY_ENABLED">THRIFT_READONLY_ENABLED</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/Constants.html#THRIFT_READONLY_ENABLED_DEFAULT">THRIFT_READONLY_ENABLED_DEFAULT</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_SELECTOR_NUM">THRIFT_SELECTOR_NUM</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/Constants.html#THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT">THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY">THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY</a></span></code>
+<div class="block">Amount of time in milliseconds before a server thread will timeout
+ waiting for client to send data on a connected socket.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_SPNEGO_KEYTAB_FILE_KEY">THRIFT_SPNEGO_KEYTAB_FILE_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_SPNEGO_PRINCIPAL_KEY">THRIFT_SPNEGO_PRINCIPAL_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_SSL_ENABLED_KEY">THRIFT_SSL_ENABLED_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY">THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY">THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY">THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_SSL_INCLUDE_PROTOCOLS_KEY">THRIFT_SSL_INCLUDE_PROTOCOLS_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY">THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_SSL_KEYSTORE_PASSWORD_KEY">THRIFT_SSL_KEYSTORE_PASSWORD_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_SSL_KEYSTORE_STORE_KEY">THRIFT_SSL_KEYSTORE_STORE_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#THRIFT_SUPPORT_PROXYUSER_KEY">THRIFT_SUPPORT_PROXYUSER_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/thrift/Constants.html#USE_HTTP_CONF_KEY">USE_HTTP_CONF_KEY</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<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="colFirst" scope="col">Modifier</th>
+<th class="colLast" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/Constants.html#Constants--">Constants</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="DEFAULT_HTTP_MAX_HEADER_SIZE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DEFAULT_HTTP_MAX_HEADER_SIZE</h4>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/Constants.html#line.29">DEFAULT_HTTP_MAX_HEADER_SIZE</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.DEFAULT_HTTP_MAX_HEADER_SIZE">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="SERVER_TYPE_CONF_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>SERVER_TYPE_CONF_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.31">SERVER_TYPE_CONF_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.SERVER_TYPE_CONF_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="COMPACT_CONF_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>COMPACT_CONF_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.34">COMPACT_CONF_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.COMPACT_CONF_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="COMPACT_CONF_DEFAULT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>COMPACT_CONF_DEFAULT</h4>
+<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/Constants.html#line.35">COMPACT_CONF_DEFAULT</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.COMPACT_CONF_DEFAULT">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="FRAMED_CONF_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>FRAMED_CONF_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.37">FRAMED_CONF_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.FRAMED_CONF_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="FRAMED_CONF_DEFAULT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>FRAMED_CONF_DEFAULT</h4>
+<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/Constants.html#line.38">FRAMED_CONF_DEFAULT</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.FRAMED_CONF_DEFAULT">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="MAX_FRAME_SIZE_CONF_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>MAX_FRAME_SIZE_CONF_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.40">MAX_FRAME_SIZE_CONF_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.MAX_FRAME_SIZE_CONF_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="MAX_FRAME_SIZE_CONF_DEFAULT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>MAX_FRAME_SIZE_CONF_DEFAULT</h4>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/Constants.html#line.42">MAX_FRAME_SIZE_CONF_DEFAULT</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.MAX_FRAME_SIZE_CONF_DEFAULT">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="COALESCE_INC_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>COALESCE_INC_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.44">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.Constants.COALESCE_INC_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="USE_HTTP_CONF_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>USE_HTTP_CONF_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.45">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.Constants.USE_HTTP_CONF_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="HTTP_MIN_THREADS_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>HTTP_MIN_THREADS_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.47">HTTP_MIN_THREADS_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.HTTP_MIN_THREADS_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="HTTP_MIN_THREADS_KEY_DEFAULT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>HTTP_MIN_THREADS_KEY_DEFAULT</h4>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/Constants.html#line.48">HTTP_MIN_THREADS_KEY_DEFAULT</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.HTTP_MIN_THREADS_KEY_DEFAULT">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="HTTP_MAX_THREADS_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>HTTP_MAX_THREADS_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.50">HTTP_MAX_THREADS_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.HTTP_MAX_THREADS_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="HTTP_MAX_THREADS_KEY_DEFAULT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>HTTP_MAX_THREADS_KEY_DEFAULT</h4>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/Constants.html#line.51">HTTP_MAX_THREADS_KEY_DEFAULT</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.HTTP_MAX_THREADS_KEY_DEFAULT">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_SSL_ENABLED_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_SSL_ENABLED_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.54">THRIFT_SSL_ENABLED_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_ENABLED_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_SSL_KEYSTORE_STORE_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_SSL_KEYSTORE_STORE_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.55">THRIFT_SSL_KEYSTORE_STORE_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_KEYSTORE_STORE_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_SSL_KEYSTORE_PASSWORD_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_SSL_KEYSTORE_PASSWORD_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.56">THRIFT_SSL_KEYSTORE_PASSWORD_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_KEYSTORE_PASSWORD_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.58">THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.60">THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.62">THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.64">THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_SSL_INCLUDE_PROTOCOLS_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_SSL_INCLUDE_PROTOCOLS_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.66">THRIFT_SSL_INCLUDE_PROTOCOLS_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_SSL_INCLUDE_PROTOCOLS_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_SUPPORT_PROXYUSER_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_SUPPORT_PROXYUSER_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.70">THRIFT_SUPPORT_PROXYUSER_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_SUPPORT_PROXYUSER_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_DNS_INTERFACE_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_DNS_INTERFACE_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.73">THRIFT_DNS_INTERFACE_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_DNS_INTERFACE_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_DNS_NAMESERVER_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_DNS_NAMESERVER_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.74">THRIFT_DNS_NAMESERVER_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_DNS_NAMESERVER_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_KERBEROS_PRINCIPAL_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_KERBEROS_PRINCIPAL_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.75">THRIFT_KERBEROS_PRINCIPAL_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_KERBEROS_PRINCIPAL_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_KEYTAB_FILE_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_KEYTAB_FILE_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.76">THRIFT_KEYTAB_FILE_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_KEYTAB_FILE_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_SPNEGO_PRINCIPAL_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_SPNEGO_PRINCIPAL_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.77">THRIFT_SPNEGO_PRINCIPAL_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_SPNEGO_PRINCIPAL_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_SPNEGO_KEYTAB_FILE_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_SPNEGO_KEYTAB_FILE_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.78">THRIFT_SPNEGO_KEYTAB_FILE_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_SPNEGO_KEYTAB_FILE_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.85">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>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT">
+<!--   -->
+</a>
+<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/Constants.html#line.87">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.Constants.THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_QOP_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_QOP_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.99">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
+ auth: authentication only
+
+ This is used to authenticate the callers and support impersonation.
+ The thrift server and the HBase cluster must run in secure mode.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_QOP_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="BACKLOG_CONF_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>BACKLOG_CONF_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.101">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.Constants.BACKLOG_CONF_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="BACKLOG_CONF_DEAFULT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>BACKLOG_CONF_DEAFULT</h4>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/Constants.html#line.102">BACKLOG_CONF_DEAFULT</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.BACKLOG_CONF_DEAFULT">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="BIND_CONF_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>BIND_CONF_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.104">BIND_CONF_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.BIND_CONF_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="DEFAULT_BIND_ADDR">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DEFAULT_BIND_ADDR</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.105">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.Constants.DEFAULT_BIND_ADDR">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="PORT_CONF_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>PORT_CONF_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.107">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.Constants.PORT_CONF_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="DEFAULT_LISTEN_PORT">
+<!--   -->
+</a>
+<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/Constants.html#line.108">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.Constants.DEFAULT_LISTEN_PORT">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_HTTP_ALLOW_OPTIONS_METHOD">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_HTTP_ALLOW_OPTIONS_METHOD</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.110">THRIFT_HTTP_ALLOW_OPTIONS_METHOD</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_HTTP_ALLOW_OPTIONS_METHOD">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT</h4>
+<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/Constants.html#line.112">THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_INFO_SERVER_PORT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_INFO_SERVER_PORT</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.114">THRIFT_INFO_SERVER_PORT</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_INFO_SERVER_PORT">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_INFO_SERVER_PORT_DEFAULT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_INFO_SERVER_PORT_DEFAULT</h4>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/Constants.html#line.115">THRIFT_INFO_SERVER_PORT_DEFAULT</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_INFO_SERVER_PORT_DEFAULT">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_INFO_SERVER_BINDING_ADDRESS">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_INFO_SERVER_BINDING_ADDRESS</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.117">THRIFT_INFO_SERVER_BINDING_ADDRESS</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_INFO_SERVER_BINDING_ADDRESS">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_INFO_SERVER_BINDING_ADDRESS_DEFAULT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_INFO_SERVER_BINDING_ADDRESS_DEFAULT</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.118">THRIFT_INFO_SERVER_BINDING_ADDRESS_DEFAULT</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_INFO_SERVER_BINDING_ADDRESS_DEFAULT">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_QUEUE_SIZE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_QUEUE_SIZE</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.120">THRIFT_QUEUE_SIZE</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_QUEUE_SIZE">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_QUEUE_SIZE_DEFAULT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_QUEUE_SIZE_DEFAULT</h4>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/Constants.html#line.121">THRIFT_QUEUE_SIZE_DEFAULT</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_QUEUE_SIZE_DEFAULT">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_SELECTOR_NUM">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_SELECTOR_NUM</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.123">THRIFT_SELECTOR_NUM</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_SELECTOR_NUM">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_FILTERS">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_FILTERS</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.125">THRIFT_FILTERS</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_FILTERS">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="READ_TIMEOUT_OPTION">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>READ_TIMEOUT_OPTION</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.129">READ_TIMEOUT_OPTION</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.READ_TIMEOUT_OPTION">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="MIN_WORKERS_OPTION">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>MIN_WORKERS_OPTION</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.130">MIN_WORKERS_OPTION</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.MIN_WORKERS_OPTION">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="MAX_WORKERS_OPTION">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>MAX_WORKERS_OPTION</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.131">MAX_WORKERS_OPTION</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.MAX_WORKERS_OPTION">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="MAX_QUEUE_SIZE_OPTION">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>MAX_QUEUE_SIZE_OPTION</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.132">MAX_QUEUE_SIZE_OPTION</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.MAX_QUEUE_SIZE_OPTION">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="SELECTOR_NUM_OPTION">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>SELECTOR_NUM_OPTION</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.133">SELECTOR_NUM_OPTION</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.SELECTOR_NUM_OPTION">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="KEEP_ALIVE_SEC_OPTION">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>KEEP_ALIVE_SEC_OPTION</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.134">KEEP_ALIVE_SEC_OPTION</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.KEEP_ALIVE_SEC_OPTION">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="BIND_OPTION">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>BIND_OPTION</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.135">BIND_OPTION</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.BIND_OPTION">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="COMPACT_OPTION">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>COMPACT_OPTION</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.136">COMPACT_OPTION</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.COMPACT_OPTION">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="FRAMED_OPTION">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>FRAMED_OPTION</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.137">FRAMED_OPTION</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.FRAMED_OPTION">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="PORT_OPTION">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>PORT_OPTION</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.138">PORT_OPTION</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.PORT_OPTION">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="INFOPORT_OPTION">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>INFOPORT_OPTION</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.139">INFOPORT_OPTION</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.INFOPORT_OPTION">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="READONLY_OPTION">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>READONLY_OPTION</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.142">READONLY_OPTION</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.READONLY_OPTION">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_READONLY_ENABLED">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THRIFT_READONLY_ENABLED</h4>
+<pre>public static final&nbsp;<a href="https://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/Constants.html#line.144">THRIFT_READONLY_ENABLED</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_READONLY_ENABLED">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="THRIFT_READONLY_ENABLED_DEFAULT">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>THRIFT_READONLY_ENABLED_DEFAULT</h4>
+<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/Constants.html#line.145">THRIFT_READONLY_ENABLED_DEFAULT</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.thrift.Constants.THRIFT_READONLY_ENABLED_DEFAULT">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="Constants--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>Constants</h4>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/Constants.html#line.27">Constants</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/Constants.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/CallQueue.Call.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/DemoClient.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/thrift/Constants.html" target="_top">Frames</a></li>
+<li><a href="Constants.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#methods.inherited.from.class.java.lang.Object">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li>Method</li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/org/apache/hadoop/hbase/thrift/DemoClient.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/DemoClient.html b/devapidocs/org/apache/hadoop/hbase/thrift/DemoClient.html
index 70cf15f..1d77e53 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/DemoClient.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/DemoClient.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/CallQueue.Call.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -450,7 +450,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/thrift/CallQueue.Call.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift/Constants.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">


[24/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html
index c4e8c8b..aa58108 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html
@@ -82,602 +82,613 @@
 <span class="sourceLineNo">074</span>  public static final String USER_COPROCESSORS_ENABLED_CONF_KEY =<a name="line.74"></a>
 <span class="sourceLineNo">075</span>    "hbase.coprocessor.user.enabled";<a name="line.75"></a>
 <span class="sourceLineNo">076</span>  public static final boolean DEFAULT_USER_COPROCESSORS_ENABLED = true;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  private static final Logger LOG = LoggerFactory.getLogger(CoprocessorHost.class);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  protected Abortable abortable;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  /** Ordered set of loaded coprocessors with lock */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  protected final SortedList&lt;E&gt; coprocEnvironments =<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      new SortedList&lt;&gt;(new EnvironmentPriorityComparator());<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  protected Configuration conf;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  // unique file prefix to use for local copies of jars when classloading<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  protected String pathPrefix;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  protected AtomicInteger loadSequence = new AtomicInteger();<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>  public CoprocessorHost(Abortable abortable) {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    this.abortable = abortable;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    this.pathPrefix = UUID.randomUUID().toString();<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>   * Not to be confused with the per-object _coprocessors_ (above),<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   * coprocessorNames is static and stores the set of all coprocessors ever<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * loaded by any thread in this JVM. It is strictly additive: coprocessors are<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * added to coprocessorNames, by checkAndLoadInstance() but are never removed, since<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   * the intention is to preserve a history of all loaded coprocessors for<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * diagnosis in case of server crash (HBASE-4014).<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  private static Set&lt;String&gt; coprocessorNames =<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      Collections.synchronizedSet(new HashSet&lt;String&gt;());<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  public static Set&lt;String&gt; getLoadedCoprocessors() {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    synchronized (coprocessorNames) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      return new HashSet(coprocessorNames);<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>  /**<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * Used to create a parameter to the HServerLoad constructor so that<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * HServerLoad can provide information about the coprocessors loaded by this<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * regionserver.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * (HBASE-4070: Improve region server metrics to report loaded coprocessors<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * to master).<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   */<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  public Set&lt;String&gt; getCoprocessors() {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    Set&lt;String&gt; returnValue = new TreeSet&lt;&gt;();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    for (E e: coprocEnvironments) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      returnValue.add(e.getInstance().getClass().getSimpleName());<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    return returnValue;<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>   * Load system coprocessors once only. Read the class names from configuration.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * Called by constructor.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   */<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  protected void loadSystemCoprocessors(Configuration conf, String confKey) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    if (!coprocessorsEnabled) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      return;<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>    Class&lt;?&gt; implClass;<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>    // load default coprocessors from configure file<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    String[] defaultCPClasses = conf.getStrings(confKey);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    if (defaultCPClasses == null || defaultCPClasses.length == 0)<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      return;<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    int priority = Coprocessor.PRIORITY_SYSTEM;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    for (String className : defaultCPClasses) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      className = className.trim();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      if (findCoprocessor(className) != null) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        // If already loaded will just continue<a name="line.147"></a>
-<span class="sourceLineNo">148</span>        LOG.warn("Attempted duplicate loading of " + className + "; skipped");<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        continue;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      }<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      ClassLoader cl = this.getClass().getClassLoader();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      Thread.currentThread().setContextClassLoader(cl);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      try {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>        implClass = cl.loadClass(className);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        // Add coprocessors as we go to guard against case where a coprocessor is specified twice<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        // in the configuration<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        if (env != null) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>          this.coprocEnvironments.add(env);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          LOG.info("System coprocessor {} loaded, priority={}.", className, priority);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>          ++priority;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        }<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      } catch (Throwable t) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        // We always abort if system coprocessors cannot be loaded<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        abortServer(className, t);<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><a name="line.169"></a>
-<span class="sourceLineNo">170</span>  /**<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * Load a coprocessor implementation into the host<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * @param path path to implementation jar<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * @param className the main class name<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * @param priority chaining priority<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * @param conf configuration for coprocessor<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   * @throws java.io.IOException Exception<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  public E load(Path path, String className, int priority,<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      Configuration conf) throws IOException {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    String[] includedClassPrefixes = null;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    if (conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY) != null){<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      String prefixes = conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      includedClassPrefixes = prefixes.split(";");<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    }<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    return load(path, className, priority, conf, includedClassPrefixes);<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>   * Load a coprocessor implementation into the host<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * @param path path to implementation jar<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param className the main class name<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * @param priority chaining priority<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * @param conf configuration for coprocessor<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * @param includedClassPrefixes class name prefixes to include<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * @throws java.io.IOException Exception<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  public E load(Path path, String className, int priority,<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      Configuration conf, String[] includedClassPrefixes) throws IOException {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    Class&lt;?&gt; implClass;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    LOG.debug("Loading coprocessor class " + className + " with path " +<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        path + " and priority " + priority);<a name="line.201"></a>
-<span class="sourceLineNo">202</span><a name="line.202"></a>
-<span class="sourceLineNo">203</span>    ClassLoader cl = null;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    if (path == null) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      try {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>        implClass = getClass().getClassLoader().loadClass(className);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      } catch (ClassNotFoundException e) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>        throw new IOException("No jar path specified for " + className);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      }<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    } else {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      cl = CoprocessorClassLoader.getClassLoader(<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        path, getClass().getClassLoader(), pathPrefix, conf);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      try {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        implClass = ((CoprocessorClassLoader)cl).loadClass(className, includedClassPrefixes);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      } catch (ClassNotFoundException e) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>        throw new IOException("Cannot load external coprocessor class " + className, e);<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><a name="line.219"></a>
-<span class="sourceLineNo">220</span>    //load custom code for coprocessor<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    Thread currentThread = Thread.currentThread();<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    try{<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      // switch temporarily to the thread classloader for custom CP<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      currentThread.setContextClassLoader(cl);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      E cpInstance = checkAndLoadInstance(implClass, priority, conf);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return cpInstance;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    } finally {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      // restore the fresh (host) classloader<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      currentThread.setContextClassLoader(hostClassLoader);<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>  @VisibleForTesting<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public void load(Class&lt;? extends C&gt; implClass, int priority, Configuration conf)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      throws IOException {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    coprocEnvironments.add(env);<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>   * @param implClass Implementation class<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * @param priority priority<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   * @param conf configuration<a name="line.244"></a>
-<span class="sourceLineNo">245</span>   * @throws java.io.IOException Exception<a name="line.245"></a>
-<span class="sourceLineNo">246</span>   */<a name="line.246"></a>
-<span class="sourceLineNo">247</span>  public E checkAndLoadInstance(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      throws IOException {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    // create the instance<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    C impl;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    try {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      impl = checkAndGetInstance(implClass);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      if (impl == null) {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        LOG.error("Cannot load coprocessor " + implClass.getSimpleName());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        return null;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      }<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    } catch (InstantiationException|IllegalAccessException e) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      throw new IOException(e);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    // create the environment<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    E env = createEnvironment(impl, priority, loadSequence.incrementAndGet(), conf);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    assert env instanceof BaseEnvironment;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    ((BaseEnvironment&lt;C&gt;) env).startup();<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    // HBASE-4014: maintain list of loaded coprocessors for later crash analysis<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    // if server (master or regionserver) aborts.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    coprocessorNames.add(implClass.getName());<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    return env;<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>  /**<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * Called when a new Coprocessor class is loaded<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   */<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  public abstract E createEnvironment(C instance, int priority, int sequence, Configuration conf);<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>   * Called when a new Coprocessor class needs to be loaded. Checks if type of the given class<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   * is what the corresponding host implementation expects. If it is of correct type, returns an<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   * instance of the coprocessor to be loaded. If not, returns null.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   * If an exception occurs when trying to create instance of a coprocessor, it's passed up and<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * eventually results into server aborting.<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   */<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  public abstract C checkAndGetInstance(Class&lt;?&gt; implClass)<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      throws InstantiationException, IllegalAccessException;<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>  public void shutdown(E e) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    assert e instanceof BaseEnvironment;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    if (LOG.isDebugEnabled()) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      LOG.debug("Stop coprocessor " + e.getInstance().getClass().getName());<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    }<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    ((BaseEnvironment&lt;C&gt;) e).shutdown();<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>   * Find coprocessors by full class name or simple name.<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   */<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  public C findCoprocessor(String className) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    for (E env: coprocEnvironments) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        return env.getInstance();<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>    return null;<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>  @VisibleForTesting<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  public &lt;T extends C&gt; T findCoprocessor(Class&lt;T&gt; cls) {<a name="line.307"></a>
+<span class="sourceLineNo">077</span>  public static final String SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR =<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      "hbase.skip.load.duplicate.table.coprocessor";<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  public static final boolean DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR = false;<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private static final Logger LOG = LoggerFactory.getLogger(CoprocessorHost.class);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  protected Abortable abortable;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  /** Ordered set of loaded coprocessors with lock */<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  protected final SortedList&lt;E&gt; coprocEnvironments =<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      new SortedList&lt;&gt;(new EnvironmentPriorityComparator());<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  protected Configuration conf;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  // unique file prefix to use for local copies of jars when classloading<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  protected String pathPrefix;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  protected AtomicInteger loadSequence = new AtomicInteger();<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public CoprocessorHost(Abortable abortable) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    this.abortable = abortable;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    this.pathPrefix = UUID.randomUUID().toString();<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>   * Not to be confused with the per-object _coprocessors_ (above),<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   * coprocessorNames is static and stores the set of all coprocessors ever<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   * loaded by any thread in this JVM. It is strictly additive: coprocessors are<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * added to coprocessorNames, by checkAndLoadInstance() but are never removed, since<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * the intention is to preserve a history of all loaded coprocessors for<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * diagnosis in case of server crash (HBASE-4014).<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   */<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  private static Set&lt;String&gt; coprocessorNames =<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      Collections.synchronizedSet(new HashSet&lt;String&gt;());<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  public static Set&lt;String&gt; getLoadedCoprocessors() {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    synchronized (coprocessorNames) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      return new HashSet(coprocessorNames);<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>  /**<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * Used to create a parameter to the HServerLoad constructor so that<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   * HServerLoad can provide information about the coprocessors loaded by this<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   * regionserver.<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   * (HBASE-4070: Improve region server metrics to report loaded coprocessors<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   * to master).<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   */<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  public Set&lt;String&gt; getCoprocessors() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    Set&lt;String&gt; returnValue = new TreeSet&lt;&gt;();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    for (E e: coprocEnvironments) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      returnValue.add(e.getInstance().getClass().getSimpleName());<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    return returnValue;<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>   * Load system coprocessors once only. Read the class names from configuration.<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * Called by constructor.<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  protected void loadSystemCoprocessors(Configuration conf, String confKey) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    if (!coprocessorsEnabled) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      return;<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>    Class&lt;?&gt; implClass;<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>    // load default coprocessors from configure file<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    String[] defaultCPClasses = conf.getStrings(confKey);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    if (defaultCPClasses == null || defaultCPClasses.length == 0)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      return;<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    int priority = Coprocessor.PRIORITY_SYSTEM;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    for (String className : defaultCPClasses) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      className = className.trim();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      if (findCoprocessor(className) != null) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        // If already loaded will just continue<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        LOG.warn("Attempted duplicate loading of " + className + "; skipped");<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        continue;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      }<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      ClassLoader cl = this.getClass().getClassLoader();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      Thread.currentThread().setContextClassLoader(cl);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      try {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>        implClass = cl.loadClass(className);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        // Add coprocessors as we go to guard against case where a coprocessor is specified twice<a name="line.158"></a>
+<span class="sourceLineNo">159</span>        // in the configuration<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        if (env != null) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>          this.coprocEnvironments.add(env);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>          LOG.info("System coprocessor {} loaded, priority={}.", className, priority);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>          ++priority;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      } catch (Throwable t) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        // We always abort if system coprocessors cannot be loaded<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        abortServer(className, t);<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>  }<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>   * Load a coprocessor implementation into the host<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * @param path path to implementation jar<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * @param className the main class name<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   * @param priority chaining priority<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   * @param conf configuration for coprocessor<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   * @throws java.io.IOException Exception<a name="line.179"></a>
+<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  public E load(Path path, String className, int priority,<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      Configuration conf) throws IOException {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    String[] includedClassPrefixes = null;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    if (conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY) != null){<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      String prefixes = conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      includedClassPrefixes = prefixes.split(";");<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return load(path, className, priority, conf, includedClassPrefixes);<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>  /**<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * Load a coprocessor implementation into the host<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * @param path path to implementation jar<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * @param className the main class name<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * @param priority chaining priority<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * @param conf configuration for coprocessor<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * @param includedClassPrefixes class name prefixes to include<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * @throws java.io.IOException Exception<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   */<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  public E load(Path path, String className, int priority,<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      Configuration conf, String[] includedClassPrefixes) throws IOException {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    Class&lt;?&gt; implClass;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    LOG.debug("Loading coprocessor class " + className + " with path " +<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        path + " and priority " + priority);<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>    boolean skipLoadDuplicateCoprocessor = conf.getBoolean(SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR,<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      DEFAULT_SKIP_LOAD_DUPLICATE_TABLE_COPROCESSOR);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    if (skipLoadDuplicateCoprocessor &amp;&amp; findCoprocessor(className) != null) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      // If already loaded will just continue<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      LOG.warn("Attempted duplicate loading of {}; skipped", className);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      return null;<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>    ClassLoader cl = null;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    if (path == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      try {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        implClass = getClass().getClassLoader().loadClass(className);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      } catch (ClassNotFoundException e) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        throw new IOException("No jar path specified for " + className);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      }<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    } else {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      cl = CoprocessorClassLoader.getClassLoader(<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        path, getClass().getClassLoader(), pathPrefix, conf);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      try {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        implClass = ((CoprocessorClassLoader)cl).loadClass(className, includedClassPrefixes);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      } catch (ClassNotFoundException e) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        throw new IOException("Cannot load external coprocessor class " + className, e);<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>    //load custom code for coprocessor<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    Thread currentThread = Thread.currentThread();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    try{<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      // switch temporarily to the thread classloader for custom CP<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      currentThread.setContextClassLoader(cl);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      E cpInstance = checkAndLoadInstance(implClass, priority, conf);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      return cpInstance;<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    } finally {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      // restore the fresh (host) classloader<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      currentThread.setContextClassLoader(hostClassLoader);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    }<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>  @VisibleForTesting<a name="line.245"></a>
+<span class="sourceLineNo">246</span>  public void load(Class&lt;? extends C&gt; implClass, int priority, Configuration conf)<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      throws IOException {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    E env = checkAndLoadInstance(implClass, priority, conf);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    coprocEnvironments.add(env);<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>  /**<a name="line.252"></a>
+<span class="sourceLineNo">253</span>   * @param implClass Implementation class<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * @param priority priority<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * @param conf configuration<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   * @throws java.io.IOException Exception<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   */<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  public E checkAndLoadInstance(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      throws IOException {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    // create the instance<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    C impl;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    try {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      impl = checkAndGetInstance(implClass);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      if (impl == null) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        LOG.error("Cannot load coprocessor " + implClass.getSimpleName());<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        return null;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    } catch (InstantiationException|IllegalAccessException e) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      throw new IOException(e);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    }<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    // create the environment<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    E env = createEnvironment(impl, priority, loadSequence.incrementAndGet(), conf);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    assert env instanceof BaseEnvironment;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    ((BaseEnvironment&lt;C&gt;) env).startup();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    // HBASE-4014: maintain list of loaded coprocessors for later crash analysis<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // if server (master or regionserver) aborts.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    coprocessorNames.add(implClass.getName());<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    return env;<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>   * Called when a new Coprocessor class is loaded<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   */<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  public abstract E createEnvironment(C instance, int priority, int sequence, Configuration conf);<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>   * Called when a new Coprocessor class needs to be loaded. Checks if type of the given class<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * is what the corresponding host implementation expects. If it is of correct type, returns an<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * instance of the coprocessor to be loaded. If not, returns null.<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * If an exception occurs when trying to create instance of a coprocessor, it's passed up and<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * eventually results into server aborting.<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   */<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  public abstract C checkAndGetInstance(Class&lt;?&gt; implClass)<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      throws InstantiationException, IllegalAccessException;<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  public void shutdown(E e) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    assert e instanceof BaseEnvironment;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    if (LOG.isDebugEnabled()) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      LOG.debug("Stop coprocessor " + e.getInstance().getClass().getName());<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    }<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    ((BaseEnvironment&lt;C&gt;) e).shutdown();<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>  /**<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * Find coprocessors by full class name or simple name.<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   */<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  public C findCoprocessor(String className) {<a name="line.307"></a>
 <span class="sourceLineNo">308</span>    for (E env: coprocEnvironments) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      if (cls.isAssignableFrom(env.getInstance().getClass())) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        return (T) env.getInstance();<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>    return null;<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>   * Find list of coprocessors that extend/implement the given class/interface<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @param cls the class/interface to look for<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * @return the list of coprocessors, or null if not found<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public &lt;T extends C&gt; List&lt;T&gt; findCoprocessors(Class&lt;T&gt; cls) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    ArrayList&lt;T&gt; ret = new ArrayList&lt;&gt;();<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    for (E env: coprocEnvironments) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      C cp = env.getInstance();<a name="line.325"></a>
+<span class="sourceLineNo">309</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.309"></a>
+<span class="sourceLineNo">310</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        return env.getInstance();<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>    return null;<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>  @VisibleForTesting<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public &lt;T extends C&gt; T findCoprocessor(Class&lt;T&gt; cls) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    for (E env: coprocEnvironments) {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      if (cls.isAssignableFrom(env.getInstance().getClass())) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        return (T) env.getInstance();<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>    return null;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
 <span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>      if(cp != null) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        if (cls.isAssignableFrom(cp.getClass())) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          ret.add((T)cp);<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>    }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    return ret;<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>  /**<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * Find a coprocessor environment by class name<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   * @param className the class name<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   * @return the coprocessor, or null if not found<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   */<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  @VisibleForTesting<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public E findCoprocessorEnvironment(String className) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    for (E env: coprocEnvironments) {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.344"></a>
-<span class="sourceLineNo">345</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        return env;<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>    return null;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  }<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>   * Retrieves the set of classloaders used to instantiate Coprocessor classes defined in external<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * jar files.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * @return A set of ClassLoader instances<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  Set&lt;ClassLoader&gt; getExternalClassLoaders() {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    Set&lt;ClassLoader&gt; externalClassLoaders = new HashSet&lt;&gt;();<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    final ClassLoader systemClassLoader = this.getClass().getClassLoader();<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    for (E env : coprocEnvironments) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      ClassLoader cl = env.getInstance().getClass().getClassLoader();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      if (cl != systemClassLoader){<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        //do not include system classloader<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        externalClassLoaders.add(cl);<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>    return externalClassLoaders;<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>   * Environment priority comparator.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * Coprocessors are chained in sorted order.<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   */<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  static class EnvironmentPriorityComparator implements Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    @Override<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        final CoprocessorEnvironment env2) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>        return -1;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>        return 1;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      }<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        return -1;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        return 1;<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      return 0;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    }<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>  protected void abortServer(final E environment, final Throwable e) {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    abortServer(environment.getInstance().getClass().getName(), e);<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>  protected void abortServer(final String coprocessorName, final Throwable e) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    String message = "The coprocessor " + coprocessorName + " threw " + e.toString();<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    LOG.error(message, e);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    if (abortable != null) {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      abortable.abort(message, e);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    } else {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      LOG.warn("No available Abortable, process was not aborted");<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>  /**<a name="line.406"></a>
-<span class="sourceLineNo">407</span>   * This is used by coprocessor hooks which are declared to throw IOException<a name="line.407"></a>
-<span class="sourceLineNo">408</span>   * (or its subtypes). For such hooks, we should handle throwable objects<a name="line.408"></a>
-<span class="sourceLineNo">409</span>   * depending on the Throwable's type. Those which are instances of<a name="line.409"></a>
-<span class="sourceLineNo">410</span>   * IOException should be passed on to the client. This is in conformance with<a name="line.410"></a>
-<span class="sourceLineNo">411</span>   * the HBase idiom regarding IOException: that it represents a circumstance<a name="line.411"></a>
-<span class="sourceLineNo">412</span>   * that should be passed along to the client for its own handling. For<a name="line.412"></a>
-<span class="sourceLineNo">413</span>   * example, a coprocessor that implements access controls would throw a<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * subclass of IOException, such as AccessDeniedException, in its preGet()<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * method to prevent an unauthorized client's performing a Get on a particular<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * table.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param env Coprocessor Environment<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param e Throwable object thrown by coprocessor.<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * @exception IOException Exception<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   */<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  // Note to devs: Class comments of all observers ({@link MasterObserver}, {@link WALObserver},<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  // etc) mention this nuance of our exception handling so that coprocessor can throw appropriate<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  // exceptions depending on situation. If any changes are made to this logic, make sure to<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  // update all classes' comments.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  protected void handleCoprocessorThrowable(final E env, final Throwable e) throws IOException {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    if (e instanceof IOException) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      throw (IOException)e;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    // If we got here, e is not an IOException. A loaded coprocessor has a<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    // fatal bug, and the server (master or regionserver) should remove the<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    // faulty coprocessor from its set of active coprocessors. Setting<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    // 'hbase.coprocessor.abortonerror' to true will cause abortServer(),<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    // which may be useful in development and testing environments where<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    // 'failing fast' for error analysis is desired.<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if (env.getConfiguration().getBoolean(ABORT_ON_ERROR_KEY, DEFAULT_ABORT_ON_ERROR)) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      // server is configured to abort.<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      abortServer(env, e);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    } else {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      // If available, pull a table name out of the environment<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      if(env instanceof RegionCoprocessorEnvironment) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        String tableName = ((RegionCoprocessorEnvironment)env).getRegionInfo().getTable().getNameAsString();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from table '"+ tableName + "'", e);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      } else {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from " +<a name="line.444"></a>
-<span class="sourceLineNo">445</span>                "environment",e);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>      coprocEnvironments.remove(env);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      try {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>        shutdown(env);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      } catch (Exception x) {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>        LOG.error("Uncaught exception when shutting down coprocessor '"<a name="line.452"></a>
-<span class="sourceLineNo">453</span>            + env.toString() + "'", x);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      throw new DoNotRetryIOException("Coprocessor: '" + env.toString() +<a name="line.455"></a>
-<span class="sourceLineNo">456</span>          "' threw: '" + e + "' and has been removed from the active " +<a name="line.456"></a>
-<span class="sourceLineNo">457</span>          "coprocessor set.", e);<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><a name="line.460"></a>
-<span class="sourceLineNo">461</span>  /**<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * Used to limit legacy handling to once per Coprocessor class per classloader.<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   */<a name="line.463"></a>
-<span class="sourceLineNo">464</span>  private static final Set&lt;Class&lt;? extends Coprocessor&gt;&gt; legacyWarning =<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      new ConcurrentSkipListSet&lt;&gt;(<a name="line.465"></a>
-<span class="sourceLineNo">466</span>          new Comparator&lt;Class&lt;? extends Coprocessor&gt;&gt;() {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>            @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>            public int compare(Class&lt;? extends Coprocessor&gt; c1, Class&lt;? extends Coprocessor&gt; c2) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>              if (c1.equals(c2)) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>                return 0;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>              }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>              return c1.getName().compareTo(c2.getName());<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><a name="line.475"></a>
-<span class="sourceLineNo">476</span>  /**<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * Implementations defined function to get an observer of type {@code O} from a coprocessor of<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * type {@code C}. Concrete implementations of CoprocessorHost define one getter for each<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * observer they can handle. For e.g. RegionCoprocessorHost will use 3 getters, one for<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * each of RegionObserver, EndpointObserver and BulkLoadObserver.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * These getters are used by {@code ObserverOperation} to get appropriate observer from the<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * coprocessor.<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   */<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  @FunctionalInterface<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  public interface ObserverGetter&lt;C, O&gt; extends Function&lt;C, Optional&lt;O&gt;&gt; {}<a name="line.485"></a>
+<span class="sourceLineNo">327</span>  /**<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * Find list of coprocessors that extend/implement the given class/interface<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @param cls the class/interface to look for<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   * @return the list of coprocessors, or null if not found<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public &lt;T extends C&gt; List&lt;T&gt; findCoprocessors(Class&lt;T&gt; cls) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    ArrayList&lt;T&gt; ret = new ArrayList&lt;&gt;();<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>    for (E env: coprocEnvironments) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      C cp = env.getInstance();<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>      if(cp != null) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>        if (cls.isAssignableFrom(cp.getClass())) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>          ret.add((T)cp);<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>    return ret;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  }<a name="line.345"></a>
+<span class="sourceLineNo">346</span><a name="line.346"></a>
+<span class="sourceLineNo">347</span>  /**<a name="line.347"></a>
+<span class="sourceLineNo">348</span>   * Find a coprocessor environment by class name<a name="line.348"></a>
+<span class="sourceLineNo">349</span>   * @param className the class name<a name="line.349"></a>
+<span class="sourceLineNo">350</span>   * @return the coprocessor, or null if not found<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   */<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  @VisibleForTesting<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  public E findCoprocessorEnvironment(String className) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    for (E env: coprocEnvironments) {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        return env;<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>    return null;<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>  /**<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   * Retrieves the set of classloaders used to instantiate Coprocessor classes defined in external<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   * jar files.<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   * @return A set of ClassLoader instances<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  Set&lt;ClassLoader&gt; getExternalClassLoaders() {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    Set&lt;ClassLoader&gt; externalClassLoaders = new HashSet&lt;&gt;();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    final ClassLoader systemClassLoader = this.getClass().getClassLoader();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    for (E env : coprocEnvironments) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      ClassLoader cl = env.getInstance().getClass().getClassLoader();<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      if (cl != systemClassLoader){<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        //do not include system classloader<a name="line.374"></a>
+<span class="sourceLineNo">375</span>        externalClassLoaders.add(cl);<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>    return externalClassLoaders;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  }<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>   * Environment priority comparator.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   * Coprocessors are chained in sorted order.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>   */<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  static class EnvironmentPriorityComparator implements Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    @Override<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        final CoprocessorEnvironment env2) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        return -1;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<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>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        return -1;<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        return 1;<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      }<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      return 0;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  protected void abortServer(final E environment, final Throwable e) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    abortServer(environment.getInstance().getClass().getName(), 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>  protected void abortServer(final String coprocessorName, final Throwable e) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    String message = "The coprocessor " + coprocessorName + " threw " + e.toString();<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    LOG.error(message, e);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    if (abortable != null) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      abortable.abort(message, e);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    } else {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      LOG.warn("No available Abortable, process was not aborted");<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>  /**<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   * This is used by coprocessor hooks which are declared to throw IOException<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * (or its subtypes). For such hooks, we should handle throwable objects<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   * depending on the Throwable's type. Those which are instances of<a name="line.420"></a>
+<span class="sourceLineNo">421</span>   * IOException should be passed on to the client. This is in conformance with<a name="line.421"></a>
+<span class="sourceLineNo">422</span>   * the HBase idiom regarding IOException: that it represents a circumstance<a name="line.422"></a>
+<span class="sourceLineNo">423</span>   * that should be passed along to the client for its own handling. For<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   * example, a coprocessor that implements access controls would throw a<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   * subclass of IOException, such as AccessDeniedException, in its preGet()<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * method to prevent an unauthorized client's performing a Get on a particular<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * table.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * @param env Coprocessor Environment<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * @param e Throwable object thrown by coprocessor.<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * @exception IOException Exception<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   */<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  // Note to devs: Class comments of all observers ({@link MasterObserver}, {@link WALObserver},<a name="line.432"></a>
+<span class="sourceLineNo">433</span>  // etc) mention this nuance of our exception handling so that coprocessor can throw appropriate<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  // exceptions depending on situation. If any changes are made to this logic, make sure to<a name="line.434"></a>
+<span class="sourceLineNo">435</span>  // update all classes' comments.<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  protected void handleCoprocessorThrowable(final E env, final Throwable e) throws IOException {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    if (e instanceof IOException) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      throw (IOException)e;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    // If we got here, e is not an IOException. A loaded coprocessor has a<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    // fatal bug, and the server (master or regionserver) should remove the<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    // faulty coprocessor from its set of active coprocessors. Setting<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    // 'hbase.coprocessor.abortonerror' to true will cause abortServer(),<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    // which may be useful in development and testing environments where<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    // 'failing fast' for error analysis is desired.<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    if (env.getConfiguration().getBoolean(ABORT_ON_ERROR_KEY, DEFAULT_ABORT_ON_ERROR)) {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      // server is configured to abort.<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      abortServer(env, e);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } else {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      // If available, pull a table name out of the environment<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      if(env instanceof RegionCoprocessorEnvironment) {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>        String tableName = ((RegionCoprocessorEnvironment)env).getRegionInfo().getTable().getNameAsString();<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from table '"+ tableName + "'", e);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      } else {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        LOG.error("Removing coprocessor '" + env.toString() + "' from " +<a name="line.455"></a>
+<span class="sourceLineNo">456</span>                "environment",e);<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>      coprocEnvironments.remove(env);<a name="line.459"></a>
+<span class="sourceLineNo">460</span>      try {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>        shutdown(env);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      } catch (Exception x) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        LOG.error("Uncaught exception when shutting down coprocessor '"<a name="line.463"></a>
+<span class="sourceLineNo">464</span>            + env.toString() + "'", x);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      throw new DoNotRetryIOException("Coprocessor: '" + env.toString() +<a name="line.466"></a>
+<span class="sourceLineNo">467</span>          "' threw: '" + e + "' and has been removed from the active " +<a name="line.467"></a>
+<span class="sourceLineNo">468</span>          "coprocessor set.", e);<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><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * Used to limit legacy handling to once per Coprocessor class per classloader.<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   */<a name="line.474"></a>
+<span class="sourceLineNo">475</span>  private static final Set&lt;Class&lt;? extends Coprocessor&gt;&gt; legacyWarning =<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      new ConcurrentSkipListSet&lt;&gt;(<a name="line.476"></a>
+<span class="sourceLineNo">477</span>          new Comparator&lt;Class&lt;? extends Coprocessor&gt;&gt;() {<a name="line.477"></a>
+<span class="sourceLineNo">478</span>            @Override<a name="line.478"></a>
+<span class="sourceLineNo">479</span>            public int compare(Class&lt;? extends Coprocessor&gt; c1, Class&lt;? extends Coprocessor&gt; c2) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>              if (c1.equals(c2)) {<a name="line.480"></a>
+<span class="sourceLineNo">481</span>                return 0;<a name="line.481"></a>
+<span class="sourceLineNo">482</span>              }<a name="line.482"></a>
+<span class="sourceLineNo">483</span>              return c1.getName().compareTo(c2.getName());<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>  private abstract class ObserverOperation&lt;O&gt; extends ObserverContextImpl&lt;E&gt; {<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    ObserverGetter&lt;C, O&gt; observerGetter;<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      this(observerGetter, null);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter, User user) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      this(observerGetter, user, false);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
+<span class="sourceLineNo">487</span>  /**<a name="line.487"></a>
+<span class="sourceLineNo">488</span>   * Implementations defined function to get an observer of type {@code O} from a coprocessor of<a name="line.488"></a>
+<span class="sourceLineNo">489</span>   * type {@code C}. Concrete implementations of CoprocessorHost define one getter for each<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   * observer they can handle. For e.g. RegionCoprocessorHost will use 3 getters, one for<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   * each of RegionObserver, EndpointObserver and BulkLoadObserver.<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   * These getters are used by {@code ObserverOperation} to get appropriate observer from the<a name="line.492"></a>
+<span class="sourceLineNo">493</span>   * coprocessor.<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   */<a name="line.494"></a>
+<span class="sourceLineNo">495</span>  @FunctionalInterface<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  public interface ObserverGetter&lt;C, O&gt; extends Function&lt;C, Optional&lt;O&gt;&gt; {}<a name="line.496"></a>
 <span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter, boolean bypassable) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      this(observerGetter, null, bypassable);<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>    ObserverOperation(ObserverGetter&lt;C, O&gt; observerGetter, User user, boolean bypassable) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      super(user != null? user: RpcServer.getRequestUser().orElse(null), bypassable);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      this.observerGetter = observerGetter;<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>    abstract void callObserver() throws IOException;<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    protected void postEnvCall() {}<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  // Can't derive ObserverOperation from ObserverOperationWithResult (R = Void) because then all<a name="line.511"></a>
-<span class="sourceLineNo">512</span>  // ObserverCaller implementations will have to have a return statement.<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  // O = observer, E = environment, C = coprocessor, R=result type<a name="line.513"></a>
-<span class="sourceLineNo">514</span>  public abstract class ObserverOperationWithoutResult&lt;O&gt; extends ObserverOperation&lt;O&gt; {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    protected abstract void call(O observer) throws IOException;<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>    public ObserverOperationWithoutResult(ObserverGetter&lt;C, O&gt; observerGetter) {<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      super(observerGetter);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    }<a name="line.519"></a>
-<span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span>    public ObserverOperationWithoutResult(ObserverGetter&lt;C, O&gt; observerGetter, User user) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      super(observerGetter, user);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>    public ObserverOperationWithoutResult(ObserverGetter&lt;C, O&gt; observerGetter, User user,<a name="line.525"></a>
-<span class="sourceLineNo">526</span>        boolean bypassable) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      super(observerGetter, user, bypassable);<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>    /**<a name="line.530"></a>
-<span class="sourceLineNo">531</span>     * In case of coprocessors which have many kinds of observers (for eg, {@link RegionCoprocessor}<a name="line.531"></a>
-<span class="sourceLineNo">532</span>     * has BulkLoadObserver, RegionObserver, etc), some implementations may not need all<a name="line.532"></a>
-<span class="sourceLineNo">533</span>     * observers, in which case they will return null for that observer's getter.<a name="line.533"></a>
-<span class="sourceLineNo">534</span>     * We simply ignore such cases.<a name="line.534"></a>
-<span class="sourceLineNo">535</span>     */<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    @Override<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    void callObserver() throws IOException {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      Optional&lt;O&gt; observer = observerGetter.apply(getEnvironment().getInstance());<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      if (observer.isPresent()) {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        call(observer.get());<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      }<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    }<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>  public abstract class ObserverOperationWithResult&lt;O, R&gt; extends ObserverOperation&lt;O&gt; {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    protected abstract R call(O observer) throws IOException;<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>    private R result;<a name="line.548"></a>
-<span class="sourceLineNo">549</span><a name="line.549"></a>
-<span class="

<TRUNCATED>

[16/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/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
deleted file mode 100644
index e692633..0000000
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html
+++ /dev/null
@@ -1,2103 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
-<title>Source code</title>
-<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
-</head>
-<body>
-<div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
-<span class="sourceLineNo">009</span> *<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *<a name="line.11"></a>
-<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
-<span class="sourceLineNo">017</span> */<a name="line.17"></a>
-<span class="sourceLineNo">018</span><a name="line.18"></a>
-<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.thrift;<a name="line.19"></a>
-<span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.util.Bytes.getBytes;<a name="line.21"></a>
-<span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.io.IOException;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.net.InetAddress;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.net.InetSocketAddress;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.net.UnknownHostException;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.nio.ByteBuffer;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.security.PrivilegedAction;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.ArrayList;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.Arrays;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.Collections;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.HashMap;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.List;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.Map;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.TreeMap;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.concurrent.BlockingQueue;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.concurrent.ExecutorService;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.concurrent.TimeUnit;<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>import javax.security.auth.callback.Callback;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import javax.security.sasl.AuthorizeCallback;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import javax.security.sasl.SaslServer;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.commons.lang3.ArrayUtils;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.conf.Configuration;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.Cell.Type;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CellBuilder;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.CellBuilderFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.HConstants;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.ServerName;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.TableName;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.client.Append;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.client.Get;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.client.OperationWithAttributes;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.client.Put;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Result;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.client.Table;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.filter.ParseFilter;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.filter.PrefixFilter;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.filter.WhileMatchFilter;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.http.HttpServerUtil;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.security.SaslUtil;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.security.SaslUtil.QualityOfProtection;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.security.SecurityUtil;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.thrift.generated.AlreadyExists;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.thrift.generated.BatchMutation;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.thrift.generated.ColumnDescriptor;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.thrift.generated.Hbase;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.thrift.generated.IOError;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.thrift.generated.IllegalArgument;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.thrift.generated.Mutation;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.thrift.generated.TAppend;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.thrift.generated.TCell;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.thrift.generated.TIncrement;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.thrift.generated.TRegionInfo;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.thrift.generated.TRowResult;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.thrift.generated.TScan;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.util.ConnectionCache;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.util.DNS;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.util.JvmPauseMonitor;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.util.Strings;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.security.SaslRpcServer.SaslGssCallbackHandler;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.security.authorize.ProxyUsers;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.thrift.TException;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.thrift.TProcessor;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.thrift.protocol.TBinaryProtocol;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.thrift.protocol.TCompactProtocol;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.thrift.protocol.TProtocolFactory;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.thrift.server.THsHaServer;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.thrift.server.TNonblockingServer;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.thrift.server.TServer;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.thrift.server.TServlet;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.thrift.server.TThreadedSelectorServer;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.thrift.transport.TFramedTransport;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.thrift.transport.TNonblockingServerSocket;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.thrift.transport.TNonblockingServerTransport;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.thrift.transport.TSaslServerTransport;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.thrift.transport.TServerSocket;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.thrift.transport.TServerTransport;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.thrift.transport.TTransportFactory;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.eclipse.jetty.http.HttpVersion;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.eclipse.jetty.server.HttpConfiguration;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.eclipse.jetty.server.HttpConnectionFactory;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.eclipse.jetty.server.SecureRequestCustomizer;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.eclipse.jetty.server.Server;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.eclipse.jetty.server.SslConnectionFactory;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.eclipse.jetty.servlet.ServletContextHandler;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.eclipse.jetty.util.ssl.SslContextFactory;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.eclipse.jetty.util.thread.QueuedThreadPool;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.slf4j.Logger;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.slf4j.LoggerFactory;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hbase.thirdparty.com.google.common.base.Joiner;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hbase.thirdparty.com.google.common.base.Splitter;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hbase.thirdparty.com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Option;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.OptionGroup;<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> * ThriftServerRunner - this class starts up a Thrift server which implements<a name="line.149"></a>
-<span class="sourceLineNo">150</span> * the Hbase API specified in the Hbase.thrift IDL file.<a name="line.150"></a>
-<span class="sourceLineNo">151</span> */<a name="line.151"></a>
-<span class="sourceLineNo">152</span>@InterfaceAudience.Private<a name="line.152"></a>
-<span class="sourceLineNo">153</span>public class ThriftServerRunner implements Runnable {<a name="line.153"></a>
-<span class="sourceLineNo">154</span><a name="line.154"></a>
-<span class="sourceLineNo">155</span>  private static final Logger LOG = LoggerFactory.getLogger(ThriftServerRunner.class);<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  private static final int DEFAULT_HTTP_MAX_HEADER_SIZE = 64 * 1024; // 64k<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  static final String SERVER_TYPE_CONF_KEY =<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      "hbase.regionserver.thrift.server.type";<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>  static final String BIND_CONF_KEY = "hbase.regionserver.thrift.ipaddress";<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  static final String COMPACT_CONF_KEY = "hbase.regionserver.thrift.compact";<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  static final String FRAMED_CONF_KEY = "hbase.regionserver.thrift.framed";<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  static final String MAX_FRAME_SIZE_CONF_KEY =<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          "hbase.regionserver.thrift.framed.max_frame_size_in_mb";<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  static final String PORT_CONF_KEY = "hbase.regionserver.thrift.port";<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  static final String COALESCE_INC_KEY = "hbase.regionserver.thrift.coalesceIncrement";<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  static final String USE_HTTP_CONF_KEY = "hbase.regionserver.thrift.http";<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  static final String HTTP_MIN_THREADS_KEY = "hbase.thrift.http_threads.min";<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  static final String HTTP_MAX_THREADS_KEY = "hbase.thrift.http_threads.max";<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  static final String THRIFT_SSL_ENABLED_KEY = "hbase.thrift.ssl.enabled";<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  static final String THRIFT_SSL_KEYSTORE_STORE_KEY = "hbase.thrift.ssl.keystore.store";<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  static final String THRIFT_SSL_KEYSTORE_PASSWORD_KEY = "hbase.thrift.ssl.keystore.password";<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  static final String THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY = "hbase.thrift.ssl.keystore.keypassword";<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  static final String THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY =<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      "hbase.thrift.ssl.exclude.cipher.suites";<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  static final String THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY =<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      "hbase.thrift.ssl.include.cipher.suites";<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  static final String THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY = "hbase.thrift.ssl.exclude.protocols";<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  static final String THRIFT_SSL_INCLUDE_PROTOCOLS_KEY = "hbase.thrift.ssl.include.protocols";<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  static final String THRIFT_SUPPORT_PROXYUSER_KEY = "hbase.thrift.support.proxyuser";<a name="line.184"></a>
-<span class="sourceLineNo">185</span><a name="line.185"></a>
-<span class="sourceLineNo">186</span>  static final String THRIFT_DNS_INTERFACE_KEY = "hbase.thrift.dns.interface";<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  static final String THRIFT_DNS_NAMESERVER_KEY = "hbase.thrift.dns.nameserver";<a name="line.187"></a>
-<span class="sourceLineNo">188</span>  static final String THRIFT_KERBEROS_PRINCIPAL_KEY = "hbase.thrift.kerberos.principal";<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  static final String THRIFT_KEYTAB_FILE_KEY = "hbase.thrift.keytab.file";<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  static final String THRIFT_SPNEGO_PRINCIPAL_KEY = "hbase.thrift.spnego.principal";<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  static final String THRIFT_SPNEGO_KEYTAB_FILE_KEY = "hbase.thrift.spnego.keytab.file";<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>   * Amount of time in milliseconds before a server thread will timeout<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * waiting for client to send data on a connected socket. Currently,<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * applies only to TBoundedThreadPoolServer<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   */<a name="line.197"></a>
-<span class="sourceLineNo">198</span>  public static final String THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY =<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    "hbase.thrift.server.socket.read.timeout";<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  public static final int THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT = 60000;<a name="line.200"></a>
-<span class="sourceLineNo">201</span><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>   * Thrift quality of protection configuration key. Valid values can be:<a name="line.204"></a>
-<span class="sourceLineNo">205</span>   * auth-conf: authentication, integrity and confidentiality checking<a name="line.205"></a>
-<span class="sourceLineNo">206</span>   * auth-int: authentication and integrity checking<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   * auth: authentication only<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   *<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   * This is used to authenticate the callers and support impersonation.<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   * The thrift server and the HBase cluster must run in secure mode.<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   */<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  static final String THRIFT_QOP_KEY = "hbase.thrift.security.qop";<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  static final String BACKLOG_CONF_KEY = "hbase.regionserver.thrift.backlog";<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>  private static final String DEFAULT_BIND_ADDR = "0.0.0.0";<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  public static final int DEFAULT_LISTEN_PORT = 9090;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  public static final int HREGION_VERSION = 1;<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>  private final int listenPort;<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>  private Configuration conf;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  volatile TServer tserver;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  volatile Server httpServer;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>  private final Hbase.Iface handler;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  private final ThriftMetrics metrics;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  private final HBaseHandler hbaseHandler;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private final UserGroupInformation serviceUGI;<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private SaslUtil.QualityOfProtection qop;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  private String host;<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>  private final boolean securityEnabled;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  private final boolean doAsEnabled;<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>  private final JvmPauseMonitor pauseMonitor;<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>  static String THRIFT_HTTP_ALLOW_OPTIONS_METHOD = "hbase.thrift.http.allow.options.method";<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  private static boolean THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT = false;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  /** An enum of server implementation selections */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  public enum ImplType {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    HS_HA("hsha", true, THsHaServer.class, true),<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    NONBLOCKING("nonblocking", true, TNonblockingServer.class, true),<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    THREAD_POOL("threadpool", false, TBoundedThreadPoolServer.class, true),<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    THREADED_SELECTOR("threadedselector", true, TThreadedSelectorServer.class, true);<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>    public static final ImplType DEFAULT = THREAD_POOL;<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>    final String option;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    final boolean isAlwaysFramed;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    final Class&lt;? extends TServer&gt; serverClass;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    final boolean canSpecifyBindIP;<a name="line.252"></a>
-<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>    private ImplType(String option, boolean isAlwaysFramed,<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        Class&lt;? extends TServer&gt; serverClass, boolean canSpecifyBindIP) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      this.option = option;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      this.isAlwaysFramed = isAlwaysFramed;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      this.serverClass = serverClass;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      this.canSpecifyBindIP = canSpecifyBindIP;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>    /**<a name="line.262"></a>
-<span class="sourceLineNo">263</span>     * @return &lt;code&gt;-option&lt;/code&gt;<a name="line.263"></a>
-<span class="sourceLineNo">264</span>     */<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    @Override<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    public String toString() {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      return "-" + option;<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>    public String getOption() {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      return option;<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>    public boolean isAlwaysFramed() {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      return isAlwaysFramed;<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>    public String getDescription() {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      StringBuilder sb = new StringBuilder("Use the " +<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          serverClass.getSimpleName());<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      if (isAlwaysFramed) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        sb.append(" This implies the framed transport.");<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      }<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      if (this == DEFAULT) {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        sb.append("This is the default.");<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      return sb.toString();<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    static OptionGroup createOptionGroup() {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      OptionGroup group = new OptionGroup();<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      for (ImplType t : values()) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        group.addOption(new Option(t.option, t.getDescription()));<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      }<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      return group;<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>    public static ImplType getServerImpl(Configuration conf) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      String confType = conf.get(SERVER_TYPE_CONF_KEY, THREAD_POOL.option);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      for (ImplType t : values()) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        if (confType.equals(t.option)) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>          return t;<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>      throw new AssertionError("Unknown server ImplType.option:" + confType);<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>    static void setServerImpl(CommandLine cmd, Configuration conf) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      ImplType chosenType = null;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      int numChosen = 0;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      for (ImplType t : values()) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        if (cmd.hasOption(t.option)) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>          chosenType = t;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>          ++numChosen;<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>      if (numChosen &lt; 1) {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>        LOG.info("Using default thrift server type");<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        chosenType = DEFAULT;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      } else if (numChosen &gt; 1) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        throw new AssertionError("Exactly one option out of " +<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          Arrays.toString(values()) + " has to be specified");<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      LOG.info("Using thrift server type " + chosenType.option);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      conf.set(SERVER_TYPE_CONF_KEY, chosenType.option);<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 String simpleClassName() {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      return serverClass.getSimpleName();<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>    public static List&lt;String&gt; serversThatCannotSpecifyBindIP() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      List&lt;String&gt; l = new ArrayList&lt;&gt;();<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      for (ImplType t : values()) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        if (!t.canSpecifyBindIP) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>          l.add(t.simpleClassName());<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      return l;<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><a name="line.342"></a>
-<span class="sourceLineNo">343</span>  public ThriftServerRunner(Configuration conf) throws IOException {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    // login the server principal (if using secure Hadoop)<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    UserProvider userProvider = UserProvider.instantiate(conf);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    securityEnabled = userProvider.isHadoopSecurityEnabled()<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        &amp;&amp; userProvider.isHBaseSecurityEnabled();<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    if (securityEnabled) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      host = Strings.domainNamePointerToHostName(DNS.getDefaultHost(<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        conf.get(THRIFT_DNS_INTERFACE_KEY, "default"),<a name="line.350"></a>
-<span class="sourceLineNo">351</span>        conf.get(THRIFT_DNS_NAMESERVER_KEY, "default")));<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      userProvider.login(THRIFT_KEYTAB_FILE_KEY, THRIFT_KERBEROS_PRINCIPAL_KEY, host);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    }<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    this.serviceUGI = userProvider.getCurrent().getUGI();<a name="line.354"></a>
-<span class="sourceLineNo">355</span><a name="line.355"></a>
-<span class="sourceLineNo">356</span>    this.conf = HBaseConfiguration.create(conf);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    this.listenPort = conf.getInt(PORT_CONF_KEY, DEFAULT_LISTEN_PORT);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    this.metrics = new ThriftMetrics(conf, ThriftMetrics.ThriftServerType.ONE);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    this.pauseMonitor = new JvmPauseMonitor(conf, this.metrics.getSource());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    this.hbaseHandler = new HBaseHandler(conf, userProvider);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    this.hbaseHandler.initMetrics(metrics);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    this.handler = HbaseHandlerMetricsProxy.newInstance(hbaseHandler, metrics, conf);<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    boolean httpEnabled = conf.getBoolean(USE_HTTP_CONF_KEY, false);<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    doAsEnabled = conf.getBoolean(THRIFT_SUPPORT_PROXYUSER_KEY, false);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    if (doAsEnabled &amp;&amp; !httpEnabled) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      LOG.warn("Fail to enable the doAs feature. " + USE_HTTP_CONF_KEY + " is not configured");<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>    String strQop = conf.get(THRIFT_QOP_KEY);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    if (strQop != null) {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      this.qop = SaslUtil.getQop(strQop);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    }<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    if (qop != null) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      if (qop != QualityOfProtection.AUTHENTICATION &amp;&amp;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>          qop != QualityOfProtection.INTEGRITY &amp;&amp;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>          qop != QualityOfProtection.PRIVACY) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>        throw new IOException(String.format("Invalid %s: It must be one of %s, %s, or %s.",<a name="line.378"></a>
-<span class="sourceLineNo">379</span>                              THRIFT_QOP_KEY,<a name="line.379"></a>
-<span class="sourceLineNo">380</span>                              QualityOfProtection.AUTHENTICATION.name(),<a name="line.380"></a>
-<span class="sourceLineNo">381</span>                              QualityOfProtection.INTEGRITY.name(),<a name="line.381"></a>
-<span class="sourceLineNo">382</span>                              QualityOfProtection.PRIVACY.name()));<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      }<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      checkHttpSecurity(qop, conf);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      if (!securityEnabled) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        throw new IOException("Thrift server must run in secure mode to support authentication");<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><a name="line.390"></a>
-<span class="sourceLineNo">391</span>  private void checkHttpSecurity(QualityOfProtection qop, Configuration conf) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    if (qop == QualityOfProtection.PRIVACY &amp;&amp;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        conf.getBoolean(USE_HTTP_CONF_KEY, false) &amp;&amp;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        !conf.getBoolean(THRIFT_SSL_ENABLED_KEY, false)) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      throw new IllegalArgumentException("Thrift HTTP Server's QoP is privacy, but " +<a name="line.395"></a>
-<span class="sourceLineNo">396</span>          THRIFT_SSL_ENABLED_KEY + " is false");<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 name="line.400"></a>
-<span class="sourceLineNo">401</span>   * Runs the Thrift server<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  @Override<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  public void run() {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    serviceUGI.doAs(new PrivilegedAction&lt;Object&gt;() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      @Override<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      public Object run() {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        try {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>          pauseMonitor.start();<a name="line.409"></a>
-<span class="sourceLineNo">410</span>          if (conf.getBoolean(USE_HTTP_CONF_KEY, false)) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>            setupHTTPServer();<a name="line.411"></a>
-<span class="sourceLineNo">412</span>            httpServer.start();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>            httpServer.join();<a name="line.413"></a>
-<span class="sourceLineNo">414</span>          } else {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>            setupServer();<a name="line.415"></a>
-<span class="sourceLineNo">416</span>            tserver.serve();<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        } catch (Exception e) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>          LOG.error(HBaseMarkers.FATAL, "Cannot run ThriftServer", e);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>          // Crash the process if the ThriftServer is not running<a name="line.420"></a>
-<span class="sourceLineNo">421</span>          System.exit(-1);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        }<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        return null;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    });<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><a name="line.428"></a>
-<span class="sourceLineNo">429</span>  public void shutdown() {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    if (pauseMonitor != null) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      pauseMonitor.stop();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    }<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    if (tserver != null) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      tserver.stop();<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      tserver = null;<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    }<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    if (httpServer != null) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      try {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        httpServer.stop();<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        httpServer = null;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      } catch (Exception e) {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        LOG.error("Problem encountered in shutting down HTTP server", e);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      }<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      httpServer = null;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>  private void setupHTTPServer() throws IOException {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    TProcessor processor = new Hbase.Processor&lt;&gt;(handler);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    TServlet thriftHttpServlet = new ThriftHttpServlet(processor, protocolFactory, serviceUGI,<a name="line.451"></a>
-<span class="sourceLineNo">452</span>        conf, hbaseHandler, securityEnabled, doAsEnabled);<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // Set the default max thread number to 100 to limit<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    // the number of concurrent requests so that Thrfit HTTP server doesn't OOM easily.<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    // Jetty set the default max thread number to 250, if we don't set it.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    //<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    // Our default min thread number 2 is the same as that used by Jetty.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    int minThreads = conf.getInt(HTTP_MIN_THREADS_KEY, 2);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    int maxThreads = conf.getInt(HTTP_MAX_THREADS_KEY, 100);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    QueuedThreadPool threadPool = new QueuedThreadPool(maxThreads);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    threadPool.setMinThreads(minThreads);<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    httpServer = new Server(threadPool);<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>    // Context handler<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    ServletContextHandler ctxHandler = new ServletContextHandler(httpServer, "/",<a name="line.466"></a>
-<span class="sourceLineNo">467</span>            ServletContextHandler.SESSIONS);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    ctxHandler.addServlet(new ServletHolder(thriftHttpServlet), "/*");<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    HttpServerUtil.constrainHttpMethods(ctxHandler,<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      conf.getBoolean(THRIFT_HTTP_ALLOW_OPTIONS_METHOD, THRIFT_HTTP_ALLOW_OPTIONS_METHOD_DEFAULT));<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>    // set up Jetty and run the embedded server<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    HttpConfiguration httpConfig = new HttpConfiguration();<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    httpConfig.setSecureScheme("https");<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    httpConfig.setSecurePort(listenPort);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    httpConfig.setHeaderCacheSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    httpConfig.setRequestHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    httpConfig.setResponseHeaderSize(DEFAULT_HTTP_MAX_HEADER_SIZE);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    httpConfig.setSendServerVersion(false);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    httpConfig.setSendDateHeader(false);<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>    ServerConnector serverConnector;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    if(conf.getBoolean(THRIFT_SSL_ENABLED_KEY, false)) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      HttpConfiguration httpsConfig = new HttpConfiguration(httpConfig);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      httpsConfig.addCustomizer(new SecureRequestCustomizer());<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>      SslContextFactory sslCtxFactory = new SslContextFactory();<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      String keystore = conf.get(THRIFT_SSL_KEYSTORE_STORE_KEY);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      String password = HBaseConfiguration.getPassword(conf,<a name="line.489"></a>
-<span class="sourceLineNo">490</span>          THRIFT_SSL_KEYSTORE_PASSWORD_KEY, null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      String keyPassword = HBaseConfiguration.getPassword(conf,<a name="line.491"></a>
-<span class="sourceLineNo">492</span>          THRIFT_SSL_KEYSTORE_KEYPASSWORD_KEY, password);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      sslCtxFactory.setKeyStorePath(keystore);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      sslCtxFactory.setKeyStorePassword(password);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      sslCtxFactory.setKeyManagerPassword(keyPassword);<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>      String[] excludeCiphers = conf.getStrings(<a name="line.497"></a>
-<span class="sourceLineNo">498</span>          THRIFT_SSL_EXCLUDE_CIPHER_SUITES_KEY, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      if (excludeCiphers.length != 0) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        sslCtxFactory.setExcludeCipherSuites(excludeCiphers);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      }<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      String[] includeCiphers = conf.getStrings(<a name="line.502"></a>
-<span class="sourceLineNo">503</span>          THRIFT_SSL_INCLUDE_CIPHER_SUITES_KEY, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      if (includeCiphers.length != 0) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        sslCtxFactory.setIncludeCipherSuites(includeCiphers);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      }<a name="line.506"></a>
-<span class="sourceLineNo">507</span><a name="line.507"></a>
-<span class="sourceLineNo">508</span>      // Disable SSLv3 by default due to "Poodle" Vulnerability - CVE-2014-3566<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      String[] excludeProtocols = conf.getStrings(<a name="line.509"></a>
-<span class="sourceLineNo">510</span>          THRIFT_SSL_EXCLUDE_PROTOCOLS_KEY, "SSLv3");<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      if (excludeProtocols.length != 0) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        sslCtxFactory.setExcludeProtocols(excludeProtocols);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      String[] includeProtocols = conf.getStrings(<a name="line.514"></a>
-<span class="sourceLineNo">515</span>          THRIFT_SSL_INCLUDE_PROTOCOLS_KEY, ArrayUtils.EMPTY_STRING_ARRAY);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      if (includeProtocols.length != 0) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>        sslCtxFactory.setIncludeProtocols(includeProtocols);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      }<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>      serverConnector = new ServerConnector(httpServer,<a name="line.520"></a>
-<span class="sourceLineNo">521</span>          new SslConnectionFactory(sslCtxFactory, HttpVersion.HTTP_1_1.toString()),<a name="line.521"></a>
-<span class="sourceLineNo">522</span>          new HttpConnectionFactory(httpsConfig));<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    } else {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      serverConnector = new ServerConnector(httpServer, new HttpConnectionFactory(httpConfig));<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    serverConnector.setPort(listenPort);<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    serverConnector.setHost(getBindAddress(conf).getHostAddress());<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    httpServer.addConnector(serverConnector);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    httpServer.setStopAtShutdown(true);<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>    if (doAsEnabled) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      ProxyUsers.refreshSuperUserGroupsConfiguration(conf);<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>    LOG.info("Starting Thrift HTTP Server on {}", Integer.toString(listenPort));<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>   * Setting up the thrift TServer<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  private void setupServer() throws Exception {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    // Construct correct ProtocolFactory<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    TProtocolFactory protocolFactory = getProtocolFactory();<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    final TProcessor p = new Hbase.Processor&lt;&gt;(handler);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    ImplType implType = ImplType.getServerImpl(conf);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    TProcessor processor = p;<a name="line.547"></a>
-<span class="sourceLineNo">548</span><a name="line.548"></a>
-<span class="sourceLineNo">549</span>    // Construct correct TransportFactory<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    TTransportFactory transportFactory;<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    if (conf.getBoolean(FRAMED_CONF_KEY, false) || implType.isAlwaysFramed) {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      if (qop != null) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        throw new RuntimeException("Thrift server authentication"<a name="line.553"></a>
-<span class="sourceLineNo">554</span>          + " doesn't work with framed transport yet");<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      transportFactory = new TFramedTransport.Factory(<a name="line.556"></a>
-<span class="sourceLineNo">557</span>          conf.getInt(MAX_FRAME_SIZE_CONF_KEY, 2)  * 1024 * 1024);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      LOG.debug("Using framed transport");<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    } else if (qop == null) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      transportFactory = new TTransportFactory();<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    } else {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      // Extract the name from the principal<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      String thriftKerberosPrincipal = conf.get(THRIFT_KERBEROS_PRINCIPAL_KEY);<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      if (thriftKerberosPrincipal == null) {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>        throw new IllegalArgumentException(THRIFT_KERBEROS_PRINCIPAL_KEY + " cannot be null");<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      }<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      String name = SecurityUtil.getUserFromPrincipal(thriftKerberosPrincipal);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      Map&lt;String, String&gt; saslProperties = SaslUtil.initSaslProperties(qop.name());<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      TSaslServerTransport.Factory saslFactory = new TSaslServerTransport.Factory();<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      saslFactory.addServerDefinition("GSSAPI", name, host, saslProperties,<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        new SaslGssCallbackHandler() {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>          @Override<a name="line.572"></a>
-<span class="sourceLineNo">573</span>          public void handle(Callback[] callbacks)<a name="line.573"></a>
-<span class="sourceLineNo">574</span>              throws UnsupportedCallbackException {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>            AuthorizeCallback ac = null;<a name="line.575"></a>
-<span class="sourceLineNo">576</span>            for (Callback callback : callbacks) {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>              if (callback instanceof AuthorizeCallback) {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>                ac = (AuthorizeCallback) callback;<a name="line.578"></a>
-<span class="sourceLineNo">579</span>              } else {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>                throw new UnsupportedCallbackException(callback,<a name="line.580"></a>
-<span class="sourceLineNo">581</span>                    "Unrecognized SASL GSSAPI Callback");<a name="line.581"></a>
-<span class="sourceLineNo">582</span>              }<a name="line.582"></a>
-<span class="sourceLineNo">583</span>            }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>            if (ac != null) {<a name="line.584"></a>
-<span class="sourceLineNo">585</span>              String authid = ac.getAuthenticationID();<a name="line.585"></a>
-<span class="sourceLineNo">586</span>              String authzid = ac.getAuthorizationID();<a name="line.586"></a>
-<span class="sourceLineNo">587</span>              if (!authid.equals(authzid)) {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>                ac.setAuthorized(false);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>              } else {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>                ac.setAuthorized(true);<a name="line.590"></a>
-<span class="sourceLineNo">591</span>                String userName = SecurityUtil.getUserFromPrincipal(authzid);<a name="line.591"></a>
-<span class="sourceLineNo">592</span>                LOG.info("Effective user: {}", userName);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>                ac.setAuthorizedID(userName);<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>          }<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        });<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      transportFactory = saslFactory;<a name="line.598"></a>
-<span class="sourceLineNo">599</span><a name="line.599"></a>
-<span class="sourceLineNo">600</span>      // Create a processor wrapper, to get the caller<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      processor = (inProt, outProt) -&gt; {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>        TSaslServerTransport saslServerTransport =<a name="line.602"></a>
-<span class="sourceLineNo">603</span>          (TSaslServerTransport)inProt.getTransport();<a name="line.603"></a>
-<span class="sourceLineNo">604</span>        SaslServer saslServer = saslServerTransport.getSaslServer();<a name="line.604"></a>
-<span class="sourceLineNo">605</span>        String principal = saslServer.getAuthorizationID();<a name="line.605"></a>
-<span class="sourceLineNo">606</span>        hbaseHandler.setEffectiveUser(principal);<a name="line.606"></a>
-<span class="sourceLineNo">607</span>        return p.process(inProt, outProt);<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      };<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    }<a name="line.609"></a>
-<span class="sourceLineNo">610</span><a name="line.610"></a>
-<span class="sourceLineNo">611</span>    if (conf.get(BIND_CONF_KEY) != null &amp;&amp; !implType.canSpecifyBindIP) {<a name="line.611"></a>
-<span class="sourceLineNo">612</span>      LOG.error("Server types {} don't support IP address binding at the moment. See " +<a name="line.612"></a>
-<span class="sourceLineNo">613</span>          "https://issues.apache.org/jira/browse/HBASE-2155 for details.",<a name="line.613"></a>
-<span class="sourceLineNo">614</span>          Joiner.on(", ").join(ImplType.serversThatCannotSpecifyBindIP()));<a name="line.614"></a>
-<span class="sourceLineNo">615</span>      throw new RuntimeException("-" + BIND_CONF_KEY + " not supported with " + implType);<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>
-<span class="sourceLineNo">618</span>    // Thrift's implementation uses '0' as a placeholder for 'use the default.'<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    int backlog = conf.getInt(BACKLOG_CONF_KEY, 0);<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>    if (implType == ImplType.HS_HA || implType == ImplType.NONBLOCKING ||<a name="line.621"></a>
-<span class="sourceLineNo">622</span>        implType == ImplType.THREADED_SELECTOR) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      InetAddress listenAddress = getBindAddress(conf);<a name="line.623"></a>
-<span class="sourceLineNo">624</span>      TNonblockingServerTransport serverTransport = new TNonblockingServerSocket(<a name="line.624"></a>
-<span class="sourceLineNo">625</span>          new InetSocketAddress(listenAddress, listenPort));<a name="line.625"></a>
-<span class="sourceLineNo">626</span><a name="line.626"></a>
-<span class="sourceLineNo">627</span>      if (implType == ImplType.NONBLOCKING) {<a name="line.627"></a>
-<span class="sourceLineNo">628</span>        TNonblockingServer.Args serverArgs =<a name="line.628"></a>
-<span class="sourceLineNo">629</span>            new TNonblockingServer.Args(serverTransport);<a name="line.629"></a>
-<span class="sourceLineNo">630</span>        serverArgs.processor(processor)<a name="line.630"></a>
-<span class="sourceLineNo">631</span>                  .transportFactory(transportFactory)<a name="line.631"></a>
-<span class="sourceLineNo">632</span>                  .protocolFactory(protocolFactory);<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        tserver = new TNonblockingServer(serverArgs);<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      } else if (implType == ImplType.HS_HA) {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>        THsHaServer.Args serverArgs = new THsHaServer.Args(serverTransport);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>        CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.636"></a>
-<span class="sourceLineNo">637</span>        ExecutorService executorService = createExecutor(<a name="line.637"></a>
-<span class="sourceLineNo">638</span>            callQueue, serverArgs.getMaxWorkerThreads(), serverArgs.getMaxWorkerThreads());<a name="line.638"></a>
-<span class="sourceLineNo">639</span>        serverArgs.executorService(executorService).processor(processor)<a name="line.639"></a>
-<span class="sourceLineNo">640</span>                .transportFactory(transportFactory).protocolFactory(protocolFactory);<a name="line.640"></a>
-<span class="sourceLineNo">641</span>        tserver = new THsHaServer(serverArgs);<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      } else { // THREADED_SELECTOR<a name="line.642"></a>
-<span class="sourceLineNo">643</span>        TThreadedSelectorServer.Args serverArgs =<a name="line.643"></a>
-<span class="sourceLineNo">644</span>            new HThreadedSelectorServerArgs(serverTransport, conf);<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        CallQueue callQueue = new CallQueue(new LinkedBlockingQueue&lt;&gt;(), metrics);<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        ExecutorService executorService = createExecutor(<a name="line.646"></a>
-<span class="sourceLineNo">647</span>            callQueue, serverArgs.getWorkerThreads(), serverArgs.getWorkerThreads());<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        serverArgs.executorService(executorService).processor(processor)<a name="line.648"></a>
-<span class="sourceLineNo">649</span>                .transportFactory(transportFactory).protocolFactory(protocolFactory);<a name="line.649"></a>
-<span class="sourceLineNo">650</span>        tserver = new TThreadedSelectorServer(serverArgs);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      }<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      LOG.info("starting HBase {} server on {}", implType.simpleClassName(),<a name="line.652"></a>
-<span class="sourceLineNo">653</span>          Integer.toString(listenPort));<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    } else if (implType == ImplType.THREAD_POOL) {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      // Thread pool server. Get the IP address to bind to.<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      InetAddress listenAddress = getBindAddress(conf);<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      int readTimeout = conf.getInt(THRIFT_SERVER_SOCKET_READ_TIMEOUT_KEY,<a name="line.657"></a>
-<span class="sourceLineNo">658</span>          THRIFT_SERVER_SOCKET_READ_TIMEOUT_DEFAULT);<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      TServerTransport serverTransport = new TServerSocket(<a name="line.659"></a>
-<span class="sourceLineNo">660</span>          new TServerSocket.ServerSocketTransportArgs().<a name="line.660"></a>
-<span class="sourceLineNo">661</span>              bindAddr(new InetSocketAddress(listenAddress, listenPort)).backlog(backlog).<a name="line.661"></a>
-<span class="sourceLineNo">662</span>              clientTimeout(readTimeout));<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>      TBoundedThreadPoolServer.Args serverArgs =<a name="line.664"></a>
-<span class="sourceLineNo">665</span>          new TBoundedThreadPoolServer.Args(serverTransport, conf);<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      serverArgs.processor(processor).transportFactory(transportFactory)<a name="line.666"></a>
-<span class="sourceLineNo">667</span>              .protocolFactory(protocolFactory);<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      LOG.info("starting " + ImplType.THREAD_POOL.simpleClassName() + " on "<a name="line.668"></a>
-<span class="sourceLineNo">669</span>          + listenAddress + ":" + Integer.toString(listenPort)<a name="line.669"></a>
-<span class="sourceLineNo">670</span>          + " with readTimeout " + readTimeout + "ms; " + serverArgs);<a name="line.670"></a>
-<span class="sourceLineNo">671</span>      this.tserver = new TBoundedThreadPoolServer(serverArgs, metrics);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    } else {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      throw new AssertionError("Unsupported Thrift server implementation: " +<a name="line.673"></a>
-<span class="sourceLineNo">674</span>          implType.simpleClassName());<a name="line.674"></a>
-<span class="sourceLineNo">675</span>    }<a name="line.675"></a>
-<span class="sourceLineNo">676</span><a name="line.676"></a>
-<span class="sourceLineNo">677</span>    // A sanity check that we instantiated the right type of server.<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    if (tserver.getClass() != implType.serverClass) {<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      throw new AssertionError("Expected to create Thrift server class " +<a name="line.679"></a>
-<span class="sourceLineNo">680</span>          implType.serverClass.getName() + " but got " +<a name="line.680"></a>
-<span class="sourceLineNo">681</span>          tserver.getClass().getName());<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    }<a name="line.682"></a>
-<span class="sourceLineNo">683</span><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>    registerFilters(conf);<a name="line.686"></a>
-<span class="sourceLineNo">687</span>  }<a name="line.687"></a>
-<span class="sourceLineNo">688</span><a name="line.688"></a>
-<span class="sourceLineNo">689</span>  private TProtocolFactory getProtocolFactory() {<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    TProtocolFactory protocolFactory;<a name="line.690"></a>
-<span class="sourceLineNo">691</span><a name="line.691"></a>
-<span class="sourceLineNo">692</span>    if (conf.getBoolean(COMPACT_CONF_KEY, false)) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>      LOG.debug("Using compact protocol");<a name="line.693"></a>
-<span class="sourceLineNo">694</span>      protocolFactory = new TCompactProtocol.Factory();<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    } else {<a name="line.695"></a>
-<span class="sourceLineNo">696</span>      LOG.debug("Using binary protocol");<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      protocolFactory = new TBinaryProtocol.Factory();<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    }<a name="line.698"></a>
-<span class="sourceLineNo">699</span><a name="line.699"></a>
-<span class="sourceLineNo">700</span>    return protocolFactory;<a name="line.700"></a>
-<span class="sourceLineNo">701</span>  }<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>  ExecutorService createExecutor(BlockingQueue&lt;Runnable&gt; callQueue,<a name="line.703"></a>
-<span class="sourceLineNo">704</span>                                 int minWorkers, int maxWorkers) {<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    ThreadFactoryBuilder tfb = new ThreadFactoryBuilder();<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    tfb.setDaemon(true);<a name="line.706"></a>
-<span class="sourceLineNo">707</span>    tfb.setNameFormat("thrift-worker-%d");<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    ThreadPoolExecutor threadPool = new THBaseThreadPoolExecutor(minWorkers, maxWorkers,<a name="line.708"></a>
-<span class="sourceLineNo">709</span>            Long.MAX_VALUE, TimeUnit.SECONDS, callQueue, tfb.build(), metrics);<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    threadPool.allowCoreThreadTimeOut(true);<a name="line.710"></a>
-<span class="sourceLineNo">711</span>    return threadPool;<a name="line.711"></a>
-<span class="sourceLineNo">712</span>  }<a name="line.712"></a>
-<span class="sourceLineNo">713</span><a name="line.713"></a>
-<span class="sourceLineNo">714</span>  private InetAddress getBindAddress(Configuration conf)<a name="line.714"></a>
-<span class="sourceLineNo">715</span>      throws UnknownHostException {<a name="line.715"></a>
-<span class="sourceLineNo">716</span>    String bindAddressStr = conf.get(BIND_CONF_KEY, DEFAULT_BIND_ADDR);<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    return InetAddress.getByName(bindAddressStr);<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
-<span class="sourceLineNo">719</span><a name="line.719"></a>
-<span class="sourceLineNo">720</span>  protected static class ResultScannerWrapper {<a name="line.720"></a>
-<span class="sourceLineNo">721</span><a name="line.721"></a>
-<span class="sourceLineNo">722</span>    private final ResultScanner scanner;<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    private final boolean sortColumns;<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    public ResultScannerWrapper(ResultScanner resultScanner,<a name="line.724"></a>
-<span class="sourceLineNo">725</span>                                boolean sortResultColumns) {<a name="line.725"></a>
-<span class="sourceLineNo">726</span>      scanner = resultScanner;<a name="line.726"></a>
-<span class="sourceLineNo">727</span>      sortColumns = sortResultColumns;<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>    public ResultScanner getScanner() {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      return scanner;<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>    public boolean isColumnSorted() {<a name="line.734"></a>
-<span class="sourceLineNo">735</span>      return sortColumns;<a name="line.735"></a>
-<span class="sourceLineNo">736</span>    }<a name="line.736"></a>
-<span class="sourceLineNo">737</span>  }<a name="line.737"></a>
-<span class="sourceLineNo">738</span><a name="line.738"></a>
-<span class="sourceLineNo">739</span>  /**<a name="line.739"></a>
-<span class="sourceLineNo">740</span>   * The HBaseHandler is a glue object that connects Thrift RPC calls to the<a name="line.740"></a>
-<span class="sourceLineNo">741</span>   * HBase client API primarily defined in the Admin and Table objects.<a name="line.741"></a>
-<span class="sourceLineNo">742</span>   */<a name="line.742"></a>
-<span class="sourceLineNo">743</span>  public static class HBaseHandler implements Hbase.Iface {<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    protected Configuration conf;<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    protected static final Logger LOG = LoggerFactory.getLogger(HBaseHandler.class);<a name="line.745"></a>
-<span class="sourceLineNo">746</span><a name="line.746"></a>
-<span class="sourceLineNo">747</span>    // nextScannerId and scannerMap are used to manage scanner state<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    protected int nextScannerId = 0;<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    protected HashMap&lt;Integer, ResultScannerWrapper&gt; scannerMap;<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    private ThriftMetrics metrics = null;<a name="line.750"></a>
-<span class="sourceLineNo">751</span><a name="line.751"></a>
-<span class="sourceLineNo">752</span>    private final ConnectionCache connectionCache;<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    IncrementCoalescer coalescer;<a name="line.753"></a>
-<span class="sourceLineNo">754</span><a name="line.754"></a>
-<span class="sourceLineNo">755</span>    static final String CLEANUP_INTERVAL = "hbase.thrift.connection.cleanup-interval";<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    static final String MAX_IDLETIME = "hbase.thrift.connection.max-idletime";<a name="line.756"></a>
-<span class="sourceLineNo">757</span><a name="line.757"></a>
-<span class="sourceLineNo">758</span>    /**<a name="line.758"></a>
-<span class="sourceLineNo">759</span>     * Returns a list of all the column families for a given Table.<a name="line.759"></a>
-<span class="sourceLineNo">760</span>     *<a name="line.760"></a>
-<span class="sourceLineNo">761</span>     * @param table<a name="line.761"></a>
-<span class="sourceLineNo">762</span>     * @throws IOException<a name="line.762"></a>
-<span class="sourceLineNo">763</span>     */<a name="line.763"></a>
-<span class="sourceLineNo">764</span>    byte[][] getAllColumns(Table table) throws IOException {<a name="line.764"></a>
-<span class="sourceLineNo">765</span>      HColumnDescriptor[] cds = table.getTableDescriptor().getColumnFamilies();<a name="line.765"></a>
-<span class="sourceLineNo">766</span>      byte[][] columns = new byte[cds.length][];<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      for (int i = 0; i &lt; cds.length; i++) {<a name="line.767"></a>
-<span class="sourceLineNo">768</span>        columns[i] = Bytes.add(cds[i].getName(),<a name="line.768"></a>
-<span class="sourceLineNo">769</span>            KeyValue.COLUMN_FAMILY_DELIM_ARRAY);<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      }<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      return columns;<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    }<a name="line.772"></a>
-<span class="sourceLineNo">773</span><a name="line.773"></a>
-<span class="sourceLineNo">774</span>    /**<a name="line.774"></a>
-<span class="sourceLineNo">775</span>     * Creates and returns a Table instance from a given table name.<a name="line.775"></a>
-<span class="sourceLineNo">776</span>     *<a name="line.776"></a>
-<span class="sourceLineNo">777</span>     * @param tableName<a name="line.777"></a>
-<span class="sourceLineNo">778</span>     *          name of table<a name="line.778"></a>
-<span class="sourceLineNo">779</span>     * @return Table object<a name="line.779"></a>
-<span class="sourceLineNo">780</span>     * @throws IOException if getting the table fails<a name="line.780"></a>
-<span class="sourceLineNo">781</span>     */<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    public Table getTable(final byte[] tableName) throws IOException {<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      String table = Bytes.toString(tableName);<a name="line.783"></a>
-<span class="sourceLineNo">784</span>      return connectionCache.getTable(table);<a name="line.784"></a>
-<span class="sourceLineNo">785</span>    }<a name="line.785"></a>
-<span class="sourceLineNo">786</span><a name="line.786"></a>
-<span class="sourceLineNo">787</span>    public Table getTable(final ByteBuffer tableName) throws IOException {<a name="line.787"></a>
-<span class="sourceLineNo">788</span>      return getTable(getBytes(tableName));<a name="line.788"></a>
-<span class="sourceLineNo">789</span>    }<a name="line.789"></a>
-<span class="sourceLineNo">790</span><a name="line.790"></a>
-<span class="sourceLineNo">791</span>    /**<a name="line.791"></a>
-<span class="sourceLineNo">792</span>     * Assigns a unique ID to the scanner and adds the mapping to an internal<a name="line.792"></a>
-<span class="sourceLineNo">793</span>     * hash-map.<a name="line.793"></a>
-<span class="sourceLineNo">794</span>     *<a name="line.794"></a>
-<span class="sourceLineNo">795</span>     * @param scanner the {@link ResultScanner} to add<a name="line.795"></a>
-<span class="sourceLineNo">796</span>     * @return integer scanner id<a name="line.796"></a>
-<span class="sourceLineNo">797</span>     */<a name="line.797"></a>
-<span class="sourceLineNo">798</span>    protected synchronized int addScanner(ResultScanner scanner, boolean sortColumns) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>      int id = nextScannerId++;<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      ResultScannerWrapper resultScannerWrapper = new ResultScannerWrapper(scanner, sortColumns);<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      scannerMap.put(id, resultScannerWrapper);<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      return id;<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    }<a name="line.803"></a>
-<span class="sourceLineNo">804</span><a name="line.804"></a>
-<span class="sourceLineNo">805</span>    /**<a name="line.805"></a>
-<span class="sourceLineNo">806</span>     * Returns the scanner associated with the specified ID.<a name="line.806"></a>
-<span class="sourceLineNo">807</span>     *<a name="line.807"></a>
-<span class="sourceLineNo">808</span>     * @param id the ID of the scanner to get<a name="line.808"></a>
-<span class="sourceLineNo">809</span>     * @return a Scanner, or null if ID was invalid.<a name="line.809"></a>
-<span class="sourceLineNo">810</span>     */<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    protected synchronized ResultScannerWrapper getScanner(int id) {<a name="line.811"></a>
-<span class="sourceLineNo">812</span>      return scannerMap.get(id);<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    }<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>     * Removes the scanner associated with the specified ID from the internal<a name="line.816"></a>
-<span class="sourceLineNo">817</span>     * id-&amp;gt;scanner hash-map.<a name="line.817"></a>
-<span class="sourceLineNo">818</span>     *<a name="line.818"></a>
-<span class="sourceLineNo">819</span>     * @param id the ID of the scanner to remove<a name="line.819"></a>
-<span class="sourceLineNo">820</span>     * @return a Scanner, or null if ID was invalid.<a name="line.820"></a>
-<span class="sourceLineNo">821</span>     */<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    protected synchronized ResultScannerWrapper removeScanner(int id) {<a name="line.822"></a>
-<span class="sourceLineNo">823</span>      return scannerMap.remove(id);<a name="line.823"></a>
-<span class="sourceLineNo">824</span>    }<a name="line.824"></a>
-<span class="sourceLineNo">825</span><a name="line.825"></a>
-<span class="sourceLineNo">826</span>    protected HBaseHandler(final Configuration c,<a name="line.826"></a>
-<span class="sourceLineNo">827</span>        final UserProvider userProvider) throws IOException {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      this.conf = c;<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      scannerMap = new HashMap&lt;&gt;();<a name="line.829"></a>
-<span class="sourceLineNo">830</span>      this.coalescer = new IncrementCoalescer(this);<a name="line.830"></a>
-<span class="sourceLineNo">831</span><a name="line.831"></a>
-<span class="sourceLineNo">832</span>      int cleanInterval = conf.getInt(CLEANUP_INTERVAL, 10 * 1000);<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      int maxIdleTime = conf.getInt(MAX_IDLETIME, 10 * 60 * 1000);<a name="line.833"></a>
-<span class="sourceLineNo">834</span>      connectionCache = new ConnectionCache(<a name="line.834"></a>
-<span class="sourceLineNo">835</span>        conf, userProvider, cleanInterval, maxIdleTime);<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span><a name="line.837"></a>
-<span class="sourceLineNo">838</span>    /**<a name="line.838"></a>
-<span class="sourceLineNo">839</span>     * Obtain HBaseAdmin. Creates the instance if it is not already created.<a name="line.839"></a>
-<span class="sourceLineNo">840</span>     */<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    private Admin getAdmin() throws IOException {<a name="line.841"></a>
-<span class="sourceLineNo">842</span>      return connectionCache.getAdmin();<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    }<a name="line.843"></a>
-<span class="sourceLineNo">844</span><a name="line.844"></a>
-<span class="sourceLineNo">845</span>    void setEffectiveUser(String effectiveUser) {<a name="line.845"></a>
-<span class="sourceLineNo">846</span>      connectionCache.setEffectiveUser(effectiveUser);<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>    @Override<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    public void enableTable(ByteBuffer tableName) throws IOError {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      try{<a name="line.851"></a>
-<span class="sourceLineNo">852</span>        getAdmin().enableTable(getTableName(tableName));<a name="line.852"></a>
-<span class="sourceLineNo">853</span>      } catch (IOException e) {<a name="line.853"></a>
-<span class="sourceLineNo">854</span>        LOG.warn(e.getMessage(), e);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>        throw getIOError(e);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      }<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    }<a name="line.857"></a>
-<span class="sourceLineNo">858</span><a name="line.858"></a>
-<span class="sourceLineNo">859</span>    @Override<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    public void disableTable(ByteBuffer tableName) throws IOError{<a name="line.860"></a>
-<span class="sourceLineNo">861</span>      try{<a name="line.861"></a>
-<span class="sourceLineNo">862</span>        getAdmin().disableTable(getTableName(tableName));<a name="line.862"></a>
-<span class="sourceLineNo">863</span>      } catch (IOException e) {<a name="line.863"></a>
-<span class="sourceLineNo">864</span>        LOG.warn(e.getMessage(), e);<a name="line.864"></a>
-<span class="sourceLineNo">865</span>        throw getIOError(e);<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><a name="line.868"></a>
-<span class="sourceLineNo">869</span>    @Override<a name="line.869"></a>
-<span class="sourceLineNo">870</span>    public boolean isTableEnabled(ByteBuffer tableName) throws IOError {<a name="line.870"></a>
-<span class="sourceLineNo">871</span>      try {<a name="line.871"></a>
-<span class="sourceLineNo">872</span>        return this

<TRUNCATED>

[11/51] [partial] hbase-site git commit: Published site at e4b6b4afb933a961f543537875f87a2dc62d3757.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/849d84a8/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html b/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html
deleted file mode 100644
index 1a0f64e..0000000
--- a/devapidocs/src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html
+++ /dev/null
@@ -1,935 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
-<title>Source code</title>
-<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
-</head>
-<body>
-<div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.thrift2;<a name="line.19"></a>
-<span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.appendFromThrift;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.columnFamilyDescriptorFromThrift;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.compareOpFromThrift;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.deleteFromThrift;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.deletesFromThrift;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.getFromThrift;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.getsFromThrift;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.incrementFromThrift;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.namespaceDescriptorFromHBase;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.namespaceDescriptorFromThrift;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.namespaceDescriptorsFromHBase;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.putFromThrift;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.putsFromThrift;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.resultFromHBase;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.resultsFromHBase;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.rowMutationsFromThrift;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.scanFromThrift;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.splitKeyFromThrift;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableDescriptorFromHBase;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableDescriptorFromThrift;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableDescriptorsFromHBase;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableNameFromThrift;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import static org.apache.hadoop.hbase.thrift2.ThriftUtilities.tableNamesFromHBase;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import static org.apache.thrift.TBaseHelper.byteBufferToByteArray;<a name="line.44"></a>
-<span class="sourceLineNo">045</span><a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.io.IOException;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.lang.reflect.InvocationHandler;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.lang.reflect.InvocationTargetException;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.lang.reflect.Method;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.lang.reflect.Proxy;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.nio.ByteBuffer;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import java.util.ArrayList;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import java.util.Collections;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import java.util.List;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import java.util.Map;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import java.util.concurrent.ConcurrentHashMap;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import java.util.regex.Pattern;<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.conf.Configuration;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.TableName;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.client.Table;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.thrift.ThriftMetrics;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.thrift2.generated.TAppend;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.thrift2.generated.TColumnFamilyDescriptor;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.thrift2.generated.TCompareOp;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.thrift2.generated.TDelete;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.thrift2.generated.TGet;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.thrift2.generated.THBaseService;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.thrift2.generated.THRegionLocation;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.thrift2.generated.TIOError;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.thrift2.generated.TIllegalArgument;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.thrift2.generated.TIncrement;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.thrift2.generated.TNamespaceDescriptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.thrift2.generated.TPut;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.thrift2.generated.TResult;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.thrift2.generated.TRowMutations;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.thrift2.generated.TScan;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.thrift2.generated.TTableName;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.util.ConnectionCache;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.thrift.TException;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.slf4j.Logger;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.slf4j.LoggerFactory;<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> * This class is a glue object that connects Thrift RPC calls to the HBase client API primarily<a name="line.97"></a>
-<span class="sourceLineNo">098</span> * defined in the Table interface.<a name="line.98"></a>
-<span class="sourceLineNo">099</span> */<a name="line.99"></a>
-<span class="sourceLineNo">100</span>@InterfaceAudience.Private<a name="line.100"></a>
-<span class="sourceLineNo">101</span>@SuppressWarnings("deprecation")<a name="line.101"></a>
-<span class="sourceLineNo">102</span>public class ThriftHBaseServiceHandler implements THBaseService.Iface {<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  // TODO: Size of pool configuraple<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  private static final Logger LOG = LoggerFactory.getLogger(ThriftHBaseServiceHandler.class);<a name="line.105"></a>
-<span class="sourceLineNo">106</span><a name="line.106"></a>
-<span class="sourceLineNo">107</span>  // nextScannerId and scannerMap are used to manage scanner state<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  // TODO: Cleanup thread for Scanners, Scanner id wrap<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  private final AtomicInteger nextScannerId = new AtomicInteger(0);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  private final Map&lt;Integer, ResultScanner&gt; scannerMap = new ConcurrentHashMap&lt;&gt;();<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>  private final ConnectionCache connectionCache;<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  static final String CLEANUP_INTERVAL = "hbase.thrift.connection.cleanup-interval";<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  static final String MAX_IDLETIME = "hbase.thrift.connection.max-idletime";<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  private static final IOException ioe<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      = new DoNotRetryIOException("Thrift Server is in Read-only mode.");<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  private boolean isReadOnly;<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  public static THBaseService.Iface newInstance(<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      THBaseService.Iface handler, ThriftMetrics metrics) {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    return (THBaseService.Iface) Proxy.newProxyInstance(handler.getClass().getClassLoader(),<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      new Class[] { THBaseService.Iface.class }, new THBaseServiceMetricsProxy(handler, metrics));<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>  private static final class THBaseServiceMetricsProxy implements InvocationHandler {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    private final THBaseService.Iface handler;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    private final ThriftMetrics metrics;<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span>    private THBaseServiceMetricsProxy(THBaseService.Iface handler, ThriftMetrics metrics) {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      this.handler = handler;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      this.metrics = metrics;<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>    @Override<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    public Object invoke(Object proxy, Method m, Object[] args) throws Throwable {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      Object result;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      long start = now();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      try {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>        result = m.invoke(handler, args);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      } catch (InvocationTargetException e) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        metrics.exception(e.getCause());<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        throw e.getTargetException();<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      } catch (Exception e) {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>        metrics.exception(e);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        throw new RuntimeException("unexpected invocation exception: " + e.getMessage());<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      } finally {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        long processTime = now() - start;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>        metrics.incMethodTime(m.getName(), processTime);<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      }<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      return result;<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>  private static class TIOErrorWithCause extends TIOError {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    private Throwable cause;<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>    public TIOErrorWithCause(Throwable cause) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      super();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      this.cause = cause;<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 synchronized Throwable getCause() {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      return cause;<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 boolean equals(Object other) {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      if (super.equals(other) &amp;&amp;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>          other instanceof TIOErrorWithCause) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>        Throwable otherCause = ((TIOErrorWithCause) other).getCause();<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        if (this.getCause() != null) {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>          return otherCause != null &amp;&amp; this.getCause().equals(otherCause);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        } else {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          return otherCause == null;<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>      return false;<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>    @Override<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    public int hashCode() {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      int result = super.hashCode();<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      result = 31 * result + (cause != null ? cause.hashCode() : 0);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      return result;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    }<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>  private static long now() {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    return System.nanoTime();<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>  ThriftHBaseServiceHandler(final Configuration conf,<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      final UserProvider userProvider) throws IOException {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    int cleanInterval = conf.getInt(CLEANUP_INTERVAL, 10 * 1000);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    int maxIdleTime = conf.getInt(MAX_IDLETIME, 10 * 60 * 1000);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    connectionCache = new ConnectionCache(<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      conf, userProvider, cleanInterval, maxIdleTime);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    isReadOnly = conf.getBoolean("hbase.thrift.readonly", false);<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>  private Table getTable(ByteBuffer tableName) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    try {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      return connectionCache.getTable(Bytes.toString(byteBufferToByteArray(tableName)));<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    } catch (IOException ie) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      throw new RuntimeException(ie);<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><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  private RegionLocator getLocator(ByteBuffer tableName) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    try {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      return connectionCache.getRegionLocator(byteBufferToByteArray(tableName));<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    } catch (IOException ie) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      throw new RuntimeException(ie);<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><a name="line.219"></a>
-<span class="sourceLineNo">220</span>  private void closeTable(Table table) throws TIOError {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    try {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      table.close();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    } catch (IOException e) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      throw getTIOError(e);<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>  private TIOError getTIOError(IOException e) {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    TIOError err = new TIOErrorWithCause(e);<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    err.setMessage(e.getMessage());<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    return err;<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>  /**<a name="line.234"></a>
-<span class="sourceLineNo">235</span>   * Assigns a unique ID to the scanner and adds the mapping to an internal HashMap.<a name="line.235"></a>
-<span class="sourceLineNo">236</span>   * @param scanner to add<a name="line.236"></a>
-<span class="sourceLineNo">237</span>   * @return Id for this Scanner<a name="line.237"></a>
-<span class="sourceLineNo">238</span>   */<a name="line.238"></a>
-<span class="sourceLineNo">239</span>  private int addScanner(ResultScanner scanner) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    int id = nextScannerId.getAndIncrement();<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    scannerMap.put(id, scanner);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    return id;<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>   * Returns the Scanner associated with the specified Id.<a name="line.246"></a>
-<span class="sourceLineNo">247</span>   * @param id of the Scanner to get<a name="line.247"></a>
-<span class="sourceLineNo">248</span>   * @return a Scanner, or null if the Id is invalid<a name="line.248"></a>
-<span class="sourceLineNo">249</span>   */<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  private ResultScanner getScanner(int id) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    return scannerMap.get(id);<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>  void setEffectiveUser(String effectiveUser) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    connectionCache.setEffectiveUser(effectiveUser);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  /**<a name="line.258"></a>
-<span class="sourceLineNo">259</span>   * Removes the scanner associated with the specified ID from the internal HashMap.<a name="line.259"></a>
-<span class="sourceLineNo">260</span>   * @param id of the Scanner to remove<a name="line.260"></a>
-<span class="sourceLineNo">261</span>   * @return the removed Scanner, or &lt;code&gt;null&lt;/code&gt; if the Id is invalid<a name="line.261"></a>
-<span class="sourceLineNo">262</span>   */<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  protected ResultScanner removeScanner(int id) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    return scannerMap.remove(id);<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>  @Override<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  public boolean exists(ByteBuffer table, TGet get) throws TIOError, TException {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    Table htable = getTable(table);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    try {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      return htable.exists(getFromThrift(get));<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    } catch (IOException e) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      throw getTIOError(e);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    } finally {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      closeTable(htable);<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><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  @Override<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  public List&lt;Boolean&gt; existsAll(ByteBuffer table, List&lt;TGet&gt; gets) throws TIOError, TException {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    Table htable = getTable(table);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    try {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      boolean[] exists = htable.existsAll(getsFromThrift(gets));<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      List&lt;Boolean&gt; result = new ArrayList&lt;&gt;(exists.length);<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      for (boolean exist : exists) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        result.add(exist);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      }<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      return result;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    } catch (IOException e) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      throw getTIOError(e);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    } finally {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      closeTable(htable);<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><a name="line.295"></a>
-<span class="sourceLineNo">296</span>  @Override<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public TResult get(ByteBuffer table, TGet get) throws TIOError, TException {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    Table htable = getTable(table);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    try {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      return resultFromHBase(htable.get(getFromThrift(get)));<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    } catch (IOException e) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      throw getTIOError(e);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    } finally {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      closeTable(htable);<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>  @Override<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public List&lt;TResult&gt; getMultiple(ByteBuffer table, List&lt;TGet&gt; gets) throws TIOError, TException {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    Table htable = getTable(table);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    try {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      return resultsFromHBase(htable.get(getsFromThrift(gets)));<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    } catch (IOException e) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      throw getTIOError(e);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    } finally {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      closeTable(htable);<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">320</span>  @Override<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public void put(ByteBuffer table, TPut put) throws TIOError, TException {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    checkReadOnlyMode();<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    Table htable = getTable(table);<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    try {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      htable.put(putFromThrift(put));<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    } catch (IOException e) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      throw getTIOError(e);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    } finally {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      closeTable(htable);<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><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  @Override<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  public boolean checkAndPut(ByteBuffer table, ByteBuffer row, ByteBuffer family,<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      ByteBuffer qualifier, ByteBuffer value, TPut put) throws TIOError, TException {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    checkReadOnlyMode();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    Table htable = getTable(table);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    try {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      Table.CheckAndMutateBuilder builder = htable.checkAndMutate(byteBufferToByteArray(row),<a name="line.339"></a>
-<span class="sourceLineNo">340</span>          byteBufferToByteArray(family)).qualifier(byteBufferToByteArray(qualifier));<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      if (value == null) {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        return builder.ifNotExists().thenPut(putFromThrift(put));<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      } else {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        return builder.ifEquals(byteBufferToByteArray(value)).thenPut(putFromThrift(put));<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      }<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    } catch (IOException e) {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      throw getTIOError(e);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    } finally {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      closeTable(htable);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    }<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>  @Override<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  public void putMultiple(ByteBuffer table, List&lt;TPut&gt; puts) throws TIOError, TException {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    checkReadOnlyMode();<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    Table htable = getTable(table);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    try {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      htable.put(putsFromThrift(puts));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    } catch (IOException e) {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      throw getTIOError(e);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    } finally {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      closeTable(htable);<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>  @Override<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  public void deleteSingle(ByteBuffer table, TDelete deleteSingle) throws TIOError, TException {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    checkReadOnlyMode();<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    Table htable = getTable(table);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    try {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      htable.delete(deleteFromThrift(deleteSingle));<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    } catch (IOException e) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      throw getTIOError(e);<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    } finally {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      closeTable(htable);<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><a name="line.378"></a>
-<span class="sourceLineNo">379</span>  @Override<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  public List&lt;TDelete&gt; deleteMultiple(ByteBuffer table, List&lt;TDelete&gt; deletes) throws TIOError,<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      TException {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    checkReadOnlyMode();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    Table htable = getTable(table);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    try {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      htable.delete(deletesFromThrift(deletes));<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    } catch (IOException e) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      throw getTIOError(e);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    } finally {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      closeTable(htable);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    }<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    return Collections.emptyList();<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>  @Override<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  public boolean checkAndMutate(ByteBuffer table, ByteBuffer row, ByteBuffer family,<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      ByteBuffer qualifier, TCompareOp compareOp, ByteBuffer value, TRowMutations rowMutations)<a name="line.396"></a>
-<span class="sourceLineNo">397</span>          throws TIOError, TException {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    checkReadOnlyMode();<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    try (final Table htable = getTable(table)) {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      return htable.checkAndMutate(byteBufferToByteArray(row), byteBufferToByteArray(family))<a name="line.400"></a>
-<span class="sourceLineNo">401</span>          .qualifier(byteBufferToByteArray(qualifier))<a name="line.401"></a>
-<span class="sourceLineNo">402</span>          .ifMatches(compareOpFromThrift(compareOp), byteBufferToByteArray(value))<a name="line.402"></a>
-<span class="sourceLineNo">403</span>          .thenMutate(rowMutationsFromThrift(rowMutations));<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    } catch (IOException e) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      throw getTIOError(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>
-<span class="sourceLineNo">409</span>  @Override<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  public boolean checkAndDelete(ByteBuffer table, ByteBuffer row, ByteBuffer family,<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      ByteBuffer qualifier, ByteBuffer value, TDelete deleteSingle) throws TIOError, TException {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    checkReadOnlyMode();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    Table htable = getTable(table);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    try {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      Table.CheckAndMutateBuilder mutateBuilder =<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          htable.checkAndMutate(byteBufferToByteArray(row), byteBufferToByteArray(family))<a name="line.416"></a>
-<span class="sourceLineNo">417</span>              .qualifier(byteBufferToByteArray(qualifier));<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      if (value == null) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        return mutateBuilder.ifNotExists().thenDelete(deleteFromThrift(deleteSingle));<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      } else {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        return mutateBuilder.ifEquals(byteBufferToByteArray(value))<a name="line.421"></a>
-<span class="sourceLineNo">422</span>            .thenDelete(deleteFromThrift(deleteSingle));<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      }<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    } catch (IOException e) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      throw getTIOError(e);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    } finally {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      closeTable(htable);<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>  @Override<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  public TResult increment(ByteBuffer table, TIncrement increment) throws TIOError, TException {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    checkReadOnlyMode();<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    Table htable = getTable(table);<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    try {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      return resultFromHBase(htable.increment(incrementFromThrift(increment)));<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    } catch (IOException e) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      throw getTIOError(e);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    } finally {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      closeTable(htable);<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>  @Override<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  public TResult append(ByteBuffer table, TAppend append) throws TIOError, TException {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    checkReadOnlyMode();<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    Table htable = getTable(table);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    try {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      return resultFromHBase(htable.append(appendFromThrift(append)));<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    } catch (IOException e) {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      throw getTIOError(e);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    } finally {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      closeTable(htable);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>  }<a name="line.455"></a>
-<span class="sourceLineNo">456</span><a name="line.456"></a>
-<span class="sourceLineNo">457</span>  @Override<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  public int openScanner(ByteBuffer table, TScan scan) throws TIOError, TException {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    Table htable = getTable(table);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    ResultScanner resultScanner = null;<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    try {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      resultScanner = htable.getScanner(scanFromThrift(scan));<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    } catch (IOException e) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      throw getTIOError(e);<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    } finally {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      closeTable(htable);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    return addScanner(resultScanner);<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>  @Override<a name="line.471"></a>
-<span class="sourceLineNo">472</span>  public List&lt;TResult&gt; getScannerRows(int scannerId, int numRows) throws TIOError,<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      TIllegalArgument, TException {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    ResultScanner scanner = getScanner(scannerId);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    if (scanner == null) {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      TIllegalArgument ex = new TIllegalArgument();<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      ex.setMessage("Invalid scanner Id");<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      throw ex;<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    }<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    try {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      connectionCache.updateConnectionAccessTime();<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      return resultsFromHBase(scanner.next(numRows));<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    } catch (IOException e) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      throw getTIOError(e);<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><a name="line.487"></a>
-<span class="sourceLineNo">488</span>  @Override<a name="line.488"></a>
-<span class="sourceLineNo">489</span>  public List&lt;TResult&gt; getScannerResults(ByteBuffer table, TScan scan, int numRows)<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      throws TIOError, TException {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    Table htable = getTable(table);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    List&lt;TResult&gt; results = null;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    ResultScanner scanner = null;<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    try {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      scanner = htable.getScanner(scanFromThrift(scan));<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      results = resultsFromHBase(scanner.next(numRows));<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    } catch (IOException e) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      throw getTIOError(e);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    } finally {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      if (scanner != null) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>        scanner.close();<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      }<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      closeTable(htable);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    }<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    return results;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>  }<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>  @Override<a name="line.510"></a>
-<span class="sourceLineNo">511</span>  public void closeScanner(int scannerId) throws TIOError, TIllegalArgument, TException {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    LOG.debug("scannerClose: id=" + scannerId);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    ResultScanner scanner = getScanner(scannerId);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    if (scanner == null) {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      String message = "scanner ID is invalid";<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      LOG.warn(message);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      TIllegalArgument ex = new TIllegalArgument();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      ex.setMessage("Invalid scanner Id");<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      throw ex;<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    }<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    scanner.close();<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    removeScanner(scannerId);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>  @Override<a name="line.525"></a>
-<span class="sourceLineNo">526</span>  public void mutateRow(ByteBuffer table, TRowMutations rowMutations) throws TIOError, TException {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    checkReadOnlyMode();<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    Table htable = getTable(table);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    try {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      htable.mutateRow(rowMutationsFromThrift(rowMutations));<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    } catch (IOException e) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      throw getTIOError(e);<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    } finally {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      closeTable(htable);<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    }<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>  @Override<a name="line.538"></a>
-<span class="sourceLineNo">539</span>  public List&lt;THRegionLocation&gt; getAllRegionLocations(ByteBuffer table)<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      throws TIOError, TException {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>    RegionLocator locator = null;<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    try {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      locator = getLocator(table);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>      return ThriftUtilities.regionLocationsFromHBase(locator.getAllRegionLocations());<a name="line.544"></a>
-<span class="sourceLineNo">545</span><a name="line.545"></a>
-<span class="sourceLineNo">546</span>    } catch (IOException e) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      throw getTIOError(e);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    } finally {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      if (locator != null) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        try {<a name="line.550"></a>
-<span class="sourceLineNo">551</span>          locator.close();<a name="line.551"></a>
-<span class="sourceLineNo">552</span>        } catch (IOException e) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>          LOG.warn("Couldn't close the locator.", e);<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>    }<a name="line.556"></a>
-<span class="sourceLineNo">557</span>  }<a name="line.557"></a>
-<span class="sourceLineNo">558</span><a name="line.558"></a>
-<span class="sourceLineNo">559</span>  @Override<a name="line.559"></a>
-<span class="sourceLineNo">560</span>  public THRegionLocation getRegionLocation(ByteBuffer table, ByteBuffer row, boolean reload)<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      throws TIOError, TException {<a name="line.561"></a>
-<span class="sourceLineNo">562</span><a name="line.562"></a>
-<span class="sourceLineNo">563</span>    RegionLocator locator = null;<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    try {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      locator = getLocator(table);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      byte[] rowBytes = byteBufferToByteArray(row);<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      HRegionLocation hrl = locator.getRegionLocation(rowBytes, reload);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      return ThriftUtilities.regionLocationFromHBase(hrl);<a name="line.568"></a>
-<span class="sourceLineNo">569</span><a name="line.569"></a>
-<span class="sourceLineNo">570</span>    } catch (IOException e) {<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      throw getTIOError(e);<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    } finally {<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      if (locator != null) {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>        try {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>          locator.close();<a name="line.575"></a>
-<span class="sourceLineNo">576</span>        } catch (IOException e) {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>          LOG.warn("Couldn't close the locator.", e);<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>  }<a name="line.581"></a>
-<span class="sourceLineNo">582</span><a name="line.582"></a>
-<span class="sourceLineNo">583</span>  private void checkReadOnlyMode() throws TIOError {<a name="line.583"></a>
-<span class="sourceLineNo">584</span>    if (isReadOnly()) {<a name="line.584"></a>
-<span class="sourceLineNo">585</span>      throw getTIOError(ioe);<a name="line.585"></a>
-<span class="sourceLineNo">586</span>    }<a name="line.586"></a>
-<span class="sourceLineNo">587</span>  }<a name="line.587"></a>
-<span class="sourceLineNo">588</span><a name="line.588"></a>
-<span class="sourceLineNo">589</span>  private boolean isReadOnly() {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    return isReadOnly;<a name="line.590"></a>
-<span class="sourceLineNo">591</span>  }<a name="line.591"></a>
-<span class="sourceLineNo">592</span><a name="line.592"></a>
-<span class="sourceLineNo">593</span>  @Override<a name="line.593"></a>
-<span class="sourceLineNo">594</span>  public TTableDescriptor getTableDescriptor(TTableName table) throws TIOError, TException {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    try {<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      TableName tableName = ThriftUtilities.tableNameFromThrift(table);<a name="line.596"></a>
-<span class="sourceLineNo">597</span>      TableDescriptor tableDescriptor = connectionCache.getAdmin().getDescriptor(tableName);<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      return tableDescriptorFromHBase(tableDescriptor);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    } catch (IOException e) {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      throw getTIOError(e);<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>  @Override<a name="line.604"></a>
-<span class="sourceLineNo">605</span>  public List&lt;TTableDescriptor&gt; getTableDescriptors(List&lt;TTableName&gt; tables)<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      throws TIOError, TException {<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    try {<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      List&lt;TableName&gt; tableNames = ThriftUtilities.tableNamesFromThrift(tables);<a name="line.608"></a>
-<span class="sourceLineNo">609</span>      List&lt;TableDescriptor&gt; tableDescriptors = connectionCache.getAdmin()<a name="line.609"></a>
-<span class="sourceLineNo">610</span>          .listTableDescriptors(tableNames);<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      return tableDescriptorsFromHBase(tableDescriptors);<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    } catch (IOException e) {<a name="line.612"></a>
-<span class="sourceLineNo">613</span>      throw getTIOError(e);<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    }<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>  @Override<a name="line.617"></a>
-<span class="sourceLineNo">618</span>  public boolean tableExists(TTableName tTableName) throws TIOError, TException {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    try {<a name="line.619"></a>
-<span class="sourceLineNo">620</span>      TableName tableName = tableNameFromThrift(tTableName);<a name="line.620"></a>
-<span class="sourceLineNo">621</span>      return connectionCache.getAdmin().tableExists(tableName);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    } catch (IOException e) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      throw getTIOError(e);<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    }<a name="line.624"></a>
-<span class="sourceLineNo">625</span>  }<a name="line.625"></a>
-<span class="sourceLineNo">626</span><a name="line.626"></a>
-<span class="sourceLineNo">627</span>  @Override<a name="line.627"></a>
-<span class="sourceLineNo">628</span>  public List&lt;TTableDescriptor&gt; getTableDescriptorsByPattern(String regex, boolean includeSysTables)<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      throws TIOError, TException {<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    try {<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      Pattern pattern = Pattern.compile(regex);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      List&lt;TableDescriptor&gt; tableDescriptors = connectionCache.getAdmin()<a name="line.632"></a>
-<span class="sourceLineNo">633</span>          .listTableDescriptors(pattern, includeSysTables);<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      return tableDescriptorsFromHBase(tableDescriptors);<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    } catch (IOException e) {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      throw getTIOError(e);<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    }<a name="line.637"></a>
-<span class="sourceLineNo">638</span>  }<a name="line.638"></a>
-<span class="sourceLineNo">639</span><a name="line.639"></a>
-<span class="sourceLineNo">640</span>  @Override<a name="line.640"></a>
-<span class="sourceLineNo">641</span>  public List&lt;TTableDescriptor&gt; getTableDescriptorsByNamespace(String name)<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      throws TIOError, TException {<a name="line.642"></a>
-<span class="sourceLineNo">643</span>    try {<a name="line.643"></a>
-<span class="sourceLineNo">644</span>      List&lt;TableDescriptor&gt; descriptors = connectionCache.getAdmin()<a name="line.644"></a>
-<span class="sourceLineNo">645</span>          .listTableDescriptorsByNamespace(Bytes.toBytes(name));<a name="line.645"></a>
-<span class="sourceLineNo">646</span>      return tableDescriptorsFromHBase(descriptors);<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    } catch (IOException e) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>      throw getTIOError(e);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    }<a name="line.649"></a>
-<span class="sourceLineNo">650</span>  }<a name="line.650"></a>
-<span class="sourceLineNo">651</span><a name="line.651"></a>
-<span class="sourceLineNo">652</span>  @Override<a name="line.652"></a>
-<span class="sourceLineNo">653</span>  public List&lt;TTableName&gt; getTableNamesByPattern(String regex, boolean includeSysTables)<a name="line.653"></a>
-<span class="sourceLineNo">654</span>      throws TIOError, TException {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    try {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      Pattern pattern = Pattern.compile(regex);<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      TableName[] tableNames = connectionCache.getAdmin()<a name="line.657"></a>
-<span class="sourceLineNo">658</span>          .listTableNames(pattern, includeSysTables);<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      return tableNamesFromHBase(tableNames);<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    } catch (IOException e) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      throw getTIOError(e);<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    }<a name="line.662"></a>
-<span class="sourceLineNo">663</span>  }<a name="line.663"></a>
-<span class="sourceLineNo">664</span><a name="line.664"></a>
-<span class="sourceLineNo">665</span>  @Override<a name="line.665"></a>
-<span class="sourceLineNo">666</span>  public List&lt;TTableName&gt; getTableNamesByNamespace(String name) throws TIOError, TException {<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    try {<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      TableName[] tableNames = connectionCache.getAdmin().listTableNamesByNamespace(name);<a name="line.668"></a>
-<span class="sourceLineNo">669</span>      return tableNamesFromHBase(tableNames);<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    } catch (IOException e) {<a name="line.670"></a>
-<span class="sourceLineNo">671</span>      throw getTIOError(e);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    }<a name="line.672"></a>
-<span class="sourceLineNo">673</span>  }<a name="line.673"></a>
-<span class="sourceLineNo">674</span><a name="line.674"></a>
-<span class="sourceLineNo">675</span>  @Override<a name="line.675"></a>
-<span class="sourceLineNo">676</span>  public void createTable(TTableDescriptor desc, List&lt;ByteBuffer&gt; splitKeys)<a name="line.676"></a>
-<span class="sourceLineNo">677</span>      throws TIOError, TException {<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    try {<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      TableDescriptor descriptor = tableDescriptorFromThrift(desc);<a name="line.679"></a>
-<span class="sourceLineNo">680</span>      byte[][] split = splitKeyFromThrift(splitKeys);<a name="line.680"></a>
-<span class="sourceLineNo">681</span>      connectionCache.getAdmin().createTable(descriptor, split);<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    } catch (IOException e) {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>      throw getTIOError(e);<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><a name="line.686"></a>
-<span class="sourceLineNo">687</span>  @Override<a name="line.687"></a>
-<span class="sourceLineNo">688</span>  public void deleteTable(TTableName tableName) throws TIOError, TException {<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    try {<a name="line.689"></a>
-<span class="sourceLineNo">690</span>      TableName table = tableNameFromThrift(tableName);<a name="line.690"></a>
-<span class="sourceLineNo">691</span>      connectionCache.getAdmin().deleteTable(table);<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    } catch (IOException e) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>      throw getTIOError(e);<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    }<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>  @Override<a name="line.697"></a>
-<span class="sourceLineNo">698</span>  public void truncateTable(TTableName tableName, boolean preserveSplits)<a name="line.698"></a>
-<span class="sourceLineNo">699</span>      throws TIOError, TException {<a name="line.699"></a>
-<span class="sourceLineNo">700</span>    try {<a name="line.700"></a>
-<span class="sourceLineNo">701</span>      TableName table = tableNameFromThrift(tableName);<a name="line.701"></a>
-<span class="sourceLineNo">702</span>      connectionCache.getAdmin().truncateTable(table, preserveSplits);<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    } catch (IOException e) {<a name="line.703"></a>
-<span class="sourceLineNo">704</span>      throw getTIOError(e);<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    }<a name="line.705"></a>
-<span class="sourceLineNo">706</span>  }<a name="line.706"></a>
-<span class="sourceLineNo">707</span><a name="line.707"></a>
-<span class="sourceLineNo">708</span>  @Override<a name="line.708"></a>
-<span class="sourceLineNo">709</span>  public void enableTable(TTableName tableName) throws TIOError, TException {<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    try {<a name="line.710"></a>
-<span class="sourceLineNo">711</span>      TableName table = tableNameFromThrift(tableName);<a name="line.711"></a>
-<span class="sourceLineNo">712</span>      connectionCache.getAdmin().enableTable(table);<a name="line.712"></a>
-<span class="sourceLineNo">713</span>    } catch (IOException e) {<a name="line.713"></a>
-<span class="sourceLineNo">714</span>      throw getTIOError(e);<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><a name="line.717"></a>
-<span class="sourceLineNo">718</span>  @Override<a name="line.718"></a>
-<span class="sourceLineNo">719</span>  public void disableTable(TTableName tableName) throws TIOError, TException {<a name="line.719"></a>
-<span class="sourceLineNo">720</span>    try {<a name="line.720"></a>
-<span class="sourceLineNo">721</span>      TableName table = tableNameFromThrift(tableName);<a name="line.721"></a>
-<span class="sourceLineNo">722</span>      connectionCache.getAdmin().disableTable(table);<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    } catch (IOException e) {<a name="line.723"></a>
-<span class="sourceLineNo">724</span>      throw getTIOError(e);<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    }<a name="line.725"></a>
-<span class="sourceLineNo">726</span>  }<a name="line.726"></a>
-<span class="sourceLineNo">727</span><a name="line.727"></a>
-<span class="sourceLineNo">728</span>  @Override<a name="line.728"></a>
-<span class="sourceLineNo">729</span>  public boolean isTableEnabled(TTableName tableName) throws TIOError, TException {<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    try {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      TableName table = tableNameFromThrift(tableName);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>      return connectionCache.getAdmin().isTableEnabled(table);<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    } catch (IOException e) {<a name="line.733"></a>
-<span class="sourceLineNo">734</span>      throw getTIOError(e);<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    }<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  }<a name="line.736"></a>
-<span class="sourceLineNo">737</span><a name="line.737"></a>
-<span class="sourceLineNo">738</span>  @Override<a name="line.738"></a>
-<span class="sourceLineNo">739</span>  public boolean isTableDisabled(TTableName tableName) throws TIOError, TException {<a name="line.739"></a>
-<span class="sourceLineNo">740</span>    try {<a name="line.740"></a>
-<span class="sourceLineNo">741</span>      TableName table = tableNameFromThrift(tableName);<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      return connectionCache.getAdmin().isTableDisabled(table);<a name="line.742"></a>
-<span class="sourceLineNo">743</span>    } catch (IOException e) {<a name="line.743"></a>
-<span class="sourceLineNo">744</span>      throw getTIOError(e);<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    }<a name="line.745"></a>
-<span class="sourceLineNo">746</span>  }<a name="line.746"></a>
-<span class="sourceLineNo">747</span><a name="line.747"></a>
-<span class="sourceLineNo">748</span>  @Override<a name="line.748"></a>
-<span class="sourceLineNo">749</span>  public boolean isTableAvailable(TTableName tableName) throws TIOError, TException {<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    try {<a name="line.750"></a>
-<span class="sourceLineNo">751</span>      TableName table = tableNameFromThrift(tableName);<a name="line.751"></a>
-<span class="sourceLineNo">752</span>      return connectionCache.getAdmin().isTableAvailable(table);<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    } catch (IOException e) {<a name="line.753"></a>
-<span class="sourceLineNo">754</span>      throw getTIOError(e);<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><a name="line.757"></a>
-<span class="sourceLineNo">758</span>  @Override<a name="line.758"></a>
-<span class="sourceLineNo">759</span>  public boolean isTableAvailableWithSplit(TTableName tableName, List&lt;ByteBuffer&gt; splitKeys)<a name="line.759"></a>
-<span class="sourceLineNo">760</span>      throws TIOError, TException {<a name="line.760"></a>
-<span class="sourceLineNo">761</span>    try {<a name="line.761"></a>
-<span class="sourceLineNo">762</span>      TableName table = tableNameFromThrift(tableName);<a name="line.762"></a>
-<span class="sourceLineNo">763</span>      byte[][] split = splitKeyFromThrift(splitKeys);<a name="line.763"></a>
-<span class="sourceLineNo">764</span>      return connectionCache.getAdmin().isTableAvailable(table, split);<a name="line.764"></a>
-<span class="sourceLineNo">765</span>    } catch (IOException e) {<a name="line.765"></a>
-<span class="sourceLineNo">766</span>      throw getTIOError(e);<a name="line.766"></a>
-<span class="sourceLineNo">767</span>    }<a name="line.767"></a>
-<span class="sourceLineNo">768</span>  }<a name="line.768"></a>
-<span class="sourceLineNo">769</span><a name="line.769"></a>
-<span class="sourceLineNo">770</span>  @Override<a name="line.770"></a>
-<span class="sourceLineNo">771</span>  public void addColumnFamily(TTableName tableName, TColumnFamilyDescriptor column)<a name="line.771"></a>
-<span class="sourceLineNo">772</span>      throws TIOError, TException {<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    try {<a name="line.773"></a>
-<span class="sourceLineNo">774</span>      TableName table = tableNameFromThrift(tableName);<a name="line.774"></a>
-<span class="sourceLineNo">775</span>      ColumnFamilyDescriptor columnFamilyDescriptor = columnFamilyDescriptorFromThrift(column);<a name="line.775"></a>
-<span class="sourceLineNo">776</span>      connectionCache.getAdmin().addColumnFamily(table, columnFamilyDescriptor);<a name="line.776"></a>
-<span class="sourceLineNo">777</span>    } catch (IOException e) {<a name="line.777"></a>
-<span class="sourceLineNo">778</span>      throw getTIOError(e);<a name="line.778"></a>
-<span class="sourceLineNo">779</span>    }<a name="line.779"></a>
-<span class="sourceLineNo">780</span>  }<a name="line.780"></a>
-<span class="sourceLineNo">781</span><a name="line.781"></a>
-<span class="sourceLineNo">782</span>  @Override<a name="line.782"></a>
-<span class="sourceLineNo">783</span>  public void deleteColumnFamily(TTableName tableName, ByteBuffer column)<a name="line.783"></a>
-<span class="sourceLineNo">784</span>      throws TIOError, TException {<a name="line.784"></a>
-<span class="sourceLineNo">785</span>    try {<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      TableName table = tableNameFromThrift(tableName);<a name="line.786"></a>
-<span class="sourceLineNo">787</span>      connectionCache.getAdmin().deleteColumnFamily(table, column.array());<a name="line.787"></a>
-<span class="sourceLineNo">788</span>    } catch (IOException e) {<a name="line.788"></a>
-<span class="sourceLineNo">789</span>      throw getTIOError(e);<a name="line.789"></a>
-<span class="sourceLineNo">790</span>    }<a name="line.790"></a>
-<span class="sourceLineNo">791</span>  }<a name="line.791"></a>
-<span class="sourceLineNo">792</span><a name="line.792"></a>
-<span class="sourceLineNo">793</span>  @Override<a name="line.793"></a>
-<span class="sourceLineNo">794</span>  public void modifyColumnFamily(TTableName tableName, TColumnFamilyDescriptor column)<a name="line.794"></a>
-<span class="sourceLineNo">795</span>      throws TIOError, TException {<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    try {<a name="line.796"></a>
-<span class="sourceLineNo">797</span>      TableName table = tableNameFromThrift(tableName);<a name="line.797"></a>
-<span class="sourceLineNo">798</span>      ColumnFamilyDescriptor columnFamilyDescriptor = columnFamilyDescriptorFromThrift(column);<a name="line.798"></a>
-<span class="sourceLineNo">799</span>      connectionCache.getAdmin().modifyColumnFamily(table, columnFamilyDescriptor);<a name="line.799"></a>
-<span class="sourceLineNo">800</span>    } catch (IOException e) {<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      throw getTIOError(e);<a name="line.801"></a>
-<span class="sourceLineNo">802</span>    }<a name="line.802"></a>
-<span class="sourceLineNo">803</span>  }<a name="line.803"></a>
-<span class="sourceLineNo">804</span><a name="line.804"></a>
-<span class="sourceLineNo">805</span>  @Override<a name="line.805"></a>
-<span class="sourceLineNo">806</span>  public void modifyTable(TTableDescriptor desc) throws TIOError, TException {<a name="line.806"></a>
-<span class="sourceLineNo">807</span>    try {<a name="line.807"></a>
-<span class="sourceLineNo">808</span>      TableDescriptor descriptor = tableDescriptorFromThrift(desc);<a name="line.808"></a>
-<span class="sourceLineNo">809</span>      connectionCache.getAdmin().modifyTable(descriptor);<a name="line.809"></a>
-<span class="sourceLineNo">810</span>    } catch (IOException e) {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>      throw getTIOError(e);<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    }<a name="line.812"></a>
-<span class="sourceLineNo">813</span>  }<a name="line.813"></a>
-<span class="sourceLineNo">814</span><a name="line.814"></a>
-<span class="sourceLineNo">815</span>  @Override<a name="line.815"></a>
-<span class="sourceLineNo">816</span>  public void createNamespace(TNamespaceDescriptor namespaceDesc) throws TIOError, TException {<a name="line.816"></a>
-<span class="sourceLineNo">817</span>    try {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      NamespaceDescriptor descriptor = namespaceDescriptorFromThrift(namespaceDesc);<a name="line.818"></a>
-<span class="sourceLineNo">819</span>      connectionCache.getAdmin().createNamespace(descriptor);<a name="line.819"></a>
-<span class="sourceLineNo">820</span>    } catch (IOException e) {<a name="line.820"></a>
-<span class="sourceLineNo">821</span>      throw getTIOError(e);<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    }<a name="line.822"></a>
-<span class="sourceLineNo">823</span>  }<a name="line.823"></a>
-<span class="sourceLineNo">824</span><a name="line.824"></a>
-<span class="sourceLineNo">825</span>  @Override<a name="line.825"></a>
-<span class="sourceLineNo">826</span>  public void modifyNamespace(TNamespaceDescriptor namespaceDesc) throws TIOError, TException {<a name="line.826"></a>
-<span class="sourceLineNo">827</span>    try {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      NamespaceDescriptor descriptor = namespaceDescriptorFromThrift(namespaceDesc);<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      connectionCache.getAdmin().modifyNamespace(descriptor);<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    } catch (IOException e) {<a name="line.830"></a>
-<span class="sourceLineNo">831</span>      throw getTIOError(e);<a name="line.831"></a>
-<span class="sourceLineNo">832</span>    }<a name="line.832"></a>
-<span class="sourceLineNo">833</span>  }<a name="line.833"></a>
-<span class="sourceLineNo">834</span><a name="line.834"></a>
-<span class="sourceLineNo">835</span>  @Override<a name="line.835"></a>
-<span class="sourceLineNo">836</span>  public void deleteNamespace(String name) throws TIOError, TException {<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    try {<a name="line.837"></a>
-<span class="sourceLineNo">838</span>      connectionCache.getAdmin().deleteNamespace(name);<a name="line.838"></a>
-<span class="sourceLineNo">839</span>    } catch (IOException e) {<a name="line.839"></a>
-<span class="sourceLineNo">840</span>      throw getTIOError(e);<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    }<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>  @Override<a name="line.844"></a>
-<span class="sourceLineNo">845</span>  public TNamespaceDescriptor getNamespaceDescriptor(String name) throws TIOError, TException {<a name="line.845"></a>
-<span class="sourceLineNo">846</span>    try {<a name="line.846"></a>
-<span class="sourceLineNo">847</span>      NamespaceDescriptor descriptor = connectionCache.getAdmin().getNamespaceDescriptor(name);<a name="line.847"></a>
-<span class="sourceLineNo">848</span>      return namespaceDescriptorFromHBase(descriptor);<a name="line.848"></a>
-<span class="sourceLineNo">849</span>    } catch (IOException e) {<a name="line.849"></a>
-<span class="sourceLineNo">850</span>      throw getTIOError(e);<a name="line.850"></a>
-<span class="sourceLineNo">851</span>    }<a name="line.851"></a>
-<span class="sourceLineNo">852</span>  }<a name="line.852"></a>
-<span class="sourceLineNo">853</span><a name="line.853"></a>
-<span class="sourceLineNo">854</span>  @Override<a name="line.854"></a>
-<span class="sourceLineNo">855</span>  public List&lt;TNamespaceDescriptor&gt; listNamespaceDescriptors() throws TIOError, TException {<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    try {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      NamespaceDescriptor[] descriptors = connectionCache.getAdmin().listNamespaceDescriptors();<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      return namespaceDescriptorsFromHBase(descriptors);<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    } catch (IOException e) {<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      throw getTIOError(e);<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    }<a name="line.861"></a>
-<span class="sourceLineNo">862</span>  }<a name="line.862"></a>
-<span class="sourceLineNo">863</span>}<a name="line.863"></a>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</pre>
-</div>
-</body>
-</html>