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 > 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 < 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<Principal> 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<KerberosTicket> 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<CloseableHttpClient>() {<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<AuthSchemeProvider> authRegistry = RegistryBuilder.<AuthSchemeProvider>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 > 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 < 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<Principal> 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<KerberosTicket> 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<CloseableHttpClient>() {<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<AuthSchemeProvider> authRegistry = RegistryBuilder.<AuthSchemeProvider>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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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"> </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> </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> </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> </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> </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> </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"> </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 c,
+ <a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> userProvider)</code> </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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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[] 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> tableName)</code> </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> metrics)</code> </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> effectiveUser)</code> </td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!-- -->
+</a>
+<h3>Methods inherited from class 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 <a href="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 <a href="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 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 <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 <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 <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#line.46">HBaseServiceHandler</a>(org.apache.hadoop.conf.Configuration c,
+ <a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> 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 void <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> metrics)</pre>
+</li>
+</ul>
+<a name="setEffectiveUser-java.lang.String-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setEffectiveUser</h4>
+<pre>public void <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> effectiveUser)</pre>
+</li>
+</ul>
+<a name="getAdmin--">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getAdmin</h4>
+<pre>protected <a href="../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a> <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 <a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html#line.80">getTable</a>(byte[] 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 <a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a> <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> 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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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 © 2007–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 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 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 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 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 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 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 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 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 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> </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> </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> </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 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> handler,
<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics,
org.apache.hadoop.conf.Configuration conf)</code> </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 conf)</code> </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 handler,
+ <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics,
+ org.apache.hadoop.conf.Configuration conf)</code> </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> </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 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 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 <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 <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 <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 <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#line.54">HbaseHandlerMetricsProxy</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface handler,
+<pre>private <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> handler,
<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics,
org.apache.hadoop.conf.Configuration 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 org.apache.hadoop.hbase.thrift.generated.Hbase.Iface <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#line.45">newInstance</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface handler,
+<pre>public static org.apache.hadoop.hbase.thrift.generated.Hbase.Iface <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#line.41">newInstance</a>(org.apache.hadoop.hbase.thrift.generated.Hbase.Iface handler,
<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics,
org.apache.hadoop.conf.Configuration 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 org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#line.51">newInstance</a>(org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface handler,
+ <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics,
+ org.apache.hadoop.conf.Configuration 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 <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.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> proxy,
+<pre>public <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.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> 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> 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>[] 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 long <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.html#line.81">now</a>()</pre>
+<pre>private static long <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 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 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 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 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 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 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 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 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 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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li><a href="#enum.constant.summary">Enum Constants</a> | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#enum.constant.detail">Enum Constants</a> | </li>
+<li><a href="#field.detail">Field</a> | </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><<a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a>></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><<a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a>></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><<a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a>></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"> </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> </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> </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> </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> </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"> </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> </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> </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> </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> </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> </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><? extends org.apache.thrift.server.TServer></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html#serverClass">serverClass</a></span></code> </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"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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> </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> </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> </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 conf)</code> </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> </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><<a href="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#serversThatCannotSpecifyBindIP--">serversThatCannotSpecifyBindIP</a></span>()</code> </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 cmd,
+ org.apache.hadoop.conf.Configuration conf)</code> </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> </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> </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> 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 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 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 <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 <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 <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 <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 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 <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 <a href="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 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 <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><? extends org.apache.thrift.server.TServer> <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 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 <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.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())
+ 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 <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.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> 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 <a href="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.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> in class <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><<a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ImplType</a>></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 <a href="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.72">getOption</a>()</pre>
+</li>
+</ul>
+<a name="isAlwaysFramed--">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isAlwaysFramed</h4>
+<pre>public boolean <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 <a href="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.80">getDescription</a>()</pre>
+</li>
+</ul>
+<a name="createOptionGroup--">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createOptionGroup</h4>
+<pre>static org.apache.hbase.thirdparty.org.apache.commons.cli.OptionGroup <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 <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.100">getServerImpl</a>(org.apache.hadoop.conf.Configuration 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ImplType.html#line.110">setServerImpl</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine cmd,
+ org.apache.hadoop.conf.Configuration conf)</pre>
+</li>
+</ul>
+<a name="simpleClassName--">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>simpleClassName</h4>
+<pre>public <a href="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.130">simpleClassName</a>()</pre>
+</li>
+</ul>
+<a name="serversThatCannotSpecifyBindIP--">
+<!-- -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>serversThatCannotSpecifyBindIP</h4>
+<pre>public 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><<a href="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.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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li><a href="#enum.constant.summary">Enum Constants</a> | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#enum.constant.detail">Enum Constants</a> | </li>
+<li><a href="#field.detail">Field</a> | </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 © 2007–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 <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 <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 <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 <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 <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 <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 <a href="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 <a href="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 <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/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> r)</pre>
+<pre>public <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/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> 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> in interface <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<E> coprocEnvironments =<a name="line.81"></a>
-<span class="sourceLineNo">082</span> new SortedList<>(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<String> coprocessorNames =<a name="line.101"></a>
-<span class="sourceLineNo">102</span> Collections.synchronizedSet(new HashSet<String>());<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span> public static Set<String> 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<String> getCoprocessors() {<a name="line.117"></a>
-<span class="sourceLineNo">118</span> Set<String> returnValue = new TreeSet<>();<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<?> 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<?> 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<? extends C> 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<?> 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<C>) 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<?> 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<C>) 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 <T extends C> T findCoprocessor(Class<T> 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<E> coprocEnvironments =<a name="line.84"></a>
+<span class="sourceLineNo">085</span> new SortedList<>(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<String> coprocessorNames =<a name="line.104"></a>
+<span class="sourceLineNo">105</span> Collections.synchronizedSet(new HashSet<String>());<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span> public static Set<String> 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<String> getCoprocessors() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span> Set<String> returnValue = new TreeSet<>();<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<?> 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<?> 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 && 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<? extends C> 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<?> 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<C>) 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<?> 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<C>) 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 <T extends C> List<T> findCoprocessors(Class<T> cls) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span> ArrayList<T> ret = new ArrayList<>();<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 <T extends C> T findCoprocessor(Class<T> 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<ClassLoader> getExternalClassLoaders() {<a name="line.357"></a>
-<span class="sourceLineNo">358</span> Set<ClassLoader> externalClassLoaders = new HashSet<>();<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<CoprocessorEnvironment> {<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() < 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() > 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() < 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() > 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<Class<? extends Coprocessor>> legacyWarning =<a name="line.464"></a>
-<span class="sourceLineNo">465</span> new ConcurrentSkipListSet<>(<a name="line.465"></a>
-<span class="sourceLineNo">466</span> new Comparator<Class<? extends Coprocessor>>() {<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<? extends Coprocessor> c1, Class<? extends Coprocessor> 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<C, O> extends Function<C, Optional<O>> {}<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 <T extends C> List<T> findCoprocessors(Class<T> cls) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span> ArrayList<T> ret = new ArrayList<>();<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<ClassLoader> getExternalClassLoaders() {<a name="line.368"></a>
+<span class="sourceLineNo">369</span> Set<ClassLoader> externalClassLoaders = new HashSet<>();<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<CoprocessorEnvironment> {<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() < 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() > 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() < 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() > 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<Class<? extends Coprocessor>> legacyWarning =<a name="line.475"></a>
+<span class="sourceLineNo">476</span> new ConcurrentSkipListSet<>(<a name="line.476"></a>
+<span class="sourceLineNo">477</span> new Comparator<Class<? extends Coprocessor>>() {<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<? extends Coprocessor> c1, Class<? extends Coprocessor> 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<O> extends ObserverContextImpl<E> {<a name="line.487"></a>
-<span class="sourceLineNo">488</span> ObserverGetter<C, O> observerGetter;<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span> ObserverOperation(ObserverGetter<C, O> 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<C, O> 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<C, O> extends Function<C, Optional<O>> {}<a name="line.496"></a>
<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span> ObserverOperation(ObserverGetter<C, O> 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<C, O> 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<O> extends ObserverOperation<O> {<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<C, O> 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<C, O> 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<C, O> 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<O> 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<O, R> extends ObserverOperation<O> {<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 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><E> (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><T>, 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><E> (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><T>, 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 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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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> </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> </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> 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> qop,
org.apache.hadoop.conf.Configuration conf)</code> </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"> </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> 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> 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> host,
- boolean framed,
- int frameSize)</code> </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"> </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 conf,
+ <a href="../../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> userProvider)</code> </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"> </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 c,
- <a href="../../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> userProvider)</code> </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 c,
+ <a href="../../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> userProvider)</code> </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 c,
+ <a href="../../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> userProvider)</code> </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"> </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 conf,
+ <a href="../../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> userProvider)</code> </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"> </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><E> (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><T>, 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> </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 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 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 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 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 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 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<E> coprocEnvironments =<a name="line.81"></a>
-<span class="sourceLineNo">082</span> new SortedList<>(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<String> coprocessorNames =<a name="line.101"></a>
-<span class="sourceLineNo">102</span> Collections.synchronizedSet(new HashSet<String>());<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span> public static Set<String> 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<String> getCoprocessors() {<a name="line.117"></a>
-<span class="sourceLineNo">118</span> Set<String> returnValue = new TreeSet<>();<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<?> 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<?> 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<? extends C> 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<?> 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<C>) 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<?> 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<C>) 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 <T extends C> T findCoprocessor(Class<T> 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<E> coprocEnvironments =<a name="line.84"></a>
+<span class="sourceLineNo">085</span> new SortedList<>(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<String> coprocessorNames =<a name="line.104"></a>
+<span class="sourceLineNo">105</span> Collections.synchronizedSet(new HashSet<String>());<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span> public static Set<String> 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<String> getCoprocessors() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span> Set<String> returnValue = new TreeSet<>();<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<?> 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<?> 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 && 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<? extends C> 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<?> 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<C>) 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<?> 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<C>) 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 <T extends C> List<T> findCoprocessors(Class<T> cls) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span> ArrayList<T> ret = new ArrayList<>();<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 <T extends C> T findCoprocessor(Class<T> 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<ClassLoader> getExternalClassLoaders() {<a name="line.357"></a>
-<span class="sourceLineNo">358</span> Set<ClassLoader> externalClassLoaders = new HashSet<>();<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<CoprocessorEnvironment> {<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() < 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() > 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() < 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() > 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<Class<? extends Coprocessor>> legacyWarning =<a name="line.464"></a>
-<span class="sourceLineNo">465</span> new ConcurrentSkipListSet<>(<a name="line.465"></a>
-<span class="sourceLineNo">466</span> new Comparator<Class<? extends Coprocessor>>() {<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<? extends Coprocessor> c1, Class<? extends Coprocessor> 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<C, O> extends Function<C, Optional<O>> {}<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 <T extends C> List<T> findCoprocessors(Class<T> cls) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span> ArrayList<T> ret = new ArrayList<>();<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<ClassLoader> getExternalClassLoaders() {<a name="line.368"></a>
+<span class="sourceLineNo">369</span> Set<ClassLoader> externalClassLoaders = new HashSet<>();<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<CoprocessorEnvironment> {<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() < 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() > 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() < 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() > 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<Class<? extends Coprocessor>> legacyWarning =<a name="line.475"></a>
+<span class="sourceLineNo">476</span> new ConcurrentSkipListSet<>(<a name="line.476"></a>
+<span class="sourceLineNo">477</span> new Comparator<Class<? extends Coprocessor>>() {<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<? extends Coprocessor> c1, Class<? extends Coprocessor> 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<O> extends ObserverContextImpl<E> {<a name="line.487"></a>
-<span class="sourceLineNo">488</span> ObserverGetter<C, O> observerGetter;<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span> ObserverOperation(ObserverGetter<C, O> 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<C, O> 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<C, O> extends Function<C, Optional<O>> {}<a name="line.496"></a>
<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span> ObserverOperation(ObserverGetter<C, O> 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<C, O> 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<O> extends ObserverOperation<O> {<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<C, O> 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<C, O> 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<C, O> 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<O> 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<O, R> extends ObserverOperation<O> {<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> </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> </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> </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> </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> </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> </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> </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> </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> </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 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 implType,
boolean specifyFramed,
boolean specifyBindIP,
boolean specifyCompact)</code> </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> </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><<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/TestThriftServerCmdLine.html#getParameters--">getParameters</a></span>()</code> </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> </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> </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>[] args)</code> </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> </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> </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> </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> </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 <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 <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 org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.68">LOG</a></pre>
+<pre>private static final 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 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 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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.72">specifyFramed</a></pre>
+<pre>protected 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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.73">specifyBindIP</a></pre>
+<pre>protected 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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.74">specifyCompact</a></pre>
+<pre>protected 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 <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 <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 <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 <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 <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 <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 <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 <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 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 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 int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.85">port</a></pre>
+<pre>protected 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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.213">tableCreated</a></pre>
+<pre>protected static volatile 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 <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.107">TestThriftServerCmdLine</a>(org.apache.hadoop.hbase.thrift.ThriftServerRunner.ImplType implType,
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.111">TestThriftServerCmdLine</a>(org.apache.hadoop.hbase.thrift.ImplType implType,
boolean specifyFramed,
boolean specifyBindIP,
boolean 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 <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><<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/TestThriftServerCmdLine.html#line.88">getParameters</a>()</pre>
+<pre>public 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><<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/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 <a href="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/TestThriftServerCmdLine.html#line.116">getParametersString</a>()</pre>
+<pre>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> <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.124">setUpBeforeClass</a>()
+<pre>public static void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.133">tearDownAfterClass</a>()
+<pre>public static void <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 void <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>[] args)</pre>
+<pre>private void <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>[] args)</pre>
+</li>
+</ul>
+<a name="createThriftServer--">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createThriftServer</h4>
+<pre>protected org.apache.hadoop.hbase.thrift.ThriftServer <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.158">testRunThriftServer</a>()
+<pre>public void <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 void <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 void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#line.243">stopCmdLineThread</a>()
+<pre>private void <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> principal)</code> </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> url,
int customHeaderSize)</code> </td>
</tr>
@@ -248,7 +248,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
<!-- -->
</a>
<h3>Methods inherited from 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></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 <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 <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 org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.87">LOG</a></pre>
+<pre>private static final 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 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 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 <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 <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 <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 <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 <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 <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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.82">TestThriftSpnegoHttpServer</a>()</pre>
+<pre>public <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.99">setupUser</a>(org.apache.kerby.kerberos.kerb.server.SimpleKdcServer kdc,
+<pre>private static void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.94">setupUser</a>(org.apache.kerby.kerberos.kerb.server.SimpleKdcServer 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> 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> 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 org.apache.kerby.kerberos.kerb.server.SimpleKdcServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.105">buildMiniKdc</a>()
+<pre>private static org.apache.kerby.kerberos.kerb.server.SimpleKdcServer <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.129">addSecurityConfigurations</a>(org.apache.hadoop.conf.Configuration conf)</pre>
+<pre>private static void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.124">addSecurityConfigurations</a>(org.apache.hadoop.conf.Configuration 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.147">setUpBeforeClass</a>()
+<pre>public static void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.181">tearDownAfterClass</a>()
+<pre>public static void <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 <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> url,
- int 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 void <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> url,
+ int 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> in class <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 org.apache.http.impl.client.CloseableHttpClient <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.219">createHttpClient</a>()
+<pre>private org.apache.http.impl.client.CloseableHttpClient <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"> </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"> </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"> </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 </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> </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"> </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"> </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"> </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 </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> </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> </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 Class</li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Next 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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"> </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> </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> </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 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"> </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> </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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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> </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> url,
+ int customHeaderSize)</code> </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 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 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 <a href="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 <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 <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 org.apache.hadoop.hbase.thrift2.ThriftServer <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> in class <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 void <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> url,
+ int 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> in class <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 Class</li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Next 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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 © 2007–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 >= 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> && 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 && !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 &&<a name="line.229"></a>
+<span class="sourceLineNo">230</span> qop != SaslUtil.QualityOfProtection.INTEGRITY &&<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 >= 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 &&<a name="line.262"></a>
+<span class="sourceLineNo">263</span> conf.getBoolean(USE_HTTP_CONF_KEY, false) &&<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<>(<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<String, String> 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) -> {<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 && !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<>(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<>(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<Runnable> 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<String> 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><E> (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><T>, 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(() -> {<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<String> args = new ArrayList<>(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<String> args = new ArrayList<>(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 > 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 < 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 > 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 < 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<Mutation> mutations = new ArrayList<>(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<String, String> 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 static final <a href="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 static final <a href="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 static final 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 static final 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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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"> </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"> </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 static final <a href="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 static final 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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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"> </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 static final 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 static final 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 static final <a href="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"> </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 static final <a href="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 static final 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 static final <a href="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"> </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 static final 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 static final <a href="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 static final 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 static final <a href="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 static final 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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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 static final 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 static final <a href="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"> </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 static final 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 static final <a href="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 static final <a href="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 static final <a href="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 static final 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 static final <a href="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 static final <a href="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 static final <a href="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"> </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 static final 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 static final <a href="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 static final 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 static final <a href="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 static final 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 static final <a href="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 static final 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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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 static final 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"> </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 static final <a href="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 static final <a href="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 static final 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 static final 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"> </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 static final <a href="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 static final <a href="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 static final 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 static final <a href="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 static final 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 static final <a href="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"> </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 static final <a href="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 final <a href="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 static final <a href="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 final <a href="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 static final <a href="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 static final <a href="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 static final 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 static final 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 static final <a href="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 final <a href="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 static final 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 final <a href="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 static final <a href="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 static final <a href="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 static final 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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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 final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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"> </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"> </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 final <a href="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 static final <a href="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 final <a href="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 static final <a href="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"> </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 final <a href="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 static final <a href="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 final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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 static final 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 static final <a href="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 static final 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 static final <a href="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"> </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 final <a href="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 static final 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"> </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 static final int</code></td>
-<td><code><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#HREGION_VERSION">HREGION_VERSION</a></code></td>
+</a><code>private static final 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 final <a href="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"> </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 final <a href="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 static final <a href="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 final <a href="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 static final <a href="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 final <a href="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 static final <a href="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 final <a href="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 static final <a href="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 final <a href="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 static final <a href="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 final <a href="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 static final <a href="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 final <a href="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 static final <a href="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 final <a href="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"> </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 final <a href="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 static final <a href="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 static final 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 static final <a href="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 static final <a href="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 final <a href="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 static final <a href="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 final <a href="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 static final <a href="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 final <a href="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 static final <a href="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"> </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 final <a href="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 static final 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 final <a href="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 static final 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<? extends TServer> 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<? extends TServer> 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 <code>-option</code><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 < 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 > 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<String> serversThatCannotSpecifyBindIP() {<a name="line.134"></a>
+<span class="sourceLineNo">135</span> List<String> l = new ArrayList<>();<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<FullyQualifiedRow, Long> countersMap =<a name="line.180"></a>
-<span class="sourceLineNo">181</span> new ConcurrentHashMap<>(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<Runnable> queue = new LinkedBlockingQueue<>();<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<TIncrement> 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<FullyQualifiedRow, Long> countersMap =<a name="line.179"></a>
+<span class="sourceLineNo">180</span> new ConcurrentHashMap<>(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<Runnable> queue = new LinkedBlockingQueue<>();<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<TIncrement> 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<Integer, ResultScannerWrapper> 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 < 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-&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<>();<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<ByteBuffer> 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<ByteBuffer> list = new ArrayList<>(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<TRegionInfo> 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<HRegionLocation> regionLocations = locator.getAllRegionLocations();<a name="line.250"></a>
+<span class="sourceLineNo">251</span> List<TRegionInfo> results = new ArrayList<>(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<TCell> 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<ByteBuffer, ByteBuffer> 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<TCell> 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<ByteBuffer, ByteBuffer> 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<TCell> getVer(ByteBuffer tableName, ByteBuffer row, ByteBuffer column,<a name="line.324"></a>
+<span class="sourceLineNo">325</span> int numVersions, Map<ByteBuffer, ByteBuffer> 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<TCell> getVer(ByteBuffer tableName, ByteBuffer row, byte[] family,<a name="line.345"></a>
+<span class="sourceLineNo">346</span> byte[] qualifier, int numVersions, Map<ByteBuffer, ByteBuffer> 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<TCell> getVerTs(ByteBuffer tableName, ByteBuffer row, ByteBuffer column,<a name="line.370"></a>
+<span class="sourceLineNo">371</span> long timestamp, int numVersions, Map<ByteBuffer, ByteBuffer> 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<TCell> getVerTs(ByteBuffer tableName, ByteBuffer row, byte[] family,<a name="line.390"></a>
+<span class="sourceLineNo">391</span> byte[] qualifier, long timestamp, int numVersions, Map<ByteBuffer, ByteBuffer> 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<TRowResult> getRow(ByteBuffer tableName, ByteBuffer row,<a name="line.417"></a>
+<span class="sourceLineNo">418</span> Map<ByteBuffer, ByteBuffer> 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<TRowResult> 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<ByteBuffer> columns,<a name="line.427"></a>
+<span class="sourceLineNo">428</span> Map<ByteBuffer, ByteBuffer> 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<TRowResult> getRowTs(ByteBuffer tableName, ByteBuffer row,<a name="line.435"></a>
+<span class="sourceLineNo">436</span> long timestamp, Map<ByteBuffer, ByteBuffer> 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<TRowResult> getRowWithColumnsTs(<a name="line.442"></a>
+<span class="sourceLineNo">443</span> ByteBuffer tableName, ByteBuffer row, List<ByteBuffer> columns,<a name="line.443"></a>
+<span class="sourceLineNo">444</span> long timestamp, Map<ByteBuffer, ByteBuffer> 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<TRowResult> getRows(ByteBuffer tableName,<a name="line.478"></a>
+<span class="sourceLineNo">479</span> List<ByteBuffer> rows,<a name="line.479"></a>
+<span class="sourceLineNo">480</span> Map<ByteBuffer, ByteBuffer> 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<TRowResult> getRowsWithColumns(ByteBuffer tableName,<a name="line.488"></a>
+<span class="sourceLineNo">489</span> List<ByteBuffer> rows,<a name="line.489"></a>
+<span class="sourceLineNo">490</span> List<ByteBuffer> columns,<a name="line.490"></a>
+<span class="sourceLineNo">491</span> Map<ByteBuffer, ByteBuffer> 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<TRowResult> getRowsTs(ByteBuffer tableName,<a name="line.498"></a>
+<span class="sourceLineNo">499</span> List<ByteBuffer> rows,<a name="line.499"></a>
+<span class="sourceLineNo">500</span> long timestamp,<a name="line.500"></a>
+<span class="sourceLineNo">501</span> Map<ByteBuffer, ByteBuffer> 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<TRowResult> getRowsWithColumnsTs(ByteBuffer tableName,<a name="line.507"></a>
+<span class="sourceLineNo">508</span> List<ByteBuffer> rows,<a name="line.508"></a>
+<span class="sourceLineNo">509</span> List<ByteBuffer> columns, long timestamp,<a name="line.509"></a>
+<span class="sourceLineNo">510</span> Map<ByteBuffer, ByteBuffer> 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<Get> gets = new ArrayList<>(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<ByteBuffer, ByteBuffer> 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<ByteBuffer, ByteBuffer> 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<ByteBuffer, ByteBuffer> 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<ByteBuffer, ByteBuffer> 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<ColumnDescriptor> 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<Mutation> mutations, Map<ByteBuffer, ByteBuffer> 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<Mutation> mutations, long timestamp,<a name="line.659"></a>
+<span class="sourceLineNo">660</span> Map<ByteBuffer, ByteBuffer> 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<BatchMutation> rowBatches,<a name="line.721"></a>
+<span class="sourceLineNo">722</span> Map<ByteBuffer, ByteBuffer> 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<BatchMutation> rowBatches, long timestamp,<a name="line.729"></a>
+<span class="sourceLineNo">730</span> Map<ByteBuffer, ByteBuffer> 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<Put> puts = new ArrayList<>();<a name="line.732"></a>
+<span class="sourceLineNo">733</span> List<Delete> deletes = new ArrayList<>();<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<Mutation> 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<TRowResult> 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<>();<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<TRowResult> 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<ByteBuffer, ByteBuffer> 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() && !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<? extends TServer> 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<? extends TServer> 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 <code>-option</code><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 < 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 > 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<String> serversThatCannotSpecifyBindIP() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span> List<String> l = new ArrayList<>();<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> && 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 && !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 &&<a name="line.375"></a>
-<span class="sourceLineNo">376</span> qop != QualityOfProtection.INTEGRITY &&<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 &&<a name="line.392"></a>
-<span class="sourceLineNo">393</span> conf.getBoolean(USE_HTTP_CONF_KEY, false) &&<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<Object>() {<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<>(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<>(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<String, String> 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) -> {<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 && !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<>(), 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<>(), 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<Runnable> 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<Integer, ResultScannerWrapper> 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 < 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-&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<>();<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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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"> </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> </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> </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 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"> </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 implType,
+ boolean specifyFramed,
+ boolean specifyBindIP,
+ boolean specifyCompact)</code> </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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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> </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> </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 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 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 <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 <a href="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 <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html#line.57">TestThrift2ServerCmdLine</a>(org.apache.hadoop.hbase.thrift.ImplType implType,
+ boolean specifyFramed,
+ boolean specifyBindIP,
+ boolean 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 org.apache.hadoop.hbase.thrift2.ThriftServer <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> in class <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 void <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> in class <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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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 © 2007–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 org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1692">LOG</a></pre>
+<pre>private static final 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 long <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1694">delayMillis</a></pre>
+<pre>private 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 <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1691">DelayingRegionObserver</a>()</pre>
+<pre>public <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 <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><org.apache.hadoop.hbase.coprocessor.RegionObserver> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1697">getRegionObserver</a>()</pre>
+<pre>public <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><org.apache.hadoop.hbase.coprocessor.RegionObserver> <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> in interface <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1702">start</a>(org.apache.hadoop.hbase.CoprocessorEnvironment e)
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1705">start</a>(org.apache.hadoop.hbase.CoprocessorEnvironment 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1708">preGetOp</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext<org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment> e,
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.DelayingRegionObserver.html#line.1711">preGetOp</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext<org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment> e,
org.apache.hadoop.hbase.client.Get 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><org.apache.hadoop.hbase.Cell> 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 Class</li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Prev 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 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 <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 <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 org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.128">LOG</a></pre>
+<pre>private static final 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 <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 <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 byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.132">tableAname</a></pre>
+<pre>private static 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 byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.133">familyAname</a></pre>
+<pre>private static 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 byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.134">familyBname</a></pre>
+<pre>private static 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 byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.135">qualifierAname</a></pre>
+<pre>private static 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 byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.136">qualifierBname</a></pre>
+<pre>private static 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 byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.137">valueAname</a></pre>
+<pre>private static 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 byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.138">valueBname</a></pre>
+<pre>private static 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 org.apache.hadoop.hbase.HColumnDescriptor[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.139">families</a></pre>
+<pre>private static 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 <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 <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 org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.149">name</a></pre>
+<pre>public 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 <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.122">TestThriftHBaseServiceHandler</a>()</pre>
+<pre>public <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 void <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><org.apache.hadoop.hbase.thrift2.generated.TColumnValue> columnValuesA,
+<pre>public void <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><org.apache.hadoop.hbase.thrift2.generated.TColumnValue> 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><org.apache.hadoop.hbase.thrift2.generated.TColumnValue> 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.172">assertTColumnValueEqual</a>(org.apache.hadoop.hbase.thrift2.generated.TColumnValue a,
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.175">assertTColumnValueEqual</a>(org.apache.hadoop.hbase.thrift2.generated.TColumnValue a,
org.apache.hadoop.hbase.thrift2.generated.TColumnValue 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.179">beforeClass</a>()
+<pre>public static void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.192">afterClass</a>()
+<pre>public static void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.197">setup</a>()
+<pre>public void <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 org.apache.hadoop.hbase.thrift2.ThriftHBaseServiceHandler <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.201">createHandler</a>()
+<pre>private org.apache.hadoop.hbase.thrift2.ThriftHBaseServiceHandler <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.211">testExists</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.231">testExistsAll</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.259">testPutGet</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.282">testPutGetMultiple</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.312">testDeleteMultiple</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.340">testDelete</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.377">testDeleteAllTimestamps</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.417">testDeleteSingleTimestamp</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.462">testDeleteFamily</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.504">testDeleteFamilyVersion</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.548">testIncrement</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.575">testAppend</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.606">testCheckAndPut</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.651">testCheckAndDelete</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.694">testScan</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.746">testLongLivedScan</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.792">testReverseScan</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.841">testScanWithFilter</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.893">testScanWithColumnFamilyTimeRange</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.954">testSmallScan</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.998">testPutTTL</a>()
+<pre>public void <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 <a href="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/TestThriftHBaseServiceHandler.html#line.1054">pad</a>(int n,
+<pre>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> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1057">pad</a>(int n,
byte 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1065">testScanWithBatchSize</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1124">testGetScannerResults</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1195">testFilterRegistration</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1204">testMetrics</a>()
+<pre>public void <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 org.apache.hadoop.hbase.thrift.ThriftMetrics <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1229">getMetrics</a>(org.apache.hadoop.conf.Configuration conf)
+<pre>private static org.apache.hadoop.hbase.thrift.ThriftMetrics <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1232">getMetrics</a>(org.apache.hadoop.conf.Configuration 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1236">testMetricsWithException</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1277">testExceptionType</a>(org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface handler,
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1280">testExceptionType</a>(org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface handler,
org.apache.hadoop.hbase.thrift.ThriftMetrics 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> tTableName,
byte[] 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1307">testMetricsPrecision</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1354">testAttribute</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1396">testMutateRow</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1458">testDurability</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1520">testCheckAndMutate</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1571">testConsistency</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1602">testDDLOpertions</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#line.1680">testGetTableDescriptor</a>()
+<pre>public void <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 Class</li>
+<li><a href="../../../../../org/apache/hadoop/hbase/thrift2/TestThrift2ServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">Prev 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All 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 © 2007–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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All 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 © 2007–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"> </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"> </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<? extends TServer> 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<? extends TServer> 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 <code>-option</code><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 < 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 > 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<String> serversThatCannotSpecifyBindIP() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span> List<String> l = new ArrayList<>();<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> && 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 && !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 &&<a name="line.375"></a>
-<span class="sourceLineNo">376</span> qop != QualityOfProtection.INTEGRITY &&<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 &&<a name="line.392"></a>
-<span class="sourceLineNo">393</span> conf.getBoolean(USE_HTTP_CONF_KEY, false) &&<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<Object>() {<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<>(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<>(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<String, String> 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) -> {<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 && !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<>(), 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<>(), 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<Runnable> 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<Integer, ResultScannerWrapper> 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 < 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-&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<>();<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 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 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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
-<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.thrift.generated.IOError">Nested</a> | </li>
-<li><a href="#field.summary">Field</a> | </li>
-<li><a href="#constructor.summary">Constr</a> | </li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail: </li>
-<li><a href="#field.detail">Field</a> | </li>
-<li><a href="#constructor.detail">Constr</a> | </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><org.apache.hadoop.hbase.thrift.generated.IOError>, org.apache.thrift.TBase<org.apache.hadoop.hbase.thrift.generated.IOError,org.apache.hadoop.hbase.thrift.generated.IOError._Fields></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 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"> </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> </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 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"> </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> cause)</code> </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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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> other)</code> </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> </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> </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 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 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 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 <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 <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> 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 <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.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> in class <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 boolean <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> other)</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code>equals</code> in class <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 int <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> in class <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 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 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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
-<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.thrift.generated.IOError">Nested</a> | </li>
-<li><a href="#field.summary">Field</a> | </li>
-<li><a href="#constructor.summary">Constr</a> | </li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail: </li>
-<li><a href="#field.detail">Field</a> | </li>
-<li><a href="#constructor.detail">Constr</a> | </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 © 2007–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 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 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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
-<li>Nested | </li>
-<li><a href="#enum.constant.summary">Enum Constants</a> | </li>
-<li><a href="#field.summary">Field</a> | </li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail: </li>
-<li><a href="#enum.constant.detail">Enum Constants</a> | </li>
-<li><a href="#field.detail">Field</a> | </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><<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a>></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><<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a>></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><<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a>></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"> </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> </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> </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> </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> </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"> </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> </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> </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> </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> </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><? extends org.apache.thrift.server.TServer></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html#serverClass">serverClass</a></span></code> </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"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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> </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> </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> </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 conf)</code> </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> </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><<a href="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#serversThatCannotSpecifyBindIP--">serversThatCannotSpecifyBindIP</a></span>()</code> </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 cmd,
- org.apache.hadoop.conf.Configuration conf)</code> </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> </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> </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> 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 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 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 <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 <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 <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 <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 <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 <a href="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 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 <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><? extends org.apache.thrift.server.TServer> <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 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 <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.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())
- 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 <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.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> 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 <a href="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.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> in class <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><<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift">ThriftServerRunner.ImplType</a>></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 <a href="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.270">getOption</a>()</pre>
-</li>
-</ul>
-<a name="isAlwaysFramed--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>isAlwaysFramed</h4>
-<pre>public boolean <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 <a href="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.278">getDescription</a>()</pre>
-</li>
-</ul>
-<a name="createOptionGroup--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>createOptionGroup</h4>
-<pre>static org.apache.hbase.thirdparty.org.apache.commons.cli.OptionGroup <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 <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.298">getServerImpl</a>(org.apache.hadoop.conf.Configuration 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 void <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 cmd,
- org.apache.hadoop.conf.Configuration conf)</pre>
-</li>
-</ul>
-<a name="simpleClassName--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>simpleClassName</h4>
-<pre>public <a href="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.328">simpleClassName</a>()</pre>
-</li>
-</ul>
-<a name="serversThatCannotSpecifyBindIP--">
-<!-- -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>serversThatCannotSpecifyBindIP</h4>
-<pre>public 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><<a href="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.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 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 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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
-<li>Nested | </li>
-<li><a href="#enum.constant.summary">Enum Constants</a> | </li>
-<li><a href="#field.summary">Field</a> | </li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail: </li>
-<li><a href="#enum.constant.detail">Enum Constants</a> | </li>
-<li><a href="#field.detail">Field</a> | </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 © 2007–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 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 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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
-<li>Nested | </li>
-<li><a href="#field.summary">Field</a> | </li>
-<li><a href="#constructor.summary">Constr</a> | </li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail: </li>
-<li><a href="#field.detail">Field</a> | </li>
-<li><a href="#constructor.detail">Constr</a> | </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"> </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> </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> </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"> </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> resultScanner,
- boolean sortResultColumns)</code> </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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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> </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> </td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
-<!-- -->
-</a>
-<h3>Methods inherited from class 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 <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 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 <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> resultScanner,
- boolean 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 <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.730">getScanner</a>()</pre>
-</li>
-</ul>
-<a name="isColumnSorted--">
-<!-- -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>isColumnSorted</h4>
-<pre>public boolean <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 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 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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
-<li>Nested | </li>
-<li><a href="#field.summary">Field</a> | </li>
-<li><a href="#constructor.summary">Constr</a> | </li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail: </li>
-<li><a href="#field.detail">Field</a> | </li>
-<li><a href="#constructor.detail">Constr</a> | </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 © 2007–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><T>)
<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><T>)</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><T>, 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<T,F>)
<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><T>, 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<T,F>)
@@ -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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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><S extends com.google.protobuf.Message,T extends com.google.protobuf.Message></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"> </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"> </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"> </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"> </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"> </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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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> </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> </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> </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> url)</code> </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> </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 customHeaderSize)</code> </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> </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>[] args)</code> </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> </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> url,
int customHeaderSize)</code> </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> </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> </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> </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> </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 <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 <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 org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.65">LOG</a></pre>
+<pre>private static final 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 <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 <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 <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 <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 <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 <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 <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 <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 org.apache.hadoop.hbase.thrift.ThriftServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.75">thriftServer</a></pre>
+<pre>private 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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.198">tableCreated</a></pre>
+<pre>protected static volatile 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 <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.60">TestThriftHttpServer</a>()</pre>
+<pre>public <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.79">setUpBeforeClass</a>()
+<pre>public static void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.89">tearDownAfterClass</a>()
+<pre>public static void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.95">testExceptionThrownWhenMisConfigured</a>()
+<pre>public void <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 org.apache.hadoop.hbase.thrift.ThriftServer <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.149">testRunThriftServer</a>()
+<pre>public void <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 <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.153">runThriftServer</a>(int customHeaderSize)
+<pre>void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.157">runThriftServer</a>(int 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 void <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> url)
+<pre>private void <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> 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 <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> url,
- int 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 void <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> url,
+ int 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#line.226">stopHttpServerThread</a>()
+<pre>private void <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: </li>
-<li>Nested | </li>
-<li><a href="#fields.inherited.from.class.org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler">Field</a> | </li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler">Nested</a> | </li>
+<li><a href="#fields.inherited.from.class.org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler">Field</a> | </li>
<li><a href="#constructor.summary">Constr</a> | </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 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 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 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 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 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 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 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> in interface <code>org.apache.hadoop.hbase.thrift.generated.Hbase.Iface</code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code>getTableNames</code> in class <code>org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler</code></dd>
+<dd><code>getTableNames</code> in class <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: </li>
-<li>Nested | </li>
-<li><a href="#fields.inherited.from.class.org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler">Field</a> | </li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler">Nested</a> | </li>
+<li><a href="#fields.inherited.from.class.org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler">Field</a> | </li>
<li><a href="#constructor.summary">Constr</a> | </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 scannerId,
- org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler 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 scannerId,
+ org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler 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 handler)</code> </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 handler)</code> </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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.281">doTestIncrements</a>(org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler handler)
+<pre>public static void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.281">doTestIncrements</a>(org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftServer.html#line.868">closeScanner</a>(int scannerId,
- org.apache.hadoop.hbase.thrift.ThriftServerRunner.HBaseHandler handler)
+ org.apache.hadoop.hbase.thrift.ThriftHBaseServiceHandler 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<E> coprocEnvironments =<a name="line.81"></a>
-<span class="sourceLineNo">082</span> new SortedList<>(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<String> coprocessorNames =<a name="line.101"></a>
-<span class="sourceLineNo">102</span> Collections.synchronizedSet(new HashSet<String>());<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span> public static Set<String> 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<String> getCoprocessors() {<a name="line.117"></a>
-<span class="sourceLineNo">118</span> Set<String> returnValue = new TreeSet<>();<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<?> 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<?> 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<? extends C> 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<?> 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<C>) 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<?> 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<C>) 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 <T extends C> T findCoprocessor(Class<T> 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<E> coprocEnvironments =<a name="line.84"></a>
+<span class="sourceLineNo">085</span> new SortedList<>(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<String> coprocessorNames =<a name="line.104"></a>
+<span class="sourceLineNo">105</span> Collections.synchronizedSet(new HashSet<String>());<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span> public static Set<String> 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<String> getCoprocessors() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span> Set<String> returnValue = new TreeSet<>();<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<?> 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<?> 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 && 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<? extends C> 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<?> 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<C>) 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<?> 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<C>) 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 <T extends C> List<T> findCoprocessors(Class<T> cls) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span> ArrayList<T> ret = new ArrayList<>();<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 <T extends C> T findCoprocessor(Class<T> 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<ClassLoader> getExternalClassLoaders() {<a name="line.357"></a>
-<span class="sourceLineNo">358</span> Set<ClassLoader> externalClassLoaders = new HashSet<>();<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<CoprocessorEnvironment> {<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() < 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() > 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() < 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() > 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<Class<? extends Coprocessor>> legacyWarning =<a name="line.464"></a>
-<span class="sourceLineNo">465</span> new ConcurrentSkipListSet<>(<a name="line.465"></a>
-<span class="sourceLineNo">466</span> new Comparator<Class<? extends Coprocessor>>() {<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<? extends Coprocessor> c1, Class<? extends Coprocessor> 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<C, O> extends Function<C, Optional<O>> {}<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 <T extends C> List<T> findCoprocessors(Class<T> cls) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span> ArrayList<T> ret = new ArrayList<>();<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<ClassLoader> getExternalClassLoaders() {<a name="line.368"></a>
+<span class="sourceLineNo">369</span> Set<ClassLoader> externalClassLoaders = new HashSet<>();<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<CoprocessorEnvironment> {<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() < 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() > 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() < 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() > 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<Class<? extends Coprocessor>> legacyWarning =<a name="line.475"></a>
+<span class="sourceLineNo">476</span> new ConcurrentSkipListSet<>(<a name="line.476"></a>
+<span class="sourceLineNo">477</span> new Comparator<Class<? extends Coprocessor>>() {<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<? extends Coprocessor> c1, Class<? extends Coprocessor> 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<O> extends ObserverContextImpl<E> {<a name="line.487"></a>
-<span class="sourceLineNo">488</span> ObserverGetter<C, O> observerGetter;<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span> ObserverOperation(ObserverGetter<C, O> 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<C, O> 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<C, O> extends Function<C, Optional<O>> {}<a name="line.496"></a>
<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span> ObserverOperation(ObserverGetter<C, O> 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<C, O> 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<O> extends ObserverOperation<O> {<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<C, O> 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<C, O> 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<C, O> 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<O> 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<O, R> extends ObserverOperation<O> {<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 –
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 –
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 – 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 – 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 – 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 – 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 – 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"> </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 static final <a href="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"> </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 static final <a href="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"> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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>
</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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </dd>
@@ -43220,6 +43234,10 @@
<dd> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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><E> (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><T>, 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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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<E,org.apache.hado
<!-- -->
</a>
<h3>Fields inherited from class 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 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 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 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 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 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 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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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"> </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> </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"> </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> </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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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> </td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!-- -->
+</a>
+<h3>Methods inherited from class 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 <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 <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 void <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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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 © 2007–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 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 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 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 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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All 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 © 2007–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> </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> </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> </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><<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><? extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>>></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> </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> </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> </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> </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> </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> </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> </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> </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 <a href="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 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 org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.78">LOG</a></pre>
+<pre>private static final 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 <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 <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 <a href="../../../../../org/apache/hadoop/hbase/util/SortedList.html" title="class in org.apache.hadoop.hbase.util">SortedList</a><<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><<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>>> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.81">coprocEnvironments</a></pre>
+<pre>protected final <a href="../../../../../org/apache/hadoop/hbase/util/SortedList.html" title="class in org.apache.hadoop.hbase.util">SortedList</a><<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><<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>>> <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 org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.83">conf</a></pre>
+<pre>protected 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 <a href="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 <a href="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 <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 <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 <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><<a href="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.101">coprocessorNames</a></pre>
+<pre>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><<a href="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.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 <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><<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><? extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>>> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.464">legacyWarning</a></pre>
+<pre>private static final <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><<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><? extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>>> <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 <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> abortable)</pre>
+<pre>public <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> 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 <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><<a href="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.104">getLoadedCoprocessors</a>()</pre>
+<pre>public 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><<a href="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.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 <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><<a href="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.117">getCoprocessors</a>()</pre>
+<pre>public <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><<a href="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.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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.129">loadSystemCoprocessors</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>protected void <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.132">loadSystemCoprocessors</a>(org.apache.hadoop.conf.Configuration 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> 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 <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.178">load</a>(org.apache.hadoop.fs.Path path,
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.181">load</a>(org.apache.hadoop.fs.Path 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> className,
int priority,
org.apache.hadoop.conf.Configuration 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 <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.197">load</a>(org.apache.hadoop.fs.Path path,
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.200">load</a>(org.apache.hadoop.fs.Path 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> className,
int priority,
org.apache.hadoop.conf.Configuration 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 void <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><? extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>> implClass,
+<pre>public void <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><? extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>> implClass,
int priority,
org.apache.hadoop.conf.Configuration 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 <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a> <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><?> implClass,
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a> <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><?> implClass,
int priority,
org.apache.hadoop.conf.Configuration 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 <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a> <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> instance,
+<pre>public abstract <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a> <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> instance,
int priority,
int sequence,
org.apache.hadoop.conf.Configuration 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 <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a> <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><?> implClass)
+<pre>public abstract <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a> <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><?> 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 void <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> e)</pre>
+<pre>public void <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> 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 <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a> <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> className)</pre>
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a> <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> 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 <T extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>> T <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><T> cls)</pre>
+<pre>public <T extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</a>> T <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><T> 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 <T extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</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><T> <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><T> cls)</pre>
+<pre>public <T extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">C</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><T> <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><T> 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 <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a> <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> className)</pre>
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a> <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> 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><<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>> <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><<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>> <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 void <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> environment,
+<pre>protected void <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> 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> 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 void <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> coprocessorName,
+<pre>protected void <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> 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> 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 void <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> env,
+<pre>protected void <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> 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> 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 <O,R> R <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><O,R> observerOperation)
+<pre>protected <O,R> R <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><O,R> 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 <O> boolean <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><O> observerOperation)
+<pre>protected <O> boolean <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><O> 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 <O> boolean <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><O> observerOperation)
+<pre>protected <O> boolean <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><O> 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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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> </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><E> (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><T>, 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><E> (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><T>, 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 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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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 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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../../allclasses-noframe.html">All 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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../../allclasses-noframe.html">All 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 © 2007–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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../../allclasses-noframe.html">All 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"> </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"> </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> </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"> </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 conf)</code> </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> 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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../../allclasses-noframe.html">All 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 © 2007–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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../../allclasses-noframe.html">All 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"> </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"> </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><<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>></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> </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"> </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 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 id)</code>
-<div class="block">Removes the scanner associated with the specified ID from the internal
- id->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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../../allclasses-noframe.html">All 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 © 2007–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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../../allclasses-noframe.html">All 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"> </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"> </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> </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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../../allclasses-noframe.html">All 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 © 2007–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"> </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"> </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"> </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"> </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"> </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"> </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"> </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><E>)</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><T>)</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><T>, 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<T,F>)
<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><E> (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><T>, 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> </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> </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> </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> </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> </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> </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 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 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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
-<li>Nested | </li>
-<li><a href="#field.summary">Field</a> | </li>
-<li><a href="#constructor.summary">Constr</a> | </li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail: </li>
-<li><a href="#field.detail">Field</a> | </li>
-<li><a href="#constructor.detail">Constr</a> | </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"> </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> </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> </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"> </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 handler,
- <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics)</code> </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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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> 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> 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>[] args)</code> </td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
-<!-- -->
-</a>
-<h3>Methods inherited from class 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 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 <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 <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.THBaseServiceMetricsProxy.html#line.131">THBaseServiceMetricsProxy</a>(org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface handler,
- <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> 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 <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/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> 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> 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>[] 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> in interface <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 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 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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
-<li>Nested | </li>
-<li><a href="#field.summary">Field</a> | </li>
-<li><a href="#constructor.summary">Constr</a> | </li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail: </li>
-<li><a href="#field.detail">Field</a> | </li>
-<li><a href="#constructor.detail">Constr</a> | </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 © 2007–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 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 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 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 <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 <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 <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> cause)</pre>
+<pre>public <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> 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 <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.165">getCause</a>()</pre>
+<pre>public <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.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> in class <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 boolean <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> other)</pre>
+<pre>public boolean <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> other)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>equals</code> in class <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 int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.TIOErrorWithCause.html#line.184">hashCode</a>()</pre>
+<pre>public int <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> in class <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 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 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 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 –
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 –
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 byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.63">table</a></pre>
+<pre>private 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 byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.64">rowKey</a></pre>
+<pre>private 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 byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.65">family</a></pre>
+<pre>private 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 byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.66">qualifier</a></pre>
+<pre>private 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 <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.68">FullyQualifiedRow</a>(byte[] table,
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.67">FullyQualifiedRow</a>(byte[] table,
byte[] rowKey,
byte[] fam,
byte[] 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 byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.76">getTable</a>()</pre>
+<pre>public byte[] <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.80">setTable</a>(byte[] table)</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.79">setTable</a>(byte[] 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 byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.84">getRowKey</a>()</pre>
+<pre>public byte[] <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.88">setRowKey</a>(byte[] rowKey)</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.87">setRowKey</a>(byte[] 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 byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.92">getFamily</a>()</pre>
+<pre>public byte[] <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.96">setFamily</a>(byte[] fam)</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.95">setFamily</a>(byte[] 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 byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.100">getQualifier</a>()</pre>
+<pre>public byte[] <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.104">setQualifier</a>(byte[] qual)</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.103">setQualifier</a>(byte[] 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 int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.FullyQualifiedRow.html#line.109">hashCode</a>()</pre>
+<pre>public int <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> in class <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 boolean <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> obj)</pre>
+<pre>public boolean <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> 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> in class <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 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 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 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> </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> </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> hand)</code> </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> hand)</code> </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 <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 <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 <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 <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 <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 <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 <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><<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>> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.180">countersMap</a></pre>
+<pre>private final <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><<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>> <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 <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 <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 <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 <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 int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.185">maxQueueSize</a></pre>
+<pre>private 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 int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.186">CORE_POOL_SIZE</a></pre>
+<pre>private static final 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 org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.188">LOG</a></pre>
+<pre>private static final 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 <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> hand)</pre>
+<pre>public <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> 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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.201">queueIncrement</a>(org.apache.hadoop.hbase.thrift.generated.TIncrement inc)
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.200">queueIncrement</a>(org.apache.hadoop.hbase.thrift.generated.TIncrement 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 boolean <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><org.apache.hadoop.hbase.thrift.generated.TIncrement> incs)
+<pre>public boolean <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><org.apache.hadoop.hbase.thrift.generated.TIncrement> 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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.222">internalQueueTincrement</a>(org.apache.hadoop.hbase.thrift.generated.TIncrement inc)
+<pre>private boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#line.221">internalQueueTincrement</a>(org.apache.hadoop.hbase.thrift.generated.TIncrement 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 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 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 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 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 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 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 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 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 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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.thrift.generated.IOError">Nested</a> | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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><org.apache.hadoop.hbase.thrift.generated.IOError>, org.apache.thrift.TBase<org.apache.hadoop.hbase.thrift.generated.IOError,org.apache.hadoop.hbase.thrift.generated.IOError._Fields></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 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"> </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> </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 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"> </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> cause)</code> </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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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> other)</code> </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> </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> </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 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 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 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 <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 <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> 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 <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.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> in class <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 boolean <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> other)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>equals</code> in class <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 int <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> in class <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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.thrift.generated.IOError">Nested</a> | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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 © 2007–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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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"> </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> </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> </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"> </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> resultScanner,
+ boolean sortResultColumns)</code> </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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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> </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> </td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!-- -->
+</a>
+<h3>Methods inherited from class 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 <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 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 <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> resultScanner,
+ boolean 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 <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.1304">getScanner</a>()</pre>
+</li>
+</ul>
+<a name="isColumnSorted--">
+<!-- -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>isColumnSorted</h4>
+<pre>public boolean <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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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 © 2007–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<Integer, ResultScannerWrapper> 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 < 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-&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<>();<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<ByteBuffer> 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<ByteBuffer> list = new ArrayList<>(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<TRegionInfo> 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<HRegionLocation> regionLocations = locator.getAllRegionLocations();<a name="line.250"></a>
+<span class="sourceLineNo">251</span> List<TRegionInfo> results = new ArrayList<>(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<TCell> 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<ByteBuffer, ByteBuffer> 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<TCell> 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<ByteBuffer, ByteBuffer> 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<TCell> getVer(ByteBuffer tableName, ByteBuffer row, ByteBuffer column,<a name="line.324"></a>
+<span class="sourceLineNo">325</span> int numVersions, Map<ByteBuffer, ByteBuffer> 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<TCell> getVer(ByteBuffer tableName, ByteBuffer row, byte[] family,<a name="line.345"></a>
+<span class="sourceLineNo">346</span> byte[] qualifier, int numVersions, Map<ByteBuffer, ByteBuffer> 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<TCell> getVerTs(ByteBuffer tableName, ByteBuffer row, ByteBuffer column,<a name="line.370"></a>
+<span class="sourceLineNo">371</span> long timestamp, int numVersions, Map<ByteBuffer, ByteBuffer> 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<TCell> getVerTs(ByteBuffer tableName, ByteBuffer row, byte[] family,<a name="line.390"></a>
+<span class="sourceLineNo">391</span> byte[] qualifier, long timestamp, int numVersions, Map<ByteBuffer, ByteBuffer> 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<TRowResult> getRow(ByteBuffer tableName, ByteBuffer row,<a name="line.417"></a>
+<span class="sourceLineNo">418</span> Map<ByteBuffer, ByteBuffer> 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<TRowResult> 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<ByteBuffer> columns,<a name="line.427"></a>
+<span class="sourceLineNo">428</span> Map<ByteBuffer, ByteBuffer> 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<TRowResult> getRowTs(ByteBuffer tableName, ByteBuffer row,<a name="line.435"></a>
+<span class="sourceLineNo">436</span> long timestamp, Map<ByteBuffer, ByteBuffer> 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<TRowResult> getRowWithColumnsTs(<a name="line.442"></a>
+<span class="sourceLineNo">443</span> ByteBuffer tableName, ByteBuffer row, List<ByteBuffer> columns,<a name="line.443"></a>
+<span class="sourceLineNo">444</span> long timestamp, Map<ByteBuffer, ByteBuffer> 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<TRowResult> getRows(ByteBuffer tableName,<a name="line.478"></a>
+<span class="sourceLineNo">479</span> List<ByteBuffer> rows,<a name="line.479"></a>
+<span class="sourceLineNo">480</span> Map<ByteBuffer, ByteBuffer> 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<TRowResult> getRowsWithColumns(ByteBuffer tableName,<a name="line.488"></a>
+<span class="sourceLineNo">489</span> List<ByteBuffer> rows,<a name="line.489"></a>
+<span class="sourceLineNo">490</span> List<ByteBuffer> columns,<a name="line.490"></a>
+<span class="sourceLineNo">491</span> Map<ByteBuffer, ByteBuffer> 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<TRowResult> getRowsTs(ByteBuffer tableName,<a name="line.498"></a>
+<span class="sourceLineNo">499</span> List<ByteBuffer> rows,<a name="line.499"></a>
+<span class="sourceLineNo">500</span> long timestamp,<a name="line.500"></a>
+<span class="sourceLineNo">501</span> Map<ByteBuffer, ByteBuffer> 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<TRowResult> getRowsWithColumnsTs(ByteBuffer tableName,<a name="line.507"></a>
+<span class="sourceLineNo">508</span> List<ByteBuffer> rows,<a name="line.508"></a>
+<span class="sourceLineNo">509</span> List<ByteBuffer> columns, long timestamp,<a name="line.509"></a>
+<span class="sourceLineNo">510</span> Map<ByteBuffer, ByteBuffer> 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<Get> gets = new ArrayList<>(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<ByteBuffer, ByteBuffer> 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<ByteBuffer, ByteBuffer> 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<ByteBuffer, ByteBuffer> 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<ByteBuffer, ByteBuffer> 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<ColumnDescriptor> 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<Mutation> mutations, Map<ByteBuffer, ByteBuffer> 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<Mutation> mutations, long timestamp,<a name="line.659"></a>
+<span class="sourceLineNo">660</span> Map<ByteBuffer, ByteBuffer> 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<BatchMutation> rowBatches,<a name="line.721"></a>
+<span class="sourceLineNo">722</span> Map<ByteBuffer, ByteBuffer> 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<BatchMutation> rowBatches, long timestamp,<a name="line.729"></a>
+<span class="sourceLineNo">730</span> Map<ByteBuffer, ByteBuffer> 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<Put> puts = new ArrayList<>();<a name="line.732"></a>
+<span class="sourceLineNo">733</span> List<Delete> deletes = new ArrayList<>();<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<Mutation> 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<TRowResult> 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<>();<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<TRowResult> 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<ByteBuffer, ByteBuffer> 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() && !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 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 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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
-<li>Nested | </li>
-<li><a href="#field.summary">Field</a> | </li>
-<li><a href="#constructor.summary">Constr</a> | </li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail: </li>
-<li><a href="#field.detail">Field</a> | </li>
-<li><a href="#constructor.detail">Constr</a> | </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"> </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> </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> </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> </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> </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> </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> </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> </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> </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><<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>></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#scannerMap">scannerMap</a></span></code> </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"> </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 c,
- <a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> userProvider)</code> </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"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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> scanner,
- boolean 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><org.apache.hadoop.hbase.thrift.generated.TCell></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 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> 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> row,
- byte[] family,
- byte[] qualifier,
- long amount)</code> </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> 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> 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> column,
- long 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> 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> 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> 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> value,
- org.apache.hadoop.hbase.thrift.generated.Mutation 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><<a href="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>> 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> table)</code> </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> tableNameOrRegionName)</code> </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> 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><org.apache.hadoop.hbase.thrift.generated.ColumnDescriptor> 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> 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> 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> 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><<a href="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>> 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> 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> 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><<a href="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>> 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> 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> row,
- long 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><<a href="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>> 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> 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> 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> column,
- long 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><<a href="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>> 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> 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> 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> 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><org.apache.hadoop.hbase.thrift.generated.TCell></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> 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> row,
- byte[] family,
- byte[] 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TCell></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> 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> 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> 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><<a href="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>> 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> 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><<a href="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></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> 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> 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[] tableName,
- byte[] row,
- byte[] family)</code> </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><org.apache.hadoop.hbase.thrift.generated.TRowResult></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> 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> 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TRowResult></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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TRowResult></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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> rows,
- long 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TRowResult></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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TRowResult></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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> columns,
- long 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TRowResult></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> 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> row,
- long 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TRowResult></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> 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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TRowResult></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> 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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> columns,
- long 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><<a href="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>> 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 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[] 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> tableName)</code> </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> buffer)</code> </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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>></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><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#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> 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><org.apache.hadoop.hbase.thrift.generated.TCell></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> 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> row,
- byte[] family,
- byte[] qualifier,
- int 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TCell></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> 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> 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> column,
- int 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TCell></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> 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> row,
- byte[] family,
- byte[] qualifier,
- long timestamp,
- int 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TCell></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> 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> 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> column,
- long timestamp,
- int 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><<a href="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>> 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 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><org.apache.hadoop.hbase.thrift.generated.TIncrement> tincrements)</code> </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> metrics)</code> </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> tableName)</code> </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> tableNameOrRegionName)</code> </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> 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> 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><org.apache.hadoop.hbase.thrift.generated.Mutation> 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><<a href="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>> 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> 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><org.apache.hadoop.hbase.thrift.generated.BatchMutation> 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><<a href="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>> 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> 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><org.apache.hadoop.hbase.thrift.generated.BatchMutation> rowBatches,
- long 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><<a href="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>> 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> 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> 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><org.apache.hadoop.hbase.thrift.generated.Mutation> mutations,
- long 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><<a href="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>> 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 id)</code>
-<div class="block">Removes the scanner associated with the specified ID from the internal
- id->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 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><org.apache.hadoop.hbase.thrift.generated.TRowResult></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 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><org.apache.hadoop.hbase.thrift.generated.TRowResult></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 id,
- int 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> 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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> 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><<a href="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>> 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> 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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> columns,
- long 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><<a href="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>> 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> 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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> 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><<a href="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>> 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> tableName,
- org.apache.hadoop.hbase.thrift.generated.TScan 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><<a href="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>> 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> 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> 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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> 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><<a href="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>> 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> 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> 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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> columns,
- long 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><<a href="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>> 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> effectiveUser)</code> </td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
-<!-- -->
-</a>
-<h3>Methods inherited from class 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 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 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 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 <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><<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>> <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 <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 <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 <a href="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 <a href="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 <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.826">HBaseHandler</a>(org.apache.hadoop.conf.Configuration c,
- <a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> 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[][] <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> 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 <a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#line.782">getTable</a>(byte[] 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 <a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a> <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> 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 int <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> scanner,
- boolean 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 <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 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 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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
-<li><a href="#nested.class.summary">Nested</a> | </li>
-<li><a href="#field.summary">Field</a> | </li>
-<li><a href="#constructor.summary">Constr</a> | </li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail: </li>
-<li><a href="#field.detail">Field</a> | </li>
-<li><a href="#constructor.detail">Constr</a> | </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"> </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 </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 </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 </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> </td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>protected static class </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> </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"> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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"> </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 conf)</code> </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"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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> 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><<a href="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>> 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> qop,
- org.apache.hadoop.conf.Configuration conf)</code> </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><<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>> callQueue,
- int minWorkers,
- int maxWorkers)</code> </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 conf)</code> </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> throwable)</code> </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> </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 conf)</code> </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> </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> </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> </td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
-<!-- -->
-</a>
-<h3>Methods inherited from class 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 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 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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 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 <a href="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 <a href="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 <a href="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 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 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 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 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 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 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 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 <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 <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 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 <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 <a href="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 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 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 <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 <a href="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 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 <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.343">ThriftServerRunner</a>(org.apache.hadoop.conf.Configuration 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 void <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> qop,
- org.apache.hadoop.conf.Configuration conf)</pre>
-</li>
-</ul>
-<a name="run--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>run</h4>
-<pre>public void <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> in interface <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 void <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 void <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 void <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 org.apache.thrift.protocol.TProtocolFactory <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> <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><<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>> callQueue,
- int minWorkers,
- int maxWorkers)</pre>
-</li>
-</ul>
-<a name="getBindAddress-org.apache.hadoop.conf.Configuration-">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getBindAddress</h4>
-<pre>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> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.714">getBindAddress</a>(org.apache.hadoop.conf.Configuration 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 org.apache.hadoop.hbase.thrift.generated.IOError <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> 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 void <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> 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><<a href="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>> 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#line.1984">registerFilters</a>(org.apache.hadoop.conf.Configuration 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 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 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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
-<li><a href="#nested.class.summary">Nested</a> | </li>
-<li><a href="#field.summary">Field</a> | </li>
-<li><a href="#constructor.summary">Constr</a> | </li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail: </li>
-<li><a href="#field.detail">Field</a> | </li>
-<li><a href="#constructor.detail">Constr</a> | </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 © 2007–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 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 Class</span></a></li>
<li>Next 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 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 Class</span></a></li>
<li>Next 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All 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 © 2007–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 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 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 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> </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> </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> </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 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 processor,
org.apache.thrift.protocol.TProtocolFactory protocolFactory,
org.apache.hadoop.security.UserGroupInformation serviceUGI,
org.apache.hadoop.conf.Configuration conf,
- <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a> hbaseHandler,
+ <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a> handler,
boolean securityEnabled,
boolean doAsEnabled)</code> </td>
</tr>
@@ -345,13 +345,13 @@ extends org.apache.thrift.server.TServlet</pre>
<pre>private final transient 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 <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 <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 protocolFactory,
org.apache.hadoop.security.UserGroupInformation serviceUGI,
org.apache.hadoop.conf.Configuration conf,
- <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a> hbaseHandler,
+ <a href="../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a> handler,
boolean securityEnabled,
boolean 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 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 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 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 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 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 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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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>[] 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 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> qop,
+ org.apache.hadoop.conf.Configuration conf)</code> </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><<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>> callQueue,
+ int minWorkers,
+ int maxWorkers)</code> </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 conf,
+ <a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> userProvider)</code> </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> </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 conf)</code> </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> </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 serverTransport,
+ org.apache.thrift.protocol.TProtocolFactory protocolFactory,
+ org.apache.thrift.TProcessor processor,
+ org.apache.thrift.transport.TTransportFactory 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> inetSocketAddress)</code> </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 serverTransport,
+ org.apache.thrift.protocol.TProtocolFactory protocolFactory,
+ org.apache.thrift.TProcessor processor,
+ org.apache.thrift.transport.TTransportFactory 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> inetSocketAddress)</code> </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 serverTransport,
+ org.apache.thrift.protocol.TProtocolFactory protocolFactory,
+ org.apache.thrift.TProcessor processor,
+ org.apache.thrift.transport.TTransportFactory 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> inetSocketAddress)</code> </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 protocolFactory,
+ org.apache.thrift.TProcessor processor,
+ org.apache.thrift.transport.TTransportFactory 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> inetSocketAddress)</code> </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>[] args)</code> </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 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> option,
org.apache.hadoop.conf.Configuration 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> destConfKey)</code> </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 cmd,
+ org.apache.hbase.thirdparty.org.apache.commons.cli.Options options)</code> </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 options,
int exitCode)</code> </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>[] 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 conf)</code> </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>[] strings)</code> </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> </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> </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> </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 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 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 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 org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.45">LOG</a></pre>
+<pre>private static final 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 <a href="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 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 <a href="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 <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 <a href="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 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 <a href="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 <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 <a href="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 <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 <a href="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 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 <a href="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 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 <a href="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 <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 <a href="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 <a href="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 <a href="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 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 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 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 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 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 <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 <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 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 <a href="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 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 <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.71">ThriftServer</a>(org.apache.hadoop.conf.Configuration conf)</pre>
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.194">ThriftServer</a>(org.apache.hadoop.conf.Configuration 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 void <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 void <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 void <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> qop,
+ org.apache.hadoop.conf.Configuration 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 <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.270">createHandler</a>(org.apache.hadoop.conf.Configuration conf,
+ <a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> 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 org.apache.thrift.TProcessor <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.75">printUsageAndExit</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.Options options,
- int exitCode)
- throws org.apache.hadoop.util.Shell.ExitCodeException</pre>
+<pre>protected void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.280">printUsageAndExit</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.Options options,
+ int 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 <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>[] 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 void <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 void <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 org.apache.thrift.server.TServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.501">getTNonBlockingServer</a>(org.apache.thrift.transport.TNonblockingServerTransport serverTransport,
+ org.apache.thrift.protocol.TProtocolFactory protocolFactory,
+ org.apache.thrift.TProcessor processor,
+ org.apache.thrift.transport.TTransportFactory 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> 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 org.apache.thrift.server.TServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.512">getTHsHaServer</a>(org.apache.thrift.transport.TNonblockingServerTransport serverTransport,
+ org.apache.thrift.protocol.TProtocolFactory protocolFactory,
+ org.apache.thrift.TProcessor processor,
+ org.apache.thrift.transport.TTransportFactory 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> 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 org.apache.thrift.server.TServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.529">getTThreadedSelectorServer</a>(org.apache.thrift.transport.TNonblockingServerTransport serverTransport,
+ org.apache.thrift.protocol.TProtocolFactory protocolFactory,
+ org.apache.thrift.TProcessor processor,
+ org.apache.thrift.transport.TTransportFactory 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> 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 org.apache.thrift.server.TServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.549">getTThreadPoolServer</a>(org.apache.thrift.protocol.TProtocolFactory protocolFactory,
+ org.apache.thrift.TProcessor processor,
+ org.apache.thrift.transport.TTransportFactory 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> 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 org.apache.thrift.protocol.TProtocolFactory <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> <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><<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>> callQueue,
+ int minWorkers,
+ int maxWorkers)</pre>
+</li>
+</ul>
+<a name="getBindAddress-org.apache.hadoop.conf.Configuration-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getBindAddress</h4>
+<pre>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> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.593">getBindAddress</a>(org.apache.hadoop.conf.Configuration 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.600">registerFilters</a>(org.apache.hadoop.conf.Configuration 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.619">addOptions</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.Options 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.654">parseCommandLine</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine cmd,
+ org.apache.hbase.thirdparty.org.apache.commons.cli.Options 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 void <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>[] args)
+<pre>private void <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>[] 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.203">stop</a>()</pre>
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.215">optionToConf</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine 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> option,
- org.apache.hadoop.conf.Configuration 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> destConfKey)</pre>
+<pre>protected static void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftServer.html#line.749">optionToConf</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine 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> option,
+ org.apache.hadoop.conf.Configuration 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> destConfKey)</pre>
+</li>
+</ul>
+<a name="run--">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>run</h4>
+<pre>public int <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 int <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>[] 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> in interface <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 void <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>[] args)
+<pre>public static void <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>[] 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 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 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 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<Integer, ResultScanner> scannerMap = new ConcurrentHashMap<>();<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<Integer, ResultScanner> scannerMap = new ConcurrentHashMap<>();<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) &&<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 && 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 <code>null</code> 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) &&<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 && 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 <code>null</code> 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<Boolean> existsAll(ByteBuffer table, List<TGet> 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<Boolean> result = new ArrayList<>(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<TResult> getMultiple(ByteBuffer table, List<TGet> 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<Boolean> existsAll(ByteBuffer table, List<TGet> 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<Boolean> result = new ArrayList<>(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<TResult> getMultiple(ByteBuffer table, List<TGet> 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<TPut> 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<TDelete> deleteMultiple(ByteBuffer table, List<TDelete> 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<TPut> 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<TDelete> deleteMultiple(ByteBuffer table, List<TDelete> 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<TResult> 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<TResult> 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<TResult> 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<TResult> 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<TResult> 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<TResult> 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> </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> </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> </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> </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> </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 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> </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 conf)</code> </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> bindValue,
- int listenPort)</code> </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 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 workerThreads,
- int maxCallQueueSize,
- <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics)</code> </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 conf,
+ <a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> userProvider)</code> </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 conf,
- org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine cmd)</code> </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> </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 nonblocking,
- boolean hsha,
- boolean selector)</code> </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 conf,
- org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine cmd)</code> </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> </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 conf,
- org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine cmd)</code> </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 workerThreads,
- int selectorThreads,
- int maxCallQueueSize,
- int readTimeout,
- int backlog,
- boolean nonblocking,
- boolean hsha,
- boolean selector,
- <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics,
- org.apache.thrift.protocol.TProtocolFactory protocolFactory,
- org.apache.thrift.TProcessor processor,
- org.apache.thrift.transport.TTransportFactory 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> inetSocketAddress)</code> </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 protocolFactory,
- org.apache.thrift.TProcessor processor,
- org.apache.thrift.transport.TTransportFactory transportFactory,
- int workerThreads,
- int 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> inetSocketAddress,
- <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics)</code> </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 protocolFactory,
- org.apache.thrift.TProcessor processor,
- org.apache.thrift.transport.TTransportFactory 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> inetSocketAddress)</code> </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 isCompact)</code> </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 protocolFactory,
- org.apache.thrift.TProcessor processor,
- org.apache.thrift.transport.TTransportFactory transportFactory,
- int workerThreads,
- int selectorThreads,
- int 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> inetSocketAddress,
- <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics)</code> </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 protocolFactory,
- org.apache.thrift.TProcessor processor,
- org.apache.thrift.transport.TTransportFactory transportFactory,
- int 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> inetSocketAddress,
- int backlog,
- int clientTimeout,
- <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics)</code> </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> 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> 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> host,
- boolean framed,
- int frameSize)</code> </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>[] 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 conf,
- org.apache.hbase.thirdparty.org.apache.commons.cli.Options 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>[] args)</code> </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> </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 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>[] args)</code> </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 cmd,
+ org.apache.hbase.thirdparty.org.apache.commons.cli.Options options)</code> </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 conf)</code> </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 options,
+ int exitCode)</code> </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 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 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 <a href="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 <a href="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 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 <a href="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 <a href="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 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 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 <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.125">ThriftServer</a>()</pre>
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.57">ThriftServer</a>(org.apache.hadoop.conf.Configuration 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 void <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 org.apache.hbase.thirdparty.org.apache.commons.cli.Options <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 org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.170">parseArguments</a>(org.apache.hadoop.conf.Configuration conf,
- org.apache.hbase.thirdparty.org.apache.commons.cli.Options 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>[] 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 org.apache.thrift.protocol.TProtocolFactory <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.176">getTProtocolFactory</a>(boolean 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 org.apache.thrift.transport.TTransportFactory <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> 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> 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> host,
- boolean framed,
- int frameSize)</pre>
-</li>
-</ul>
-<a name="bindToPort-java.lang.String-int-">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>bindToPort</h4>
-<pre>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> <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> bindValue,
- int 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.62">printUsageAndExit</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.Options options,
+ int 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> in class <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 org.apache.thrift.server.TServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.249">getTNonBlockingServer</a>(org.apache.thrift.protocol.TProtocolFactory protocolFactory,
- org.apache.thrift.TProcessor processor,
- org.apache.thrift.transport.TTransportFactory 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> inetSocketAddress)
- throws org.apache.thrift.transport.TTransportException</pre>
+<h4>createHandler</h4>
+<pre>protected <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/thrift2/ThriftServer.html#line.75">createHandler</a>(org.apache.hadoop.conf.Configuration conf,
+ <a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> 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> in class <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 org.apache.thrift.server.TServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.261">getTHsHaServer</a>(org.apache.thrift.protocol.TProtocolFactory protocolFactory,
- org.apache.thrift.TProcessor processor,
- org.apache.thrift.transport.TTransportFactory transportFactory,
- int workerThreads,
- int 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> inetSocketAddress,
- <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics)
- throws org.apache.thrift.transport.TTransportException</pre>
+<h4>createProcessor</h4>
+<pre>protected org.apache.thrift.TProcessor <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> in class <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 org.apache.thrift.server.TServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.282">getTThreadedSelectorServer</a>(org.apache.thrift.protocol.TProtocolFactory protocolFactory,
- org.apache.thrift.TProcessor processor,
- org.apache.thrift.transport.TTransportFactory transportFactory,
- int workerThreads,
- int selectorThreads,
- int 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> inetSocketAddress,
- <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics)
- throws org.apache.thrift.transport.TTransportException</pre>
+<h4>addOptions</h4>
+<pre>protected void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.87">addOptions</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.Options options)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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> in class <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 <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> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.306">createExecutor</a>(int workerThreads,
- int maxCallQueueSize,
- <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> 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 org.apache.thrift.server.TServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.324">getTThreadPoolServer</a>(org.apache.thrift.protocol.TProtocolFactory protocolFactory,
- org.apache.thrift.TProcessor processor,
- org.apache.thrift.transport.TTransportFactory transportFactory,
- int 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> inetSocketAddress,
- int backlog,
- int clientTimeout,
- <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics)
- throws org.apache.thrift.transport.TTransportException</pre>
+<h4>parseCommandLine</h4>
+<pre>protected void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.94">parseCommandLine</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine cmd,
+ org.apache.hbase.thirdparty.org.apache.commons.cli.Options 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> in class <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.358">registerFilters</a>(org.apache.hadoop.conf.Configuration 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 void <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>[] args)
+<pre>public static void <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>[] 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 int <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>[] 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> in interface <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 <a href="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.535">getImplType</a>(boolean nonblocking,
- boolean hsha,
- boolean 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 <a href="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.549">getBindAddress</a>(org.apache.hadoop.conf.Configuration conf,
- org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine 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 int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.560">getListenPort</a>(org.apache.hadoop.conf.Configuration conf,
- org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine 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 int <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.574">getReadTimeout</a>(org.apache.hadoop.conf.Configuration conf,
- org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine cmd)</pre>
-</li>
-</ul>
-<a name="startInfoServer-org.apache.hadoop.conf.Configuration-">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>startInfoServer</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.589">startInfoServer</a>(org.apache.hadoop.conf.Configuration 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 org.apache.thrift.server.TServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftServer.html#line.601">getServer</a>(int workerThreads,
- int selectorThreads,
- int maxCallQueueSize,
- int readTimeout,
- int backlog,
- boolean nonblocking,
- boolean hsha,
- boolean selector,
- <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics,
- org.apache.thrift.protocol.TProtocolFactory protocolFactory,
- org.apache.thrift.TProcessor processor,
- org.apache.thrift.transport.TTransportFactory 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> 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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../../allclasses-noframe.html">All 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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../../allclasses-noframe.html">All 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 © 2007–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"> </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"> </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> </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"> </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> </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> </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> </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> </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><E> (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><T>, 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><T>)</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><T>)</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><T>)</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"> </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"> </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"> </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"> </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"> </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"> </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"> </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><E> (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><T>, 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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li><a href="#nested.class.summary">Nested</a> | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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"> </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 </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> </td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected static class </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> </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"> </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> </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> </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> </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> </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><<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>></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#scannerMap">scannerMap</a></span></code> </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 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"> </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 c,
+ <a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> userProvider)</code> </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"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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> 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><<a href="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>> 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> scanner,
+ boolean 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><org.apache.hadoop.hbase.thrift.generated.TCell></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 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> 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> row,
+ byte[] family,
+ byte[] qualifier,
+ long amount)</code> </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> 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> 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> column,
+ long 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> 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> 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> 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> value,
+ org.apache.hadoop.hbase.thrift.generated.Mutation 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><<a href="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>> 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> table)</code> </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> tableNameOrRegionName)</code> </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> 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><org.apache.hadoop.hbase.thrift.generated.ColumnDescriptor> 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> 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> 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> 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><<a href="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>> 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> 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> 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><<a href="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>> 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> 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> row,
+ long 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><<a href="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>> 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> 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> 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> column,
+ long 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><<a href="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>> 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> 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> 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> 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><org.apache.hadoop.hbase.thrift.generated.TCell></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> 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> row,
+ byte[] family,
+ byte[] 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TCell></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> 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> 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> 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><<a href="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>> 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> 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><<a href="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></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> 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> throwable)</code> </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> 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[] tableName,
+ byte[] row,
+ byte[] family)</code> </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><org.apache.hadoop.hbase.thrift.generated.TRowResult></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> 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> 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TRowResult></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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TRowResult></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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> rows,
+ long 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TRowResult></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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TRowResult></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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> columns,
+ long 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TRowResult></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> 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> row,
+ long 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TRowResult></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> 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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TRowResult></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> 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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> columns,
+ long 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><<a href="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>> 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 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> buffer)</code> </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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>></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><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#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> 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><org.apache.hadoop.hbase.thrift.generated.TCell></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> 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> row,
+ byte[] family,
+ byte[] qualifier,
+ int 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TCell></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> 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> 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> column,
+ int 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TCell></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> 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> row,
+ byte[] family,
+ byte[] qualifier,
+ long timestamp,
+ int 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><<a href="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>> 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><org.apache.hadoop.hbase.thrift.generated.TCell></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> 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> 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> column,
+ long timestamp,
+ int 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><<a href="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>> 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 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><org.apache.hadoop.hbase.thrift.generated.TIncrement> tincrements)</code> </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> tableName)</code> </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> tableNameOrRegionName)</code> </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> 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> 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><org.apache.hadoop.hbase.thrift.generated.Mutation> 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><<a href="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>> 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> 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><org.apache.hadoop.hbase.thrift.generated.BatchMutation> 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><<a href="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>> 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> 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><org.apache.hadoop.hbase.thrift.generated.BatchMutation> rowBatches,
+ long 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><<a href="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>> 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> 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> 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><org.apache.hadoop.hbase.thrift.generated.Mutation> mutations,
+ long 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><<a href="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>> 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 id)</code>
+<div class="block">Removes the scanner associated with the specified ID from the internal
+ id->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 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><org.apache.hadoop.hbase.thrift.generated.TRowResult></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#scannerGet-int-">scannerGet</a></span>(int 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><org.apache.hadoop.hbase.thrift.generated.TRowResult></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 id,
+ int 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> 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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> 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><<a href="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>> 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> 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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> columns,
+ long 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><<a href="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>> 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> 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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> 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><<a href="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>> 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> tableName,
+ org.apache.hadoop.hbase.thrift.generated.TScan 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><<a href="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>> 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> 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> 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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> 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><<a href="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>> 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> 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> 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> 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> columns,
+ long 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><<a href="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>> 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 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 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 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 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 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 <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><<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>> <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 <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#line.157">ThriftHBaseServiceHandler</a>(org.apache.hadoop.conf.Configuration c,
+ <a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> 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[][] <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> 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 int <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> scanner,
+ boolean 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 <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.ResultScannerWrapper</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#line.142">getScanner</a>(int 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 <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler.ResultScannerWrapper</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#line.153">removeScanner</a>(int id)</pre>
+<div class="block">Removes the scanner associated with the specified ID from the internal
+ id->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 void <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> tableName)
+ throws org.apache.hadoop.hbase.thrift.generated.IOError</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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> in interface <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 void <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> tableName)
+ throws org.apache.hadoop.hbase.thrift.generated.IOError</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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> in interface <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<E> coprocEnvironments =<a name="line.81"></a>
-<span class="sourceLineNo">082</span> new SortedList<>(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<String> coprocessorNames =<a name="line.101"></a>
-<span class="sourceLineNo">102</span> Collections.synchronizedSet(new HashSet<String>());<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span> public static Set<String> 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<String> getCoprocessors() {<a name="line.117"></a>
-<span class="sourceLineNo">118</span> Set<String> returnValue = new TreeSet<>();<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<?> 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<?> 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<? extends C> 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<?> 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<C>) 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<?> 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<C>) 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 <T extends C> T findCoprocessor(Class<T> 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<E> coprocEnvironments =<a name="line.84"></a>
+<span class="sourceLineNo">085</span> new SortedList<>(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<String> coprocessorNames =<a name="line.104"></a>
+<span class="sourceLineNo">105</span> Collections.synchronizedSet(new HashSet<String>());<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span> public static Set<String> 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<String> getCoprocessors() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span> Set<String> returnValue = new TreeSet<>();<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<?> 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<?> 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 && 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<? extends C> 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<?> 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<C>) 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<?> 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<C>) 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 <T extends C> List<T> findCoprocessors(Class<T> cls) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span> ArrayList<T> ret = new ArrayList<>();<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 <T extends C> T findCoprocessor(Class<T> 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<ClassLoader> getExternalClassLoaders() {<a name="line.357"></a>
-<span class="sourceLineNo">358</span> Set<ClassLoader> externalClassLoaders = new HashSet<>();<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<CoprocessorEnvironment> {<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() < 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() > 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() < 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() > 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<Class<? extends Coprocessor>> legacyWarning =<a name="line.464"></a>
-<span class="sourceLineNo">465</span> new ConcurrentSkipListSet<>(<a name="line.465"></a>
-<span class="sourceLineNo">466</span> new Comparator<Class<? extends Coprocessor>>() {<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<? extends Coprocessor> c1, Class<? extends Coprocessor> 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<C, O> extends Function<C, Optional<O>> {}<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 <T extends C> List<T> findCoprocessors(Class<T> cls) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span> ArrayList<T> ret = new ArrayList<>();<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<ClassLoader> getExternalClassLoaders() {<a name="line.368"></a>
+<span class="sourceLineNo">369</span> Set<ClassLoader> externalClassLoaders = new HashSet<>();<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<CoprocessorEnvironment> {<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() < 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() > 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() < 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() > 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<Class<? extends Coprocessor>> legacyWarning =<a name="line.475"></a>
+<span class="sourceLineNo">476</span> new ConcurrentSkipListSet<>(<a name="line.476"></a>
+<span class="sourceLineNo">477</span> new Comparator<Class<? extends Coprocessor>>() {<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<? extends Coprocessor> c1, Class<? extends Coprocessor> 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<O> extends ObserverContextImpl<E> {<a name="line.487"></a>
-<span class="sourceLineNo">488</span> ObserverGetter<C, O> observerGetter;<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span> ObserverOperation(ObserverGetter<C, O> 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<C, O> 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<C, O> extends Function<C, Optional<O>> {}<a name="line.496"></a>
<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span> ObserverOperation(ObserverGetter<C, O> 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<C, O> 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<O> extends ObserverOperation<O> {<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<C, O> 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<C, O> 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<C, O> 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<O> 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<O, R> extends ObserverOperation<O> {<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>©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 –
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 – 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 – 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 – 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 – 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<E> coprocEnvironments =<a name="line.81"></a>
-<span class="sourceLineNo">082</span> new SortedList<>(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<String> coprocessorNames =<a name="line.101"></a>
-<span class="sourceLineNo">102</span> Collections.synchronizedSet(new HashSet<String>());<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span> public static Set<String> 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<String> getCoprocessors() {<a name="line.117"></a>
-<span class="sourceLineNo">118</span> Set<String> returnValue = new TreeSet<>();<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<?> 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<?> 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<? extends C> 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<?> 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<C>) 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<?> 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<C>) 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 <T extends C> T findCoprocessor(Class<T> 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<E> coprocEnvironments =<a name="line.84"></a>
+<span class="sourceLineNo">085</span> new SortedList<>(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<String> coprocessorNames =<a name="line.104"></a>
+<span class="sourceLineNo">105</span> Collections.synchronizedSet(new HashSet<String>());<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span> public static Set<String> 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<String> getCoprocessors() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span> Set<String> returnValue = new TreeSet<>();<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<?> 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<?> 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 && 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<? extends C> 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<?> 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<C>) 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<?> 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<C>) 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 <T extends C> List<T> findCoprocessors(Class<T> cls) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span> ArrayList<T> ret = new ArrayList<>();<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 <T extends C> T findCoprocessor(Class<T> 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<ClassLoader> getExternalClassLoaders() {<a name="line.357"></a>
-<span class="sourceLineNo">358</span> Set<ClassLoader> externalClassLoaders = new HashSet<>();<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<CoprocessorEnvironment> {<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() < 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() > 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() < 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() > 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<Class<? extends Coprocessor>> legacyWarning =<a name="line.464"></a>
-<span class="sourceLineNo">465</span> new ConcurrentSkipListSet<>(<a name="line.465"></a>
-<span class="sourceLineNo">466</span> new Comparator<Class<? extends Coprocessor>>() {<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<? extends Coprocessor> c1, Class<? extends Coprocessor> 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<C, O> extends Function<C, Optional<O>> {}<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 <T extends C> List<T> findCoprocessors(Class<T> cls) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span> ArrayList<T> ret = new ArrayList<>();<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<ClassLoader> getExternalClassLoaders() {<a name="line.368"></a>
+<span class="sourceLineNo">369</span> Set<ClassLoader> externalClassLoaders = new HashSet<>();<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<CoprocessorEnvironment> {<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() < 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() > 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() < 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() > 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<Class<? extends Coprocessor>> legacyWarning =<a name="line.475"></a>
+<span class="sourceLineNo">476</span> new ConcurrentSkipListSet<>(<a name="line.476"></a>
+<span class="sourceLineNo">477</span> new Comparator<Class<? extends Coprocessor>>() {<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<? extends Coprocessor> c1, Class<? extends Coprocessor> 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<O> extends ObserverContextImpl<E> {<a name="line.487"></a>
-<span class="sourceLineNo">488</span> ObserverGetter<C, O> observerGetter;<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span> ObserverOperation(ObserverGetter<C, O> 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<C, O> 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<C, O> extends Function<C, Optional<O>> {}<a name="line.496"></a>
<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span> ObserverOperation(ObserverGetter<C, O> 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<C, O> 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<O> extends ObserverOperation<O> {<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<C, O> 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<C, O> 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<C, O> 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<O> 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<O, R> extends ObserverOperation<O> {<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> buffer)</code> </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> buffer)</code> </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> 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> 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><<a href="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>> 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[] 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[] tableName,
byte[] row,
byte[] family)</code> </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> </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> </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> </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> </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> 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> scanner,
boolean 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> 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> resultScanner,
boolean sortResultColumns)</code> </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[] 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[] 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> tableName)</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">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> tableName)</code> </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> table)</code> </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> table)</code> </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> 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> 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> tableName)</code> </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><E> (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><T>, 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><<a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>></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 int <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> env1,
+<pre>public int <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> env1,
<a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a> 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><C,O>
+public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.496">CoprocessorHost.ObserverGetter</a><C,O>
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><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><O>></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><O>
+<pre>private abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.498">CoprocessorHost.ObserverOperation</a><O>
extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContextImpl</a><E></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><<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>> <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><<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>> <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><<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>> 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><<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>> 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><<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>> 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><<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>> observerGetter,
<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> 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><<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>> 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><<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>> observerGetter,
boolean 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><<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>> 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><<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>> observerGetter,
<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> user,
boolean 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html#line.507">callObserver</a>()
+<pre>abstract void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html#line.508">postEnvCall</a>()</pre>
+<pre>protected void <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><O,R>
+<pre>public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.556">CoprocessorHost.ObserverOperationWithResult</a><O,R>
extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverOperation</a><O></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 <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 <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 <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><<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>> observerGetter,
+<pre>public <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><<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>> observerGetter,
<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">R</a> 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 <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><<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>> observerGetter,
+<pre>public <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><<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>> observerGetter,
<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">R</a> result,
boolean 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 <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><<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>> observerGetter,
+<pre>public <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><<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>> observerGetter,
<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">R</a> result,
<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> 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 <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><<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>> observerGetter,
+<pre>private <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><<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>> observerGetter,
<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">R</a> result,
<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> user,
boolean 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 <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.546">call</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">O</a> observer)
+<pre>protected abstract <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.557">call</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="type parameter in CoprocessorHost.ObserverOperationWithResult">O</a> 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 <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.570">getResult</a>()</pre>
+<pre>protected <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.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 <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html#line.575">callObserver</a>()
+<pre>void <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><O>
+<pre>public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.525">CoprocessorHost.ObserverOperationWithoutResult</a><O>
extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverOperation</a><O></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 <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><<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>> observerGetter)</pre>
+<pre>public <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><<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>> 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 <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><<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>> observerGetter,
+<pre>public <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><<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>> observerGetter,
<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> 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 <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><<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>> observerGetter,
+<pre>public <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><<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>> observerGetter,
<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> user,
boolean 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 void <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> observer)
+<pre>protected abstract void <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> 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 <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html#line.537">callObserver</a>()
+<pre>void <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 – 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="" /> Warnings</th>
<th><img src="images/icon_error_sml.gif" alt="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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>"true"</tt></li></ul></td>
<td>124</td>
<td><img src="images/icon_error_sml.gif" alt="" /> 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="" /> 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>"top"</tt></li></ul></td>
<td>1129</td>
<td><img src="images/icon_error_sml.gif" alt="" /> 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="" /> 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>"true"</tt></li></ul></td>
<td>89</td>
<td><img src="images/icon_error_sml.gif" alt="" /> 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>"2"</tt></li></ul></td>
<td>4616</td>
<td><img src="images/icon_error_sml.gif" alt="" /> 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>"2"</tt></li></ul></td>
-<td>727</td>
+<td>726</td>
<td><img src="images/icon_error_sml.gif" alt="" /> 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="" /> 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="" /> 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="" /> 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>"^package.*|^import.*|a href|href|http://|https://|ftp://|org.apache.thrift.|com.google.protobuf.|hbase.protobuf.generated"</tt></li></ul></td>
<td>1424</td>
<td><img src="images/icon_error_sml.gif" alt="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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="" /> 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 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 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 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 </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> </td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private static class </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> </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> </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> </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> </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> </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> </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> </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><<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>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#scannerMap">scannerMap</a></span></code> </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 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"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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> tableName)</code> </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 handler,
- <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics)</code> </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> </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> table,
org.apache.hadoop.hbase.thrift2.generated.TScan 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> table,
org.apache.hadoop.hbase.thrift2.generated.TPut 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> 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><org.apache.hadoop.hbase.thrift2.generated.TPut> 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 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> effectiveUser)</code> </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 tTableName)</code> </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 tableName,
boolean 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 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 org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.105">LOG</a></pre>
+<pre>private static final 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 <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 <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 <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><<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>> <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 <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 <a href="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 <a href="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 <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><<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>> <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 <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 <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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.119">isReadOnly</a></pre>
+<pre>private 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 conf,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.148">ThriftHBaseServiceHandler</a>(org.apache.hadoop.conf.Configuration conf,
<a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> 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 org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.121">newInstance</a>(org.apache.hadoop.hbase.thrift2.generated.THBaseService.Iface handler,
- <a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics)</pre>
-</li>
-</ul>
-<a name="now--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>now</h4>
-<pre>private static long <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 <a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a> <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> tableName)</pre>
+<pre>protected <a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a> <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> 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> in class <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 <a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a> <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> tableName)</pre>
+<pre>private <a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a> <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> 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 void <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> table)
+<pre>private void <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> 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 org.apache.hadoop.hbase.thrift2.generated.TIOError <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> e)</pre>
+<pre>private org.apache.hadoop.hbase.thrift2.generated.TIOError <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> 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 int <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> scanner)</pre>
+<pre>private int <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> 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 <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/thrift2/ThriftHBaseServiceHandler.html#line.250">getScanner</a>(int id)</pre>
+<pre>private <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/thrift2/ThriftHBaseServiceHandler.html#line.201">getScanner</a>(int 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 <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> effectiveUser)</pre>
-</li>
-</ul>
<a name="removeScanner-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeScanner</h4>
-<pre>protected <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/thrift2/ThriftHBaseServiceHandler.html#line.263">removeScanner</a>(int id)</pre>
+<pre>protected <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/thrift2/ThriftHBaseServiceHandler.html#line.210">removeScanner</a>(int 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 boolean <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> table,
+<pre>public boolean <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> table,
org.apache.hadoop.hbase.thrift2.generated.TGet 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 <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><<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>> <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> table,
+<pre>public <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><<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>> <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> 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><org.apache.hadoop.hbase.thrift2.generated.TGet> 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 org.apache.hadoop.hbase.thrift2.generated.TResult <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> table,
+<pre>public org.apache.hadoop.hbase.thrift2.generated.TResult <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> table,
org.apache.hadoop.hbase.thrift2.generated.TGet 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 <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><org.apache.hadoop.hbase.thrift2.generated.TResult> <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> table,
+<pre>public <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><org.apache.hadoop.hbase.thrift2.generated.TResult> <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> 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><org.apache.hadoop.hbase.thrift2.generated.TGet> 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 void <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> table,
+<pre>public void <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> table,
org.apache.hadoop.hbase.thrift2.generated.TPut 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 boolean <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> table,
+<pre>public boolean <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> 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> 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> 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> 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 void <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> table,
+<pre>public void <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> 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><org.apache.hadoop.hbase.thrift2.generated.TPut> 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 void <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> table,
+<pre>public void <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> table,
org.apache.hadoop.hbase.thrift2.generated.TDelete 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 <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><org.apache.hadoop.hbase.thrift2.generated.TDelete> <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> table,
+<pre>public <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><org.apache.hadoop.hbase.thrift2.generated.TDelete> <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> 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><org.apache.hadoop.hbase.thrift2.generated.TDelete> 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 boolean <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> table,
+<pre>public boolean <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> 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> 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> 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> 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 boolean <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> table,
+<pre>public boolean <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> 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> 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> 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> 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 org.apache.hadoop.hbase.thrift2.generated.TResult <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> table,
+<pre>public org.apache.hadoop.hbase.thrift2.generated.TResult <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> table,
org.apache.hadoop.hbase.thrift2.generated.TIncrement 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 org.apache.hadoop.hbase.thrift2.generated.TResult <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> table,
+<pre>public org.apache.hadoop.hbase.thrift2.generated.TResult <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> table,
org.apache.hadoop.hbase.thrift2.generated.TAppend 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 int <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> table,
+<pre>public int <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> table,
org.apache.hadoop.hbase.thrift2.generated.TScan 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 <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><org.apache.hadoop.hbase.thrift2.generated.TResult> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.472">getScannerRows</a>(int scannerId,
+<pre>public <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><org.apache.hadoop.hbase.thrift2.generated.TResult> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.419">getScannerRows</a>(int scannerId,
int 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 <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><org.apache.hadoop.hbase.thrift2.generated.TResult> <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> table,
+<pre>public <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><org.apache.hadoop.hbase.thrift2.generated.TResult> <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> table,
org.apache.hadoop.hbase.thrift2.generated.TScan scan,
int 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.511">closeScanner</a>(int scannerId)
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.458">closeScanner</a>(int 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 void <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> table,
+<pre>public void <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> table,
org.apache.hadoop.hbase.thrift2.generated.TRowMutations 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 <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><org.apache.hadoop.hbase.thrift2.generated.THRegionLocation> <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> table)
+<pre>public <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><org.apache.hadoop.hbase.thrift2.generated.THRegionLocation> <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> table)
throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
org.apache.thrift.TException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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 org.apache.hadoop.hbase.thrift2.generated.THRegionLocation <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> table,
+<pre>public org.apache.hadoop.hbase.thrift2.generated.THRegionLocation <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> 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> row,
boolean 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.583">checkReadOnlyMode</a>()
+<pre>private void <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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.589">isReadOnly</a>()</pre>
+<pre>private boolean <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 org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.594">getTableDescriptor</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName table)
+<pre>public org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.541">getTableDescriptor</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName table)
throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
org.apache.thrift.TException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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 <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><org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor> <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><org.apache.hadoop.hbase.thrift2.generated.TTableName> tables)
+<pre>public <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><org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor> <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><org.apache.hadoop.hbase.thrift2.generated.TTableName> tables)
throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
org.apache.thrift.TException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.618">tableExists</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName tTableName)
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.565">tableExists</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName 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 <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><org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor> <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> regex,
+<pre>public <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><org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor> <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> regex,
boolean 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 <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><org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor> <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> name)
+<pre>public <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><org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor> <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> name)
throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
org.apache.thrift.TException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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 <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><org.apache.hadoop.hbase.thrift2.generated.TTableName> <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> regex,
+<pre>public <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><org.apache.hadoop.hbase.thrift2.generated.TTableName> <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> regex,
boolean 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 <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><org.apache.hadoop.hbase.thrift2.generated.TTableName> <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> name)
+<pre>public <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><org.apache.hadoop.hbase.thrift2.generated.TTableName> <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> name)
throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
org.apache.thrift.TException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.676">createTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor desc,
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.623">createTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.688">deleteTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName tableName)
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.635">deleteTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName tableName)
throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
org.apache.thrift.TException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.698">truncateTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName tableName,
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.645">truncateTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName tableName,
boolean 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.709">enableTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName tableName)
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.656">enableTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName tableName)
throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
org.apache.thrift.TException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.719">disableTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName tableName)
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.666">disableTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName tableName)
throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
org.apache.thrift.TException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.729">isTableEnabled</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName tableName)
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.676">isTableEnabled</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName 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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.739">isTableDisabled</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName tableName)
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.686">isTableDisabled</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName 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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.749">isTableAvailable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName tableName)
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.696">isTableAvailable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName 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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.759">isTableAvailableWithSplit</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName tableName,
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.706">isTableAvailableWithSplit</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName 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><<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>> 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.771">addColumnFamily</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName tableName,
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.718">addColumnFamily</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName tableName,
org.apache.hadoop.hbase.thrift2.generated.TColumnFamilyDescriptor 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.783">deleteColumnFamily</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName tableName,
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.730">deleteColumnFamily</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName 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> 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.794">modifyColumnFamily</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName tableName,
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.741">modifyColumnFamily</a>(org.apache.hadoop.hbase.thrift2.generated.TTableName tableName,
org.apache.hadoop.hbase.thrift2.generated.TColumnFamilyDescriptor 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.806">modifyTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor desc)
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.753">modifyTable</a>(org.apache.hadoop.hbase.thrift2.generated.TTableDescriptor desc)
throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
org.apache.thrift.TException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.816">createNamespace</a>(org.apache.hadoop.hbase.thrift2.generated.TNamespaceDescriptor namespaceDesc)
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.763">createNamespace</a>(org.apache.hadoop.hbase.thrift2.generated.TNamespaceDescriptor namespaceDesc)
throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
org.apache.thrift.TException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.826">modifyNamespace</a>(org.apache.hadoop.hbase.thrift2.generated.TNamespaceDescriptor namespaceDesc)
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.773">modifyNamespace</a>(org.apache.hadoop.hbase.thrift2.generated.TNamespaceDescriptor namespaceDesc)
throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
org.apache.thrift.TException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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 void <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> name)
+<pre>public void <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> name)
throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
org.apache.thrift.TException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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 org.apache.hadoop.hbase.thrift2.generated.TNamespaceDescriptor <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> name)
+<pre>public org.apache.hadoop.hbase.thrift2.generated.TNamespaceDescriptor <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> name)
throws org.apache.hadoop.hbase.thrift2.generated.TIOError,
org.apache.thrift.TException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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 <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><org.apache.hadoop.hbase.thrift2.generated.TNamespaceDescriptor> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#line.855">listNamespaceDescriptors</a>()
+<pre>public <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><org.apache.hadoop.hbase.thrift2.generated.TNamespaceDescriptor> <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 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 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<? extends TServer> 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<? extends TServer> 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 <code>-option</code><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 < 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 > 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<String> serversThatCannotSpecifyBindIP() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span> List<String> l = new ArrayList<>();<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> && 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 && !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 &&<a name="line.375"></a>
-<span class="sourceLineNo">376</span> qop != QualityOfProtection.INTEGRITY &&<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 &&<a name="line.392"></a>
-<span class="sourceLineNo">393</span> conf.getBoolean(USE_HTTP_CONF_KEY, false) &&<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<Object>() {<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<>(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<>(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<String, String> 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) -> {<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 && !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<>(), 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<>(), 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<Runnable> 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<Integer, ResultScannerWrapper> 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 < 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-&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<>();<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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All 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"> </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"> </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> </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> </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"> </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 conf,
+ <a href="../../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> userProvider)</code> </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"> </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 processor,
+ org.apache.thrift.protocol.TProtocolFactory protocolFactory,
+ org.apache.hadoop.security.UserGroupInformation serviceUGI,
+ org.apache.hadoop.conf.Configuration conf,
+ <a href="../../../../../../org/apache/hadoop/hbase/thrift/HBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">HBaseServiceHandler</a> handler,
+ boolean securityEnabled,
+ boolean doAsEnabled)</code> </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"> </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 </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"> </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 conf,
+ <a href="../../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> userProvider)</code> </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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All 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 © 2007–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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All 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"> </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"> </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> </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"> </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 conf)</code> </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> 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All 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 © 2007–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> </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> </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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All 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 © 2007–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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All 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"> </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"> </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><<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>></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> </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"> </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 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 id)</code>
+<div class="block">Removes the scanner associated with the specified ID from the internal
+ id->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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All 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 © 2007–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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All 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"> </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"> </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> </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"> </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> hand)</code> </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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All 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 © 2007–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> </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> </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> </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> </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> </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> </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> </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> </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> metrics)</code> </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> metrics)</code> </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> metrics,
org.apache.hadoop.conf.Configuration conf)</code> </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 handler,
+ <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics,
+ org.apache.hadoop.conf.Configuration conf)</code> </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> metrics)</code> </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 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> handler,
<a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics,
org.apache.hadoop.conf.Configuration conf)</code> </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"> </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> </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"> </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 workerThreads,
- int maxCallQueueSize,
- <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics)</code> </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 workerThreads,
- int selectorThreads,
- int maxCallQueueSize,
- int readTimeout,
- int backlog,
- boolean nonblocking,
- boolean hsha,
- boolean selector,
- <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics,
- org.apache.thrift.protocol.TProtocolFactory protocolFactory,
- org.apache.thrift.TProcessor processor,
- org.apache.thrift.transport.TTransportFactory 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> inetSocketAddress)</code> </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 protocolFactory,
- org.apache.thrift.TProcessor processor,
- org.apache.thrift.transport.TTransportFactory transportFactory,
- int workerThreads,
- int 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> inetSocketAddress,
- <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics)</code> </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 protocolFactory,
- org.apache.thrift.TProcessor processor,
- org.apache.thrift.transport.TTransportFactory transportFactory,
- int workerThreads,
- int selectorThreads,
- int 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> inetSocketAddress,
- <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics)</code> </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 protocolFactory,
- org.apache.thrift.TProcessor processor,
- org.apache.thrift.transport.TTransportFactory transportFactory,
- int 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> inetSocketAddress,
- int backlog,
- int clientTimeout,
- <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics)</code> </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 handler,
- <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics)</code> </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"> </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 handler,
- <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift">ThriftMetrics</a> metrics)</code> </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"> </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"> </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 </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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../../allclasses-noframe.html">All 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"> </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"> </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> </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> </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> </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"> </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> hand)</code> </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 processor,
- org.apache.thrift.protocol.TProtocolFactory protocolFactory,
- org.apache.hadoop.security.UserGroupInformation serviceUGI,
- org.apache.hadoop.conf.Configuration conf,
- <a href="../../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a> hbaseHandler,
- boolean securityEnabled,
- boolean doAsEnabled)</code> </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 Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../../allclasses-noframe.html">All 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 © 2007–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<String, String> 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 > 0) {<a name="line.269"></a>
-<span class="sourceLineNo">270</span> // Could support the min & 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 > 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 > 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 > 0) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span> callQueue = new CallQueue(new LinkedBlockingQueue<>(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<>(), 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 > 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<>(), 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> && 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<Object>() {<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 >= 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<>(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 – 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 –
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 – 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 – 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 – 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 – 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 – 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 –
Apache HBase (TM) Metrics
@@ -469,7 +469,7 @@ export HBASE_REGIONSERVER_OPTS="$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 –
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 – 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 – 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 – 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 – 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 – 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 – 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<Integer, ResultScanner> scannerMap = new ConcurrentHashMap<>();<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<Integer, ResultScanner> scannerMap = new ConcurrentHashMap<>();<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) &&<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 && 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 <code>null</code> 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) &&<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 && 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 <code>null</code> 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<Boolean> existsAll(ByteBuffer table, List<TGet> 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<Boolean> result = new ArrayList<>(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<TResult> getMultiple(ByteBuffer table, List<TGet> 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<Boolean> existsAll(ByteBuffer table, List<TGet> 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<Boolean> result = new ArrayList<>(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<TResult> getMultiple(ByteBuffer table, List<TGet> 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<TPut> 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<TDelete> deleteMultiple(ByteBuffer table, List<TDelete> 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<TPut> 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<TDelete> deleteMultiple(ByteBuffer table, List<TDelete> 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<TResult> 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<TResult> 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<TResult> 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<TResult> 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<TResult> 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<TResult> 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<? extends TServer> 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<? extends TServer> 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 <code>-option</code><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 < 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 > 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<String> serversThatCannotSpecifyBindIP() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span> List<String> l = new ArrayList<>();<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> && 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 && !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 &&<a name="line.375"></a>
-<span class="sourceLineNo">376</span> qop != QualityOfProtection.INTEGRITY &&<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 &&<a name="line.392"></a>
-<span class="sourceLineNo">393</span> conf.getBoolean(USE_HTTP_CONF_KEY, false) &&<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<Object>() {<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<>(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<>(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<String, String> 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) -> {<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 && !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<>(), 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<>(), 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<Runnable> 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<Integer, ResultScannerWrapper> 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 < 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-&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<>();<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<Mutation> mutations = new ArrayList<>(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<String, String> 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<Object[]> getParameters() {<a name="line.88"></a>
-<span class="sourceLineNo">089</span> Collection<Object[]> parameters = new ArrayList<>();<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 && !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<String> args = new ArrayList<>();<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 < 100<a name="line.188"></a>
-<span class="sourceLineNo">189</span> && (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<Object[]> getParameters() {<a name="line.92"></a>
+<span class="sourceLineNo">093</span> Collection<Object[]> parameters = new ArrayList<>();<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 && !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<String> args = new ArrayList<>();<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<? extends TServer> 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 < 100<a name="line.197"></a>
+<span class="sourceLineNo">198</span> && (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<? extends TServer> 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<ByteBuffer, ByteBuffer>)</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<ByteBuffer, ByteBuffer>)</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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </dd>
@@ -9437,7 +9441,7 @@
<dd> </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> </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> </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> </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<ByteBuffer, 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#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<ByteBuffer, 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> </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> </dd>
@@ -10783,7 +10787,7 @@
<dd> </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> </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> </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> </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> </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> </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> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#cleanupAfterRollbackOneStep-org.apache.hadoop.hbase.procedure2.Procedure-">cleanupAfterRollbackOneStep(Procedure<TEnvironment>)</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> </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> </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> </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> </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> </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> </dd>
@@ -14387,13 +14389,15 @@
<dd> </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> </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> </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> </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> </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> </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> </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> </dd>
@@ -16699,11 +16703,9 @@
<dd> </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> </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> </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> </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> </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> </dd>
@@ -17214,9 +17216,7 @@
<dd> </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> </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> </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> </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> </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> </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> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.html#createExecutor-java.util.concurrent.BlockingQueue-int-int-">createExecutor(BlockingQueue<Runnable>, 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> </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<Runnable>, 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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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<ColumnDescriptor>)</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<ColumnDescriptor>)</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> </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<ByteBuffer>)</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> </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> </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> </dd>
@@ -23104,9 +23116,7 @@
<dd> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </dd>
@@ -24054,6 +24060,8 @@
<dd> </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> </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> </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> </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<ByteBuffer, 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#deleteAll-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.Map-">deleteAll(ByteBuffer, ByteBuffer, ByteBuffer, Map<ByteBuffer, 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> </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<ByteBuffer, 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#deleteAllRow-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.Map-">deleteAllRow(ByteBuffer, ByteBuffer, Map<ByteBuffer, 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> </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<ByteBuffer, 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#deleteAllRowTs-java.nio.ByteBuffer-java.nio.ByteBuffer-long-java.util.Map-">deleteAllRowTs(ByteBuffer, ByteBuffer, long, Map<ByteBuffer, 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> </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<ByteBuffer, 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#deleteAllTs-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-long-java.util.Map-">deleteAllTs(ByteBuffer, ByteBuffer, ByteBuffer, long, Map<ByteBuffer, 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> </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> </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> </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> </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> </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> </dd>
@@ -26467,7 +26475,7 @@
<dd> </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> </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> </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> </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> </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> </dd>
@@ -29008,7 +29012,7 @@
<dd> </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> </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> </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> </dd>
@@ -33598,9 +33602,11 @@
<dd> </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> </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> </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> </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> </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> </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> </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<ByteBuffer, 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#get-java.nio.ByteBuffer-java.nio.ByteBuffer-java.nio.ByteBuffer-java.util.Map-">get(ByteBuffer, ByteBuffer, ByteBuffer, Map<ByteBuffer, 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> </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<ByteBuffer, 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#get-java.nio.ByteBuffer-java.nio.ByteBuffer-byte:A-byte:A-java.util.Map-">get(ByteBuffer, ByteBuffer, byte[], byte[], Map<ByteBuffer, 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>
<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> </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> </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> </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> </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> </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> </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> </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> </dd>
@@ -36544,7 +36548,7 @@
<dd> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </dd>
@@ -45491,8 +45491,6 @@
<dd> </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> </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> </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> </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> </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> </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> </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> </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> </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<Integer, ResultScannerWrapper> 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 < 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-&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<>();<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<ByteBuffer> 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<ByteBuffer> list = new ArrayList<>(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<TRegionInfo> 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<HRegionLocation> regionLocations = locator.getAllRegionLocations();<a name="line.250"></a>
+<span class="sourceLineNo">251</span> List<TRegionInfo> results = new ArrayList<>(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<TCell> 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<ByteBuffer, ByteBuffer> 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<TCell> 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<ByteBuffer, ByteBuffer> 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<TCell> getVer(ByteBuffer tableName, ByteBuffer row, ByteBuffer column,<a name="line.324"></a>
+<span class="sourceLineNo">325</span> int numVersions, Map<ByteBuffer, ByteBuffer> 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<TCell> getVer(ByteBuffer tableName, ByteBuffer row, byte[] family,<a name="line.345"></a>
+<span class="sourceLineNo">346</span> byte[] qualifier, int numVersions, Map<ByteBuffer, ByteBuffer> 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<TCell> getVerTs(ByteBuffer tableName, ByteBuffer row, ByteBuffer column,<a name="line.370"></a>
+<span class="sourceLineNo">371</span> long timestamp, int numVersions, Map<ByteBuffer, ByteBuffer> 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<TCell> getVerTs(ByteBuffer tableName, ByteBuffer row, byte[] family,<a name="line.390"></a>
+<span class="sourceLineNo">391</span> byte[] qualifier, long timestamp, int numVersions, Map<ByteBuffer, ByteBuffer> 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<TRowResult> getRow(ByteBuffer tableName, ByteBuffer row,<a name="line.417"></a>
+<span class="sourceLineNo">418</span> Map<ByteBuffer, ByteBuffer> 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<TRowResult> 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<ByteBuffer> columns,<a name="line.427"></a>
+<span class="sourceLineNo">428</span> Map<ByteBuffer, ByteBuffer> 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<TRowResult> getRowTs(ByteBuffer tableName, ByteBuffer row,<a name="line.435"></a>
+<span class="sourceLineNo">436</span> long timestamp, Map<ByteBuffer, ByteBuffer> 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<TRowResult> getRowWithColumnsTs(<a name="line.442"></a>
+<span class="sourceLineNo">443</span> ByteBuffer tableName, ByteBuffer row, List<ByteBuffer> columns,<a name="line.443"></a>
+<span class="sourceLineNo">444</span> long timestamp, Map<ByteBuffer, ByteBuffer> 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<TRowResult> getRows(ByteBuffer tableName,<a name="line.478"></a>
+<span class="sourceLineNo">479</span> List<ByteBuffer> rows,<a name="line.479"></a>
+<span class="sourceLineNo">480</span> Map<ByteBuffer, ByteBuffer> 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<TRowResult> getRowsWithColumns(ByteBuffer tableName,<a name="line.488"></a>
+<span class="sourceLineNo">489</span> List<ByteBuffer> rows,<a name="line.489"></a>
+<span class="sourceLineNo">490</span> List<ByteBuffer> columns,<a name="line.490"></a>
+<span class="sourceLineNo">491</span> Map<ByteBuffer, ByteBuffer> 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<TRowResult> getRowsTs(ByteBuffer tableName,<a name="line.498"></a>
+<span class="sourceLineNo">499</span> List<ByteBuffer> rows,<a name="line.499"></a>
+<span class="sourceLineNo">500</span> long timestamp,<a name="line.500"></a>
+<span class="sourceLineNo">501</span> Map<ByteBuffer, ByteBuffer> 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<TRowResult> getRowsWithColumnsTs(ByteBuffer tableName,<a name="line.507"></a>
+<span class="sourceLineNo">508</span> List<ByteBuffer> rows,<a name="line.508"></a>
+<span class="sourceLineNo">509</span> List<ByteBuffer> columns, long timestamp,<a name="line.509"></a>
+<span class="sourceLineNo">510</span> Map<ByteBuffer, ByteBuffer> 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<Get> gets = new ArrayList<>(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<ByteBuffer, ByteBuffer> 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<ByteBuffer, ByteBuffer> 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<ByteBuffer, ByteBuffer> 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<ByteBuffer, ByteBuffer> 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<ColumnDescriptor> 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<Mutation> mutations, Map<ByteBuffer, ByteBuffer> 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<Mutation> mutations, long timestamp,<a name="line.659"></a>
+<span class="sourceLineNo">660</span> Map<ByteBuffer, ByteBuffer> 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<BatchMutation> rowBatches,<a name="line.721"></a>
+<span class="sourceLineNo">722</span> Map<ByteBuffer, ByteBuffer> 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<BatchMutation> rowBatches, long timestamp,<a name="line.729"></a>
+<span class="sourceLineNo">730</span> Map<ByteBuffer, ByteBuffer> 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<Put> puts = new ArrayList<>();<a name="line.732"></a>
+<span class="sourceLineNo">733</span> List<Delete> deletes = new ArrayList<>();<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<Mutation> 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<TRowResult> 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<>();<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<TRowResult> 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<ByteBuffer, ByteBuffer> 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() && !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<FullyQualifiedRow, Long> countersMap =<a name="line.180"></a>
-<span class="sourceLineNo">181</span> new ConcurrentHashMap<>(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<Runnable> queue = new LinkedBlockingQueue<>();<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<TIncrement> 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<FullyQualifiedRow, Long> countersMap =<a name="line.179"></a>
+<span class="sourceLineNo">180</span> new ConcurrentHashMap<>(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<Runnable> queue = new LinkedBlockingQueue<>();<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<TIncrement> 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<FullyQualifiedRow, Long> countersMap =<a name="line.180"></a>
-<span class="sourceLineNo">181</span> new ConcurrentHashMap<>(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<Runnable> queue = new LinkedBlockingQueue<>();<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<TIncrement> 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<FullyQualifiedRow, Long> countersMap =<a name="line.179"></a>
+<span class="sourceLineNo">180</span> new ConcurrentHashMap<>(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<Runnable> queue = new LinkedBlockingQueue<>();<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<TIncrement> 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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#methods.inherited.from.class.java.lang.Object">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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"> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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"> </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> </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 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 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 <a href="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 <a href="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 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 <a href="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 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 <a href="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 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 <a href="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 <a href="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 <a href="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 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 <a href="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 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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 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 <a href="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 <a href="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 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 <a href="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 <a href="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 <a href="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 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 <a href="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 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 <a href="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 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 <a href="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 <a href="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 <a href="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 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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 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 <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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#methods.inherited.from.class.java.lang.Object">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li>Method</li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!-- -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright © 2007–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 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 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 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 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 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 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<E> coprocEnvironments =<a name="line.81"></a>
-<span class="sourceLineNo">082</span> new SortedList<>(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<String> coprocessorNames =<a name="line.101"></a>
-<span class="sourceLineNo">102</span> Collections.synchronizedSet(new HashSet<String>());<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span> public static Set<String> 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<String> getCoprocessors() {<a name="line.117"></a>
-<span class="sourceLineNo">118</span> Set<String> returnValue = new TreeSet<>();<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<?> 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<?> 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<? extends C> 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<?> 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<C>) 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<?> 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<C>) 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 <T extends C> T findCoprocessor(Class<T> 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<E> coprocEnvironments =<a name="line.84"></a>
+<span class="sourceLineNo">085</span> new SortedList<>(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<String> coprocessorNames =<a name="line.104"></a>
+<span class="sourceLineNo">105</span> Collections.synchronizedSet(new HashSet<String>());<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span> public static Set<String> 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<String> getCoprocessors() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span> Set<String> returnValue = new TreeSet<>();<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<?> 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<?> 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 && 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<? extends C> 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<?> 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<C>) 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<?> 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<C>) 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 <T extends C> List<T> findCoprocessors(Class<T> cls) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span> ArrayList<T> ret = new ArrayList<>();<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 <T extends C> T findCoprocessor(Class<T> 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<ClassLoader> getExternalClassLoaders() {<a name="line.357"></a>
-<span class="sourceLineNo">358</span> Set<ClassLoader> externalClassLoaders = new HashSet<>();<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<CoprocessorEnvironment> {<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() < 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() > 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() < 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() > 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<Class<? extends Coprocessor>> legacyWarning =<a name="line.464"></a>
-<span class="sourceLineNo">465</span> new ConcurrentSkipListSet<>(<a name="line.465"></a>
-<span class="sourceLineNo">466</span> new Comparator<Class<? extends Coprocessor>>() {<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<? extends Coprocessor> c1, Class<? extends Coprocessor> 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<C, O> extends Function<C, Optional<O>> {}<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 <T extends C> List<T> findCoprocessors(Class<T> cls) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span> ArrayList<T> ret = new ArrayList<>();<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<ClassLoader> getExternalClassLoaders() {<a name="line.368"></a>
+<span class="sourceLineNo">369</span> Set<ClassLoader> externalClassLoaders = new HashSet<>();<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<CoprocessorEnvironment> {<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() < 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() > 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() < 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() > 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<Class<? extends Coprocessor>> legacyWarning =<a name="line.475"></a>
+<span class="sourceLineNo">476</span> new ConcurrentSkipListSet<>(<a name="line.476"></a>
+<span class="sourceLineNo">477</span> new Comparator<Class<? extends Coprocessor>>() {<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<? extends Coprocessor> c1, Class<? extends Coprocessor> 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<O> extends ObserverContextImpl<E> {<a name="line.487"></a>
-<span class="sourceLineNo">488</span> ObserverGetter<C, O> observerGetter;<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span> ObserverOperation(ObserverGetter<C, O> 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<C, O> 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<C, O> extends Function<C, Optional<O>> {}<a name="line.496"></a>
<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span> ObserverOperation(ObserverGetter<C, O> 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<C, O> 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<O> extends ObserverOperation<O> {<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<C, O> 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<C, O> 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<C, O> 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<O> 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<O, R> extends ObserverOperation<O> {<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<? extends TServer> 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<? extends TServer> 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 <code>-option</code><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 < 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 > 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<String> serversThatCannotSpecifyBindIP() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span> List<String> l = new ArrayList<>();<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> && 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 && !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 &&<a name="line.375"></a>
-<span class="sourceLineNo">376</span> qop != QualityOfProtection.INTEGRITY &&<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 &&<a name="line.392"></a>
-<span class="sourceLineNo">393</span> conf.getBoolean(USE_HTTP_CONF_KEY, false) &&<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<Object>() {<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<>(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<>(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<String, String> 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) -> {<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 && !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<>(), 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<>(), 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<Runnable> 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<Integer, ResultScannerWrapper> 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 < 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-&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<>();<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<Integer, ResultScanner> scannerMap = new ConcurrentHashMap<>();<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) &&<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 && 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 <code>null</code> 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<Boolean> existsAll(ByteBuffer table, List<TGet> 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<Boolean> result = new ArrayList<>(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<TResult> getMultiple(ByteBuffer table, List<TGet> 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<TPut> 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<TDelete> deleteMultiple(ByteBuffer table, List<TDelete> 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<TResult> 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<TResult> 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<TResult> 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<THRegionLocation> 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<TTableDescriptor> getTableDescriptors(List<TTableName> 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<TableName> tableNames = ThriftUtilities.tableNamesFromThrift(tables);<a name="line.608"></a>
-<span class="sourceLineNo">609</span> List<TableDescriptor> 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<TTableDescriptor> 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<TableDescriptor> 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<TTableDescriptor> 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<TableDescriptor> 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<TTableName> 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<TTableName> 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<ByteBuffer> 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<ByteBuffer> 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<TNamespaceDescriptor> 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>